初识GAN
来源:互联网 发布:读mpacc的体验 知乎 编辑:程序博客网 时间:2024/06/05 09:37
前言
简单认识下GAN,GAN与最大似然的关系,几个基本概念的介绍
GAN
对抗网络
GAN的思想,一个判别模型D,一个生成模型G组成对抗网络。如何对抗呢? D的目的是尽量识别出G生成的样本,
生成对抗网络的D之优化函数:
这个优化函数是怎么来的呢?本质是最大似然参数估计。
最大似然参数估计
先来回顾下最大似然估计问题,以二分类为例。
样本总是唯一地属于某个类1/0,假设正样本标记为1,负样本标记为0。
在一个样本在label已知时,则样本为类别y=label的概率为:
其中
最大似然估计参数的思想是:选择某参数
最后一步:对某随机变量而言,其总体期望可以用样本的均值估计。
V(G,D) 与ML 关系
对抗网络的样本来自真实数据
其样本集判别为各自类别的总概率:
再变化下形式
到这里就清晰了,对抗网络的判别器D的优化函数与ML是一致的,都是最大化当前样本集的出现总概率(判对的总概率),用样本均值估计全体均值。
生成器的优化目标
对抗网络,还有另一方生成器
G对自身参数的优化方向,依赖于外部,主要是让D对其生成样本无法识别,最好是判断概率为0.5。
对抗学习过程
前面只是介绍了对抗网络的组成结构,及优化目标的构造,怎么具体训练呢?
学习过程
需要注意的是,G和D的训练时交叉进行的。
为什么有效
两个最优+一个过程收敛。
1) given
如何解释:
最后的式子在
2) given
在
对于最后的式子,可以根据KL最值得知,
3) 训练过程收敛。
训练过程是交叉进行的,分别优化G和D,
优缺点
优点:
1) 训练时,只需要BackPropagation和dropout即可,不需要使用MC(Markov Chain),不需要根据网络推断某些分布。Import
2)对抗网络,对任意可导函数有效。
3)生成模型不用直接根据真实样本更新,而是利用流经判别模型的梯度。减少了数据依赖。
4)生成模型可表示的分布
缺点:
1)
2)G和D的训练要同步好,否则容易G(x)生成单一性太强的样本,无法训练。
思考
两方对抗,多方对抗有没有可能?纳什均衡、博弈论的内容看下。
名词解释
1) momentum
梯度下降的加速技巧:积累之前的同向梯度,震荡方向的梯度相互抵消。
将参数更新
更常规的moment版本如下:
为避免初始值过低,做bias-correcte如下:
2) dropout algorithm
解决问题:针对DeepNet训练overfit的问题,而提出的一种类似RandomForest的bagging思想的方法。
如何dropout:每次训练时,对输入节点按照0.2的概率drop,对隐藏节点按照0.5的概率drop。
drop的意思是这个节点在本次不起作用,包括forward的计算和backward的误差后传。
辅助regular:与dropout相应的辅助调参技巧:Max-nrom regularization。
对任意隐藏节点
3) ReLU和Leak ReLU
激活函数的一种类型,具有更好的特性:更具生物特性;导数常值不消失等。
基本函数形式:
使用形式
ReLU比sigmoid要好使的讨论:https://www.zhihu.com/question/29021768
可以用pych实现下不同active function,试试。
ReLU的变种:
4) batch normalization
解决问题:网络的每层输入都要受到上层的参数变化而导致输入数据的分布变化,被称作“internal covariate shift”。
batch-normalizing transform。
对某一节点
对每个输入维度
其中梯度如下:
据作者说,BN可以丢掉对dropout的依赖。同时,可以毫无障碍地使用larger learning rate(max-norm也是可以用更大的学习率)。可以降低对L2的依赖。等好处…
5) maxout
6) global average pooling
7) trided convolution
参考
1) https://ishmaelbelghazi.github.io/ALI/
2) http://blog.aylien.com/introduction-generative-adversarial-networks-code-tensorflow/
3)《Generative Adversarial Nets》
4)《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》
5) 《Batch Normalization, Accelerating Deep Network Training by Reducing Internal Covariate Shift》
6)《Dropout, A Simple Way to Prevent Neural Networks from Overfitting》
- 初识GAN
- gan
- GAN
- GAN
- GAN
- GAN
- GAN
- GAN
- GAN
- GAN
- GAN和Wassertein GAN
- 一点 GAN
- Wasserstein GAN
- 介绍GAN
- [paper] GAN
- GAN 入门
- GAN基本原理
- cycle GAN
- Netty4.0学习笔记系列之六:多种通讯协议支持
- Android Api demo系列(4) (App>Activity>DialogActivity)
- 第48篇 字符编码探密--ASCII,UTF8,GBK,Unicode
- linux下面如何安装jdk
- 基础OpenGL知识结构图
- 初识GAN
- [Noi2002]Robot 欧拉函数+递推
- win8系统java开发-jdk1.6的环境配置搭建
- HDU 6134 Battlestation Operational(基本数论+莫比乌斯反演)——2017 Multi-University Training Contest
- 51nod1073 约瑟夫环
- PHP Smarty整理(一)没有分离
- Map集合遍历的三种方式
- junit 测试报错 java.lang.Exception: No runnable methods
- emWin 2天速成实例教程013_修改BUTTON按钮等控件背景皮肤颜色_SetBkColor