GAN生成对抗网络介绍

这篇具有很好参考价值的文章主要介绍了GAN生成对抗网络介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GAN简介

GAN 全称是Generative Adversarial Networks,即生成对抗网络
“生成”表示它是一个生成模型,而“对抗”代表它的训练是处于一种对抗博弈状态中的。
一个可以自己创造数据的网络!

判别模型与生成模型

判别模型(Discriminative Model)

主要目标是对给定输入数据直接进行建模,以便预测输出的标签或类别。
判别模型学习得到的是条件概率分布 p ( y ∣ x ) p(y|x) p(yx)给定x后使得正确标签y的概率最大
常见的判别模型包括逻辑回归、支持向量机(SVM)、神经网络等。

当输入一张训练集图片x时,判别模型输出分类标签y。模型学习的是输入图片x与输出的类别标签的映射关系。即学习的目的是在输入图片x的条件下,尽量增大模型输出分类标签y的概率。

生成模型(Generative Model)

主要目标是学习输入数据的分布,以便能够生成与输入数据类似的新数据。
生成模型学习得到的是联合概率分布 p ( x , y ) p(x,y) p(x,y),即特征x和标签y共同出现的概率;根据贝叶斯公式: p ( x , y ) = p ( y ∣ x ) ∗ p ( x ) p(x,y) = p(y|x) * p(x) p(x,y)=p(yx)p(x),它得学习p(x);关心数据和如何产生,如何分布,最终学会拟合训练数据的分布
典型的生成模型有朴素贝叶斯、隐马尔可夫模型(HMM)、生成对抗网络(GAN)等。

没有约束条件的生成模型是无监督模型,将给定的简单先验分布π(z)(通常是高斯分布),映射为训练集图片的像素概率分布p(x),即输出一张服从p(x)分布的具有训练集特征的图片。模型学习的是先验分布π(z)与训练集像素概率分布p(x)的映射关系。

山羊绵羊的例子
要确定一只羊是山羊还是绵羊
判别模型:用判别式模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。

生成模型:则是根据山羊的特征首先学习出一个山羊的模型,根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。

GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络

从图中可以看出,判别模型就是在不同的类别中划分一条界限(决策边界),
而生成模型就是用不同的区域(概率分布函数)把不同类型的数据"围住" 。

为什么需要GAN?

GAN与前面CNN、RNN的最主要区别在训练方式上——无监督学习。
一句话来概括 GAN 的设计动机就是——自动化
1.从人工提取特征——到自动提取特征

  • 深度学习最特别最厉害的地方就是能够自己学习特征提取。
  • 机器的超强算力可以解决很多人工无法解决的问题。自动化后,学习能力更强,适应性也更强。
    2.从人工判断生成结果的好坏——到自动判断和优化
  • 监督学习中,训练集需要大量的人工标注数据,这个过程是成本很高且效率很低的。
  • 而人工判断生成结果的好坏也是如此,有成本高和效率低的问题。
  • 而 GAN 能自动完成这个过程,且不断的优化,这是一种效率非常高,且成本很低的方式。

监督学习与无监督学习

监督学习:在有监督学习中,模型通过输入数据和相应的标签进行训练。训练数据包含了输入-输出对,模型的目标是学习将输入映射到正确的输出。需要人工标注数据,人类去告诉算法该做什么和不该做什么,限制了算法的潜力。
无监督学习:在无监督学习中,模型接收的训练数据没有标签。模型的目标通常是从无标签的数据中学习并发现数据的内在结构和潜在模式,不依赖标签数据进行学习。


GAN的基本结构

GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络

GAN的基本结构

生成器 + 判别器 = GAN


我们现在拥有大量的手写数字的数据集,我们希望通过GAN生成一些能够以假乱真的手写字图片。
主要由如下两个部分组成:
定义一个模型来作为生成器(上图中蓝色部分Generator),能够输入一个向量,输出手写数字大小的像素图像。
定义一个分类器来作为判别器(上图中红色部分Discriminator)用来判别图片是真的还是假的(或者说是来自数据集中的还是生成器中生成的),输入为手写图片,输出为判别图片的标签。

生成器的目标是生成尽可能真实的数据,以欺骗判别器,
判别器的目标是尽可能准确地区分出真实数据和生成器生成的假数据。

举例——GAN在生成手写数字识别数据上的应用

GAN性能的提升从生成器G和判别器D进行左右互搏、交替完善的过程得到的。
所以其生成G网络和判别D网络的能力应该设计得相近,复杂度也差不多。

使用全连接神经网络实现GAN
生成器G中首先是输入一个 100 × 1 100 × 1 100×1 的随机噪音Z ,然后通过三个隐藏层,最终在输出层输出一个尺寸为 784 × 1 784 × 1 784×1 的假样本。
而在判别器D中,首先是输入一个 784 × 1 784 × 1 784×1 的真实样本 x 或 生成的假样本 G(z),然后通过三个隐藏层,最终在输出层输出一个 1 × 1 1 × 1 1×1 的值,也就是输出一个数值,这个值就相当于判别器给真实样本 x 或生成的假样本 G(z)的分值。
GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络

使用卷积神经网络实现GAN——DCGAN(深度卷积生成对抗网络)
这个项目中的生成器,采用了两个全连接层接两组上采样和转置卷积层,将输入的噪声Z逐渐转化为 1 × 28 × 28 1×28×28 1×28×28的单通道图片输出。
GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络

判别器的结构正好相反,先通过两组卷积和池化层将输入的图片转化为越来越小的特征图,再经过两层全连接层,输出图片是真是假的二分类结果。
GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络


GAN的基本思想

GAN的基本思想是训练两个互相对抗的神经网络,一个是生成器(Generator)用来生成伪造的数据,另一个是判别器(Discriminator)用来鉴别数据。
它们被设计为竞争对手。判别器经过训练后,可以将训练集中的数据分类为真实数据,将生成器产生的数据分类为伪造数据;生成器在训练后,能创建可以以假乱真的数据来欺骗判别器。最终要得到的是 效果提升到很高很好的生成模型。通过学习和对抗,最终达到一种纳什均衡的状态
GAN的核心思想是通过学习真实训练数据,生成“以假乱真”的数据。

Tips: 之所以要训练k次(k为大于等于1的整数)判别器,再训练生成器,是因为要先拥有一个好的判别器,使得能够较好地区分出真实样本和生成样本之后,才好更为准确地对生成器进行更新

纳什均衡,它是指博弈中这样的局面,对于每个参与者来说,只要其他人不改变策略,他就无法改善自己的状况。对应的,对于GAN,情况就是生成器 G 恢复了训练数据的分布(造出了和真实数据一模一样的样本),判别器再也判别不出来结果,准确率为 50%,约等于乱猜。这时双方网络都得到利益最大化,不再改变自己的策略,也就是不再更新自己的权重。)

GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络

上图中: 黑色点线为训练集数据分布曲线 蓝色点线为判别器输出的分布曲线 绿色实线为生成器输出的分布曲线
z表示噪声,展示的是生成器映射前的简单概率分布(一般是高斯分布)的范围和密度 x展示的是z通过生成器映射后学到的训练集的概率分布的范围和密度

(a) 判别器与生成器均未训练呈随机分布
(b) 判别器经过训练,输出的分布在靠近训练集“真”数据分布的区间趋近于1(真),在靠近生成器生成的“假”数据分布的区间趋近于0(假)
© 生成器根据判别器输出的(真假)分布,更新参数,使自己的输出分布趋近于训练集“真”数据的分布。
经过**(b)©(b)©…**步骤的循环交替。判别器的输出分布随着生成器输出的分布与训练集分布的接近而更加平缓;生成器输出的分布则在判别器输出分布的指引下逐渐趋近于训练集“真”数据的分布。
(d) 训练完成时,生成器输出的分布完美拟合了训练集数据的分布,判别器的输出由于生成器的完美拟合而无法判别生成器输出的真伪而呈一条取值约为0.5(真假之间)的直线。


GAN的训练

训练判别器

  • 判别器对真实数据和来自生成器生成的假数据进行分类
  • 判别器的损失函数将惩罚由判别器产生的误判,比如把真实实例判定成假,或者把假的实例判定为真
  • 判别器通过对来自于判别器网络损失函数计算的损失进行反向传播,使用误差反向传播机制来计算损失和更新权重参数
    在判别器训练时,生成器不会训练,即在生成器为判别器生成示例数据时,生成器的权重保持恒定,pytorch中通过使用detach()不计算生成器的梯度

训练生成器——使用判别器训练生成器

  • 随机噪音采样作为输入
  • 生成器从采样的随机噪音采样里生成输出
  • 让判断器判断上述输出是“真”或“假”,以此作为生成器的输出
  • 从判别器的分类输出计算误差损失
  • 穿过判别器和生成器的反向传播,从而获得梯度
  • 使用梯度来更新生成器的权重

交替训练
生成器和判别器有不同的训练流程,那么如何才能作为一个整体来训练GAN呢?GAN的训练有交替阶段,

  • 判别器训练一个或者多个迭代。
  • 生成器训练一个或者多个迭代。
  • 不断重复1和2步来训练生成器和判别器。

在判别器训练的阶段,保持生成器不变。因为判别器训练会尝试从仿冒数据里分辨出真实数据,判别器必须学习如何识别生成器的缺陷。这就是经过完整训练的生成器和只能生成随机输出的未训练生成器的不同之处。
类似地,在生成器训练的阶段,保持判别器不变。否则,生成器像尝试击中移动目标一样,可能永远无法收敛。

收敛
随着训练进行,生成器不断改善,相对地,由于不能再轻易地识别出真实数据和假冒数据的,判别器的表现越来越差。当生成器生成数据具有和真实数据相同的分布时,判别器的正确率只有50%。基本上和抛一枚硬币来预测正反一样的概率一样。

GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络
GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络
GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络
GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络
GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络

三步训练循环
第1步——用实际数据集训练判别器;向判别器展示一个真实的样本数据,告诉它该样本的分类应该是1.0【正面样本】
第2步——用生成数据集训练判别器;向判别器显示一个生成器的输出,告诉它该样本的分类应该是0.0【负面样本】
第3步——训练生成器;向判别器显示一个生成器的输出,告诉生成器结果应该是1.0

怎样进行权重更新?
BP误差反向传播算法+梯度下降法,调整参数

GAN生成对抗网络介绍,机器学习,生成对抗网络,人工智能,神经网络文章来源地址https://www.toymoban.com/news/detail-799386.html

到了这里,关于GAN生成对抗网络介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GAN!生成对抗网络GAN全维度介绍与实战

    本文为生成对抗网络GAN的研究者和实践者提供全面、深入和实用的指导。通过本文的理论解释和实际操作指南,读者能够掌握GAN的核心概念,理解其工作原理,学会设计和训练自己的GAN模型,并能够对结果进行有效的分析和评估。 作者 TechLead,拥有10+年互联网服务架构、AI产

    2024年02月12日
    浏览(35)
  • 深度学习生成对抗网络(GAN)

    生成对抗网络(Generative Adversarial Networks)是一种无监督深度学习模型,用来通过计算机生成数据,由Ian J. Goodfellow等人于2014年提出。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。生成对抗网络被认为是当

    2024年02月07日
    浏览(42)
  • 深度学习基础——GAN生成对抗网络

            生成对抗网络GAN(Generative adversarial networks)是Goodfellow等在2014年提出的一种生成式模型。GAN在结构上受博弈论中的二元零和博弈(即二元的利益之和为零,一方的所得正是另一方的所失)的启发,系统由一个生成器和一个判别器构成。         生成器和判别器均可以

    2024年02月22日
    浏览(48)
  • 深度学习(4)---生成式对抗网络(GAN)

     1. 生成式对抗网络(Generative Adversarial Network,GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。它启发自博弈论中的二人零和博弈(two-player game),两位博弈方分别由生成模型(generative model)和判别模型(discriminative model)充当。  2. 判别模

    2024年02月08日
    浏览(44)
  • 深度学习进阶篇[9]:对抗生成网络GANs综述、代表变体模型、训练策略、GAN在计算机视觉应用和常见数据集介绍,以及前沿问题解决

    【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、

    2024年02月08日
    浏览(80)
  • 【Pytorch深度学习实战】(10)生成对抗网络(GAN)

     🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】 ​  🖍foreword ✔说

    2023年04月08日
    浏览(41)
  • 适合小白学习的GAN(生成对抗网络)算法超详细解读

    “GANs are \\\'the coolest idea in deep learning in the last 20 years.\\\' ” --Yann LeCunn, Facebook’s AI chief   今天我们就来认识一下这个传说中被誉为过去20年来深度学习中最酷的想法——GAN。  GAN之父的主页: http://www.iangoodfellow.com/  GAN论文地址: https://arxiv.org/pdf/1406.2661.pdf 目录 前言  📢一、

    2024年02月02日
    浏览(37)
  • 深度学习7:生成对抗网络 – Generative Adversarial Networks | GAN

    生成对抗网络 – GAN 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频。我们手机里的照片处理软件中就会使用到它。 目录 生成对抗网络 GAN 的基本原理 大白话版本 非大白话版本 第一阶段:固定「判别器D」,训练「生成器G」 第二阶段:固定

    2024年02月11日
    浏览(41)
  • 学习笔记:Pytorch利用MNIST数据集训练生成对抗网络(GAN)

    2023.8.27        在进行深度学习的进阶的时候,我发了生成对抗网络是一个很神奇的东西,为什么它可以“将一堆随机噪声经过生成器变成一张图片”,特此记录一下学习心得。         2014年,还在蒙特利尔读博士的Ian Goodfellow发表了论 文《Generative Adversarial Networks》(网址

    2024年02月10日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包