2014Generative Adversarial Nets(精读2017.3.2)
Goodfellow, Bengio et al.
NIPS2014
蒙特利尔大学
摘要
一种新的生成式框架,同时训练两个模型,一个称为“产出模型” G,另一个称为“检验模型” D
G用于描述数据的分布(或者说是生成尽可能拟合真实数据的分布),D用于对G各个迭代轮次产生的结果进行评估,D的目标是尽可能评估得出真实分布比G生成的“高仿分布”更加真实,而G的目标就是尽可能使生成的结果让D的辨认出现错误(注意,这里不同于某些解读说的:尽量生成出更真实的分布)
举一个拙劣的比喻就是:假设我们来到一家古玩店,G是一个学徒,D是他的师父,师父让学徒对着真迹造一个赝品出来,学徒尽可能早出赝品满足师父的要求,让师父的鉴别出错,无法辨认赝品和真迹,而师父则是尽可能从赝品找出蛛丝马迹来发现它其实不是真迹
摘要还提到,D最终收敛时给出的目标结果应该是 12 ,后文还会有定性和定量的分析和推理
ps:arbitrary(任意),demonstrate(证明,证实),potential(潜力 n,潜在的 adj)
引言
提到深度学习模型的优势和发展,能够对标签和分布有更加深入丰富的感知
提到深度生成模型中一个比较棘手的问题就是,类最大似然估计中复杂的概率计算,于是尝试找出一些方法来巧妙地规避这个问题
这个框架是一种minmax复合的博弈游戏
最大似然基本思想(来自百度百科):当从模型总体随机抽取n组样本观测值后,最合理的参数估计量,应该使得从模型中抽取n组样本观测值的概率最大,而非如最小二乘法一样,旨在得到使得模型能最好地拟合样本数据的参数估计量
似然函数:
L(θ∣x)=P(X=x∣θ)
推广形式:
L(θ1,θ2,…θk)=∏i=1nP(x1;θ1,…,θk)
提出的框架适用于各种训练算法以及最优化算法,本文将在实验中使用MLP(多层感知机)作为GAN框架的实验对象,使用MLP去对噪音数据去噪,并使用MLP作为检验模型D
相关工作
提到 大多数深度生成模型是关于给出概率分布的参数模型,并使用最大似然估计
后人尝试用BP算法去代替复杂的近似估计算法[4]
深度波兹曼机就是典型的深度生成模型,似然计算复杂,于是催生出了“生成机”这种东西,避开对似然过程的准确描述,由期望的分布生成样本
提到一种随机生成网络,延伸成为本文的工作[18]
包括VAE(变分自编码机)[23],这些模型中,BP规则成为主要的超参数
但是GAN和它们是有区别的,不同于VAE在隐式单元中描述差异性,GAN在显式单元中描述差异性,这也导致GAN不能对离散数据建模
还有一种“批判性训练”,利用标准,使用一个事先训练好的噪音分布作为“竞争对手”(这是一种非正式的竞争网络),需要估计并反向传播密度[13],ps:解读这里的竞争对手是预定义的,没有和被训练的model一起经历训练过程
[26]用其他隐单元去描述当前隐单元的值,虽然和本文工作有一定可比性,但竞争并非其主要的训练标准,而是鼓励隐单元在完成某项任务后更加概率独立,另外一个区别就是学习规格不同
“对抗样例”是与GAN最为容易混淆的模型(其实也是他们团队提出来的),尝试找出分类失误的样例。但这个工作主要试图揭示神经网络的深层行为,并体现出某些神经网络分类模型过度自信,脱离了人类的认知
对抗网络
这一部分是给出对抗网络的基本概念,让读者有一个大致的认识
首先给出真实的数据分布 x ,G对它的描述是
所以 G:input(z),output:Pg
然后定义鉴别函数 D(x;θd) , D:input(x),output:value ,D输出的就是一个标量,用于表示输入的 x 来自真实数据而非G的生成数据的概率,D的训练过程就是最大化概率:将正确的标签同时分配给训练样本和G的输出的概率
这里可能有疑惑,明明D就给G挑刺的,为什么还要这么训练呢?首先想一下,师父如果很水,不分青红皂白给学徒打低分,那么整个过程还有意义吗?首先要训练出一个经验丰富,很少犯错,铁面无私的师父来才对(个人理解)
而G的训练目标就是最小化
转化为最大化 log(D(G(z))) 的对偶问题,目的是让最终整体的复合最优化问题在理论上可收敛: min→←max
平衡G和D的学习率是训练过程的关键,否则会产生无休止地计算或者在有限的数据集上过拟合等等现象
训练时可能需要D和G训练过程 k:1 地交替(就是让G等D几步)
理论结论
理论论证部分能在非参数设置的情形下描述清楚,理论上GAN可以无限地学习优化下去
4.1证明框架有全局最优解 pg=pdata
4.2推导GAN算法通过最优化公式(1)能得到最优解(证明算法的收敛性)
观察示例图,4个小图中,上半个图显示的是真实分布 x