Generative Adversarial Networks(GANs) NIPS 2016 tutorial - Insights

Generative Adversarial Networks(GANs) NIPS 2016 tutorial - Insights_第1张图片
Pic 1

生成模型类别

  • 密度(概率)估计:在不了解时间概率分布的情况下,先假设随机分布,然后通过数据观测来调整确定真正的概率密度(or应该理解为无限趋近于真正的概率密度)。
  • 样本生成:利用已有的训练样本数据,通过训练后的模型生成类似的“样本”。

构建生成模型
最大似然估计:给定了观察数据以评估模型参数(估计出分布模型)的方法。
当今大部分生成模型都需要用到马尔科夫链,GAN是目前唯一一种从数据观测直接一步到位的生成模型。

生成模型应用

  • 对我们处理高维数据和复杂概率分布能力的很好的检测;
  • 为规划RL or 模拟RL等模拟未来发展;
  • 数据缺失情况:通过生成模型来补足数据;
  • 输出多模结果;
  • 一些实际的生成任务。

例如:预测影片的下一帧 or 图像超分辨率处理 or 从简笔画生成完整模型等。

生成模型对比

Generative Adversarial Networks(GANs) NIPS 2016 tutorial - Insights_第2张图片
Pic 2

而与之不同的,GAN的特性有:

  • 使用了latent code(用以表达latent dimension、控制数据隐含关系等)
  • 数据会逐渐统一
  • 不需要Markov链
  • 被认为可以生成最优样本(然而并没有很好的量化标准证明)

GAN如何工作?
模型G、D在相互对抗中学习:G将假数据(噪声数据)模仿成真实数据并揉进真实数据中;D将真实数据与假数据区分开。随着D的甄别能力的上升,G的造假能力逐渐上升,而这个造假能力超强的G即为我们需要得到的生成模型。

Generative Adversarial Networks(GANs) NIPS 2016 tutorial - Insights_第3张图片
pic 3

如上图,首先模型G将噪声数据z伪装成“真实数据”x。

训练过程:
使用任意SGD方法(例如Adam)同时训练两组数据:

  • 一组真实的训练数据
  • 一组由G生成的造假数据

注:也可以在训练时使其中一组每跑一次,另一组跑K次。
设计目标函数来判断与监视学习效果,此目标函数思想来源于极大极小博弈(Minimax Game)。


Generative Adversarial Networks(GANs) NIPS 2016 tutorial - Insights_第4张图片

如上图所示:
J(D)为判别网络的目标函数,J(G)为生成网络的目标函数。

  • 对J(D):这是一个交叉熵(cross entropy)函数。左边部分表示D判断出x为真x的情况,右边部分表示D判别出的由生成网络G伪造出的数据的情况。
  • 对J(G): 目的与J(D)恰恰相反,所以前面加了一个负号,类似于一个Jensen-Shannon距离表达式。

即为最大最小博弈问题(Minimax Game):两个人的零和博弈,一个想最大,另一个想最小。那么我们要找的均衡点(也就是纳什均衡)就是J(D)的鞍点(saddle point)。

end if

你可能感兴趣的:(Generative Adversarial Networks(GANs) NIPS 2016 tutorial - Insights)