生成对抗网络的开山之作—GAN

1、有监督到无监督

 ​ 图上方表示监督学习,我们将标记好的数据对传入网络,在标签的作用下监督训练。而很多时候我们提供不了训练数据,这时候神经网络就应该学会自己给数据打标签,自己监督自己训练。图下方就是用对抗网络实现的无监督网络,只需要提供随机变量和真实数据,就能让生成器产生我们想要的图片。
​ ​ 从博弈论的角度去理解,生成器G尽可能的产生逼近真实图片分布的假图片,而判别器D就尽可能的区分图片是来自真实数据还是生成器生成而来,这样二者相互竞争对抗,不断地用对方的梯度去优化自身,知道达到一种理想的平衡状态——纳什均衡。
​ ​ 我们也可以从双层优化的去理解GAN。我们还是看向上图,直观上看,这种有监督到无监督的跨越,可以被认为是由一个神经网络D取代了有监督网络中的静态损失函数(蓝色部分),而经过这种替换,原来对单个网络的优化,就变成了对两个神经网络的双向优化。

2、GAN原理

1)训练过程

黑:真实的数据分布 蓝:判别器判断图像来自真实数据分布的概率 绿:生成的数据分布 z:噪声 x:噪声z通过生成器学习的分布映射 x = G(z)上图是GAN的训练过程。

​ ​ a) 为初始状态,生成器生成的分布和真实分布有较大的差异,判别器不稳定。

​ ​ b)固定生成器,训练判别器,蓝色的判别器判别能力提高,绿色的生成器生成能力不变。

​ ​ c) 固定判别器,训练生成器,绿色的生成器生成的分布逐渐趋近黑色的真实分布,以迷惑蓝色的判别器。

​ ​ d) 多次迭代训练,相互对抗,达到那什均衡,判别概率1/2,生成分布拟合于真实分布

2)公式解读:
​ ​ GAN的训练过程可以看做是一个求解极大极小值的问题,从公式上看,V(D,G)相当于真实样本和生成样本的差异程度。


​ ​ 1) 找一个最优的判别器D,能够更好地判别生成的数据分布和真实数据分布的差异。好的判别器,当输入为真实数据时判定为1,即D(x) = 1 ,对假数据判定为0,即D(G(z))=0,所以整体上就是最大化D(x)和1 - D(G(z)),也就是就是固定G,最大化V(D,G)。
​ ​ 2) 找一个最优的生成器,使其生成的数据特征分布与真实数据分布更接近。此时,D(G(z))应该等于1,即最大化D(G(z)),最小化1-D(G(z))。整体上就是最小化V(D,G)
​ ​ 3)通过不断地min/max博弈过程,理想情况下生成分布会逼近于真实分布,判别器输出也是1/2,

3、GAN缺点

​ ​ 既然时开山之作,必然存在一些问题:

​ ​ 1)训练困难,很难达到那什均衡。

​ ​ 我们先优化判别器,上式是理论上能到的最小目标值。在近似最优判别器下,最小化生成器的loss等价于最小化Pr和Pg之间的JS散度。当生出分布Pg和真实分布Pr没有重叠或者重叠部分可以忽略时(实际上,当Pr和Pg的支撑集是高维空间中的低维流形时,重叠部分测度为0的概率为1,即二者重叠的概率很低),JS散度是常数log2,最终导致生成器的梯度为0,梯度消失。

​ ​ 2)模式崩溃(model collapse)。

​ ​ 为了避免判别器过好导致梯度消失的问题,重新定义了损失函数,又出现了新的问题:生成器宁可生成一些重复但很安全的样本,也不愿意生成多样性样本,这就是模式崩溃,生成得样本缺乏多样性。
​ ​ 3)由于是利用梯度更新参数,无法用于离散数据(文本)。

GAN(1)-生成对抗网络的开山之作相关推荐

  1. DL之GAN:生成对抗网络GAN的简介、应用、经典案例之详细攻略

    DL之GAN:生成对抗网络GAN的简介.应用.经典案例之详细攻略 目录 生成对抗网络GAN的简介 1.生成对抗网络的重要进展 1.1.1986年的RBM→2006年的DBN

  2. 什么是GAN(生成对抗网络)?

    GAN是一种深度学习模型,全称为生成对抗网络(Generative Adversarial Networks).它由两个神经网络组成:一个生成器网络和一个判别器网络. 什么是GAN(生成对抗网络)? ...

  3. GAN(生成对抗网络)在合成时间序列数据中的应用(第二部分——利用GAN生成时间序列数据)

    GAN(生成对抗网络)在合成时间序列数据中的应用(第二部分–TimeGAN 与合成金融输入) (本文基本是对Jasen 的<Machine Learning for Algorithmic Tr ...

  4. GAN(生成对抗网络) and CGAN(条件生成对抗网络)

    前言 GAN(生成对抗网络)是2014年由Goodfellow大佬提出的一种深度生成模型,适用于无监督学习.监督学习.但是GAN进行生成时是不可控的,所以后来又有人提出可控的CGAN(条件生成对抗网络 ...

  5. 【万物皆可 GAN】生成对抗网络生成手写数字 Part 1

    [万物皆可 GAN]生成对抗网络生成手写数字 Part 1 概述 GAN 网络结构 GAN 训练流程 模型详解 生成器 判别器 概述 GAN (Generative Adversarial Netwo ...

  6. pytorch实现GAN(生成对抗网络)生成二次元头像(附代码)

    目录 GAN基本概念 GAN算法流程 代码实现与讲解 1.准备数据集 代码实现 定义鉴别器 定义生成器 训练 补充 附完整代码 参考链接及书目 GAN基本概念 GAN, 全称Generative Ad ...

  7. GAN(生成对抗网络) 解释

    GAN (生成对抗网络)是近几年深度学习中一个比较热门的研究方向,它的变种有上千种. 1.什么是GAN GAN的英文全称是Generative Adversarial Network,中文名是生成对抗 ...

  8. 机器学习:Gan(生成对抗网络)

    版权声明:本文为CSDN博主「意念回复」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/weixin_3991 ...

  9. GAN之生成对抗网络(Matlab)

    代码来源 代码全文 clear all; close all; clc; %% Basic Generative Adversarial Network %% Load Data load('mnis ...

最新文章

  1. 【kissfft】使用kiss_fftr做FFT与iFFT
  2. 年轻的力量!那些30岁前教你重新认识世界的牛人
  3. Spring注解@Value获取属性文件值且解决在controller无法获取到值的问题
  4. mysql 数据库存储表情
  5. 任意两点间的最短路问题(Floyd-Warshall算法)
  6. 使用Flowable.generate()生成可感知背压的流– RxJava常见问题解答
  7. 导轨式网管型工业交换机优势具体在哪里呢?
  8. 服务器三大体系SMP、NUMA、MPP介绍
  9. IOT(10)--RTOS
  10. python 线程中出现执行错乱_python线程中的同步问题
  11. php判断百度ua展示不同页面,PHP 如何根据UA展示不同的前端模板
  12. 搜狗2020年测试工程师笔试题
  13. 创建数据库链接(dblink)步骤
  14. android 区域交错,android - 自动调整交错GridLayoutManager - 堆栈内存溢出
  15. 腾讯校招开奖,总包拿了 68w!
  16. Bootstrap—各式各样的按钮
  17. 连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线
  18. C语言引用方式调用函数
  19. java/kafka的使用,生产者 ,发布/发送消息,自定义数据/json数据,实战。
  20. 个人计算机也可以做为服务器,普通个人电脑可以充当电脑服务器来使用吗

热门文章

  1. 数字图像处理:python对图像做傅里叶变换,理想低通滤波器,理想高通滤波器
  2. vcruntime140.dll不可用或缺少
  3. windows大小写,切换键修改lock or shift
  4. 其他|Cherry 键盘 Fn 锁定切换方法
  5. python填充图像为方形
  6. (基础准备)多元相关与回归分析——一元线性相关与回归分析(一) python+numpy库 实现
  7. echarts改变字体颜色
  8. 通达信f10接口是什么?
  9. 大数据计数原理1+0=1这你都不会算(一)No.47
  10. 接口测试,利用charles修改app的任意字段