GAN(1)-生成对抗网络的开山之作
生成对抗网络的开山之作—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)-生成对抗网络的开山之作相关推荐
- DL之GAN:生成对抗网络GAN的简介、应用、经典案例之详细攻略
DL之GAN:生成对抗网络GAN的简介.应用.经典案例之详细攻略 目录 生成对抗网络GAN的简介 1.生成对抗网络的重要进展 1.1.1986年的RBM→2006年的DBN
- 什么是GAN(生成对抗网络)?
GAN是一种深度学习模型,全称为生成对抗网络(Generative Adversarial Networks).它由两个神经网络组成:一个生成器网络和一个判别器网络. 什么是GAN(生成对抗网络)? ...
- GAN(生成对抗网络)在合成时间序列数据中的应用(第二部分——利用GAN生成时间序列数据)
GAN(生成对抗网络)在合成时间序列数据中的应用(第二部分–TimeGAN 与合成金融输入) (本文基本是对Jasen 的<Machine Learning for Algorithmic Tr ...
- GAN(生成对抗网络) and CGAN(条件生成对抗网络)
前言 GAN(生成对抗网络)是2014年由Goodfellow大佬提出的一种深度生成模型,适用于无监督学习.监督学习.但是GAN进行生成时是不可控的,所以后来又有人提出可控的CGAN(条件生成对抗网络 ...
- 【万物皆可 GAN】生成对抗网络生成手写数字 Part 1
[万物皆可 GAN]生成对抗网络生成手写数字 Part 1 概述 GAN 网络结构 GAN 训练流程 模型详解 生成器 判别器 概述 GAN (Generative Adversarial Netwo ...
- pytorch实现GAN(生成对抗网络)生成二次元头像(附代码)
目录 GAN基本概念 GAN算法流程 代码实现与讲解 1.准备数据集 代码实现 定义鉴别器 定义生成器 训练 补充 附完整代码 参考链接及书目 GAN基本概念 GAN, 全称Generative Ad ...
- GAN(生成对抗网络) 解释
GAN (生成对抗网络)是近几年深度学习中一个比较热门的研究方向,它的变种有上千种. 1.什么是GAN GAN的英文全称是Generative Adversarial Network,中文名是生成对抗 ...
- 机器学习:Gan(生成对抗网络)
版权声明:本文为CSDN博主「意念回复」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/weixin_3991 ...
- GAN之生成对抗网络(Matlab)
代码来源 代码全文 clear all; close all; clc; %% Basic Generative Adversarial Network %% Load Data load('mnis ...
最新文章
- 【kissfft】使用kiss_fftr做FFT与iFFT
- 年轻的力量!那些30岁前教你重新认识世界的牛人
- Spring注解@Value获取属性文件值且解决在controller无法获取到值的问题
- mysql 数据库存储表情
- 任意两点间的最短路问题(Floyd-Warshall算法)
- 使用Flowable.generate()生成可感知背压的流– RxJava常见问题解答
- 导轨式网管型工业交换机优势具体在哪里呢?
- 服务器三大体系SMP、NUMA、MPP介绍
- IOT(10)--RTOS
- python 线程中出现执行错乱_python线程中的同步问题
- php判断百度ua展示不同页面,PHP 如何根据UA展示不同的前端模板
- 搜狗2020年测试工程师笔试题
- 创建数据库链接(dblink)步骤
- android 区域交错,android - 自动调整交错GridLayoutManager - 堆栈内存溢出
- 腾讯校招开奖,总包拿了 68w!
- Bootstrap—各式各样的按钮
- 连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线
- C语言引用方式调用函数
- java/kafka的使用,生产者 ,发布/发送消息,自定义数据/json数据,实战。
- 个人计算机也可以做为服务器,普通个人电脑可以充当电脑服务器来使用吗
热门文章
- 数字图像处理:python对图像做傅里叶变换,理想低通滤波器,理想高通滤波器
- vcruntime140.dll不可用或缺少
- windows大小写,切换键修改lock or shift
- 其他|Cherry 键盘 Fn 锁定切换方法
- python填充图像为方形
- (基础准备)多元相关与回归分析——一元线性相关与回归分析(一) python+numpy库 实现
- echarts改变字体颜色
- 通达信f10接口是什么?
- 大数据计数原理1+0=1这你都不会算(一)No.47
- 接口测试,利用charles修改app的任意字段