初识GAN

0x00 GAN究竟在做什么

学习样本集的数据分布

  • 学习到高维抽象的分布函数
  • 模拟预测未来数据
  • 处理缺省数据问题:如半监督学习
  • 生成真实样本

建立模型,分析数据特征,还原数据,……

生成模型常见方法的比较

  • 显示:或多或少的需要知道或者假设模型的分布;大多数通过Markov chains方法;

  • 隐式:使用隐藏编码,无需假设模型,无需Markov chains,以最终生成图像的相似性作为目标

0x01 GAN如何做的

思想:二人零和博弈(two-player game)

博弈双方,两个模型:生成模型(G),判别模型(D)

  • 判别模型:是一个二分类(看作0-1二分类),用于判断样本是真是假;(分类器输入为样本,输出概率大于0.5为真,否则为假)

  • 生成模型:是一个样本生成器,把一个噪声包装成另一个逼真的样本,使得判别器误认为是真样本;(输入为噪声,输出为样本维度相同的噪声(假样本))

制造的假样本集使得判别器无法判断,无论对于真假样本,输出结果概率都是0.5。

生成模型G捕捉样本数据的分布

How Generative Adversarial Nets do

  • 黑色点:采样集
  • 绿色点:生成样本(分布)
  • 蓝色线:判别器分类面

0x02 GAN是如何训练的

训练策略:两个网络,分别单独交替训练

GAN Train

伪代码实现

GAN 伪代码

0x03 GAN小实验

0x03 GAN性质

(1) 自动的学习原始真实样本集的数据分布,无需假设额外的分布模型 (2) 自动学习潜在的损失函数,判别网络潜在学习到的损失隐藏在网络之中; (3) 提供无监督的学习方法,无监督学习是机器学习领域的终极目标

存在的问题:

(1) 不收敛的问题:网络不稳定,难以训练; (2) 网络需要调才能得到较好的结果,比如交替迭代次数,对结果的影响较大。

0x04原文地址

2019-12-15 02:59:46