生成对抗网络(GAN)

GAN分为两部分,生成器和鉴别器

生成器

接受要用于伪造的数据(数据可以是准备好的,用于伪造成真实数据风格的素材,也可以像图中一样,是杂乱随机的数据点)

理想情况下,它能够输出基于原始信号的,具有真实信号风格的数据

鉴别器

分别从真实数据集和由生成器伪造的假数据集获取输入,经过网络模型学习,最终判断数据的真假

对抗

生成器尝试生成接近真实的数据集,以欺骗鉴别器,令鉴别器不能分辨出生成数据集的真假

鉴别器尝试分辨输入的数据,哪个是真实数据,哪个是生成的数据

学习

生成器和鉴别器交叉学习,其中一方学习时,另一方参数不变

训练刚开始时,生成器和鉴别器都是初始状态,不能够顺利完成任务

这时,需要先训练鉴别器,因为生成器的训练依赖于鉴别器的生成,而当生成器性能不佳时,鉴别器能更容易地抓取真实数据的特征,轻易判断出数据真假

等到鉴别器能比较稳定地识别数据真假性之后,再训练生成器,二者交替训练

直到最后,鉴别器识别出数据真假的概率稳定在50%,也就是达到了纳什均衡(不是每次博弈对抗,都可以达到纳什均衡,这就涉及到对抗收敛稳定性问题)

梯度计算公式

鉴别器公式

左乘积意思是,数据为真时,鉴别器判断数据为真的概率;右乘积意思时,数据为假时,鉴别器判断数据为假的概率

鉴别器需要想办法令该公式的值最大化,因此在算出梯度后,沿着梯度方向前进

计算梯度时,把此公式对D求导,再乘以D对相应参数的导数,可得梯度

生成器公式

在训练生成器时,不需要让鉴别器判断真实的数据这一步,因此公式只有一项,就是数据为假,鉴别器判断数据为假的概率

生成器需要令公式的值最小化,沿着梯度负方向前进(也可以把标签取反,把假数据的标签改为1,统一训练过程,沿梯度方向前进,便于操作)

在计算梯度时,把模型看成一个大型的网络(生成器和鉴别器合在一起),因为最后一层是在鉴别器里头,因此计算总梯度时,需要鉴别器的参数来计算出总代价函数对于生成器输出层的导数,然后再计算生成器的参数

优势

DL模型训练通常需要大量的已标注数据,这给数据采集带来极大的麻烦

GAN的模型训练不需要已标注数据,对于真实数据和生成数据,它会自动硬标注为真和假(或1和0),计算梯度时就按这个标签来学习

GAN生成数据的能力,是相当有使用价值的,这一定程度上解决了模型学习时,数据量稀少的问题

并且GAN的鉴别能力,经测试,与一般的DL网络性能并无太大差距,甚至优于一些基本的DL网络模型

改进

1.去除了卷积网络的池化层,鉴别器改用跨步卷积,生成器用部分跨步卷积。这样改进允许网络学习自己的空间采样方法

2.去除了卷积网络深层链接的全连接层,简化了卷积神经网络结构

3.采用了批标准化技术 ,在每层交互数据之前,都进行一次批标准化,有助于网络学习的快速收敛

可视化

将生成器每次的输出保存下来,可以观察到生成器逐步学习的过程

从原始的带大量马赛克的图片,变成一个房间图片,然后在不同房间图片间变换

去除特征

在生成图片中,有时我们需要去除某种特征,例如雨天,雾天时,环境遮挡住了风景和人物,我们需要去除雨和雾对图片的影响

例子:去除生成图片的窗户

添加若干张图片,这些图片被人工地画上了窗户

分别将原始数据和人工数据输入到生成器中,观察生成器的最后两层的卷积核 (卷积网络训练到深层时,卷积核会捕捉具有识别度较高的特征),若一个卷积核在人工数据中激活,在原始数据中沉寂,则删除该卷积核,再生成图片

上图为原图,下图为生成图,可以看到,生成的图片大多都没有了窗户,原本的窗户都变成了门或者柜子等其他房间特征

理论上,对于这种特征加减还可以任意组合,例:

未来工作方向

网络训练的稳定性和生成图片的高分辨率

基于深度卷积的生成对抗网络相关推荐

  1. 深度学习之生成对抗网络(4)GAN变种

    深度学习之生成对抗网络(4)GAN变种 1. DCGAN 2. InfoGAN 3. CycleGAN 4. WGAN 5. Equal GAN 6. Self-Attention GAN 7. Bi ...

  2. 深度学习之生成对抗网络(7)WGAN原理

    深度学习之生成对抗网络(7)WGAN原理 1. JS散度的缺陷 2. EM距离 3. WGAN-GP  WGAN算法从理论层面分析了GAN训练不稳定的原因,并提出了有效的解决方法.那么是什么原因导致了 ...

  3. 深度学习之生成对抗网络(2)GAN原理

    深度学习之生成对抗网络(2)GAN原理 1. 网络结构 生成网络G(z)\text{G}(\boldsymbol z)G(z) 判别网络D(x)\text{D}(\boldsymbol x)D(x) ...

  4. 【步态识别】MvGGAN 基于多视角步态生成对抗网络 算法学习《Multi-View Gait Image Generation for Cross-View Gait Recognition》

    目录 1. 论文&代码源 2. 论文亮点 3. 多视角的生成对抗网络 3.1 网络生成历程 3.2 网络结构 3.3 损失函数 3.3.1 判别器损失(Discriminator Loss) ...

  5. 深度学习之生成对抗网络(8)WGAN-GP实战

    深度学习之生成对抗网络(8)WGAN-GP实战 代码修改 完整代码 WGAN WGAN_train 代码修改  WGAN-GP模型可以在原来GAN代码实现的基础上仅做少量修改.WGAN-GP模型的判别 ...

  6. 深度学习之生成对抗网络(6)GAN训练难题

    深度学习之生成对抗网络(6)GAN训练难题 1. 超参数敏感 2. 模式崩塌  尽管从理论层面分析了GAN网络能够学习到数据的真实分布,但是在工程实现中,常常出现GAN网络训练困难的问题,主要体现在G ...

  7. 深度学习之生成对抗网络(1)博弈学习实例

    深度学习之生成对抗网络(1)博弈学习实例 博弈学习实例  在 生成对抗网络(Generative Adversarial Network,简称GAN)发明之前,变分自编码器被认为是理论完备,实现简单, ...

  8. 【深度学习】生成对抗网络(GAN)的tensorflow实现

    [深度学习]生成对抗网络(GAN)的tensorflow实现 一.GAN原理 二.GAN的应用 三.GAN的tensorflow实现 参考资料 GAN( Generative Adversarial ...

  9. 深度学习之生成对抗网络(5)纳什均衡

    深度学习之生成对抗网络(5)纳什均衡 1. 判别器状态 2. 生成器状态 3. 纳什均衡点  现在我们从理论层面进行分析,通过博弈学习的训练方式,生成器G和判别器D分别会达到什么平衡状态.具体地,我们 ...

最新文章

  1. BZOJ4893: 项链分赃 BZOJ4895: 项链分赃(增强版)
  2. VC中实现GCC的2个比较常用的位运算函数
  3. 关于报工和生产订单的一些状态解释
  4. Swift-binary search tree
  5. Involved Parties Object ID generation logic
  6. react --- 生命周期 给子组件传递数据
  7. PHP个人博客项目------切切歆语博客
  8. PHP 函数 - 返回值
  9. 同一网段计算机无法共享打印机,Win7同一个局域网内共享打印机不成功的修复方法...
  10. Visual C++实现定制标题栏
  11. PHP trim()函数详解
  12. linux内存管理(二)-内存数据结构分析
  13. MYSQL—— 启动MYSQL 57 报错“The service MYSQL57 failed the most recent........等”的问题解决方式!...
  14. [C#] LINQ之GroupBy
  15. http报文格式详解!
  16. Excel 数据透视表教程大全之 03 刷新数据、添加多个字段作为值字段、值显示为总数的百分
  17. led时间代码html,LED旋转时钟制作(有源代码)
  18. 源码主干分支开发四大模式
  19. uniapp 自定义导航栏 动态显示或隐藏返回图标 以及buttons
  20. python函数初体验

热门文章

  1. QQ登陆出现空白页面 解决办法
  2. 滴鸡精泰斗林明昌倾情加盟 金元裕开启健康新时代
  3. Ansible单剧本和多剧本练习
  4. 基于关联矩阵的聚类融合算法——Voting-K-Means算法
  5. 用Java程序生成文本的捷径
  6. 【SQL开发实战技巧】系列(二十一):数据仓库中时间类型操作(进阶)识别重叠的日期范围,按指定10分钟时间间隔汇总数据
  7. 传智教育自主研发的8本教材入选“十三五”职业教育国家规划教材书目
  8. 列举计算机组装所需的各个硬件,计算机组装与维修期中考试.doc
  9. JDBC及Druid
  10. tensorboard无法访问:被拒绝访问的解决方法,无法访问此网站,locallost拒绝了我们的请求