论文:http://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf
摘要:论文提出了一种网络结构,该网络结构通过对抗学习,有两个模型:(1)生成模型G,生成模型捕捉数据的分布(2)分辨模型D,D评估从训练集而不是G中采样的概率。训练生成模型G用于最大化分辨模型D犯错的概率。在随机的生成模型G和鉴别模型D中,存在一个独一无二的解决办法,生成模型G恢复训练数据的的分布,鉴别模型D在任何地方都等于1/2. 生成模型G和鉴别模型D通过多层感知机进行定义,整个系统通过反向传播算法进行训练。论文在训练和生成时,不需要马尔科夫链或者没有展开的近似逼近推断网络。
对抗网络:对抗模型使用的都是多层感知机,为了学习到生成器在 x 的分布,定义一个输入先验噪声变量,代表生成模型的映射。定义第二个多层感知机,输出是一个单一的评价标准,代表 x 来自数据中而不是生成器中的概率。论文训练最大化 D 的值,训练 G 最小化。生成器 G 和 鉴别器 D 在做一个博弈游戏,值函数如下:
论文选择对鉴别器 D 优化 k 步和对生成器 G 优化一步,在学习的开始阶段,生成器 G 数据匮乏(训练的不好),鉴别器 D 能够忽视很多样本 ,饱和,可以使得在开始训练时梯度下降更快(学习更快)。
伪代码:
在训练中,设定 k 步,k 表示鉴别器 D 进行 k 步,生成器 G 进行一步,从噪声先验中采样 m 个样本,在生成的数据采样 m 个样本,根据公式梯度更新鉴别器 D。k 步结束后,从噪声先验中采样根据公式梯度更新生成器 G。
实现最佳性:
鉴别器 D :
鉴别器 D 的训练标准是给定任何生成器 G,最大化上述值函数,由于存在公式,它的最大化值是,所以论文中此值函数的最大值为 D/(G+D),经过优化可以得到如下公式:
实现收敛性:
,最后生成模型生成分布将收敛于实际数据的分布。
训练技巧:生成网络混合使用矫正的线性**函数、sigmoid**函数,鉴别网络使用 maxout **函数。在训练鉴别网络时,使用了 Dropout,在生成网络最底层使用噪声作为输入,中间层使用 dropout 和噪声,使用高斯分布评估生成器 G 的概率。参数使用交叉验证。
优势与不足:不足:没有明确的表示分布,鉴别器 D 和生成器 G 必须同时训练(在没有更新 D 时,不能将 G 训练过多,否则 G 会崩溃,因为有过多的 z 对应同一个 x )。优势:不需要马尔科夫链,只需要反向传播算法来更新梯度,学习过程中不需要 inference 并且可以包含吸收很多函数。不直接更新梯度而是与鉴别器配合,并且可以表示尖锐的,不规则的分布。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:GAN(Generative Adversarial Nets) 对抗生成网络 - Python技术站