GAN 简介
GAN的工作原理
generator 和 discriminator相互博弈:
- discrimiator最大化真实样例与generator样例之间的差异
- generator根据discriminator“反馈的指导信息”,更新参数,生成“更靠谱”的样例,减小与真实样例的差异。
Minimax Game:
minGmaxDV(G,D)minGmaxDV(G,D)
在origin GAN中:
V=Ex∼Pdata[logD(x)]+Ex∼PG[log(1−D(x))]V=Ex∼Pdata[logD(x)]+Ex∼PG[log(1−D(x))]
一般而言,G是neural network, 它从一个先验分布 PzPz ,生成x,上式写成:
V=Ex∼Pdata[logD(x)]+Ez∼Pz[log(1−D(G(z)))]V=Ex∼Pdata[logD(x)]+Ez∼Pz[log(1−D(G(z)))]
GAN的应用示例
目前,Tensorflow 1.4已经提供了一些gan的实现,在tf.contrib.gan中;另外,有很多开源的GAN的实现。(示例略,可以参加mnist上的各种实验和DCGAN、WGAN等生成的图片)
GAN与ML
LR判别模型
样本实例集合:D={
(xi,yi)}ni=1D={
(xi,yi)}i=1n
利用最大似然(ML), 求解判别模型:hθ(x)=11+e−θTxhθ(x)=11+e−θTx
θ∗=arg max 1n∑i=1nyilog hθ(xi)+(1−yi)log(1−hθ(xi))=arg max 1n∑yi=1log hθ(xi)+∑yj=0log(1−hθ(xj))=arg max |D1|n1|D1|∑D1log hθ(xi)+|D0|n1|D0|∑D0log hθ(xj)=arg max P(y=1)Ex∼P(x|y=1)[loghθ(x)]+P(y=0)Ex∼P(x|y=0)[log(1−hθ(x))]θ∗=arg max 1n∑i=1nyilog hθ(xi)+(1−yi)log(1−hθ(xi))=arg max 1n∑yi=1log hθ(xi)+∑yj=0log(1−hθ(xj))=arg max |D1|n1|D1|∑D1log hθ(xi)+|D0|n1|D0|∑D0log hθ(xj)=arg max P(y=1)Ex∼P(x|y=1)[loghθ(x)]+P(y=0)Ex∼P(x|y=0)[log(1−hθ(x))]
事实上,当假设空间 hθ(x)hθ(x) 有足够强的表征能力,(比如真实分布确实由LR模型生成,或者 hθhθ 是深层神经网络,可以表征任意函数);通过求导,可以得到最优解为:
h∗θ(x)=P(y=1)P(x|y=1)P(y=1)P(x|y=1)+P(y=0)P(x|y=0)=P(x,y=1)P(x)=P(y=1|x)hθ∗(x)=P(y=1)P(x|y=1)P(y=1)P(x|y=1)+P(y=0)P(x|y=0)=P(x,y=1)P(x)=P(y=1|x)
(额,貌似推理了一句废话,不过这个公式正说明,当我们采用ML或者cross entropy的时候,最优解正是后验概率(条件概率),前提是 hθ(x)hθ(x) 有足够强的表征能力。推导这个式子,也可以和后面推导 D∗D∗ 相互验证)
观察式子:
- xixi是正例, hθ(xi)hθ(xi)尽可能大,接近1
- xjxj是负例, h