昨天腹泻发烧躺了了一天,今天白天开了一天会,体力还在恢复中。说点相对轻松的话题。

 

漫威的新英雄惊奇队长刚刚上映不久,想起漫威中很多场景其实在现实中是不存在的,都是通过计算机来模拟出的以假乱真的技术,计算机怎样模拟真实场景通过学习来生成一个较大概率判定为真实的生成样本? 今天来了解下生成对抗网络(GAN, Generative Adversarial Networks)。

 

01

目的

 

从数据科学的角度来说,人们一切关于数学的研究都是为了解决量化和认知的问题。

 

GAN存在的目的是为了通过一定手段,模拟出一种数据的概率分布的生成器,使得这种概率分布于某种观测数据的概率统计分布一致或尽可能接近。

 

比如生成一个动画的自然环境背景,一棵树,一朵花,虽然这个图片与学习样本中的任何一个都不一样,我们仍然会较大概率地认为这个图片是真实的而不是造出的。

 

02

二元极小极大模式与纳什均衡

 

GAN的思想是一种二元零和博弈,博弈双方的利益之和是一个常数。

举个经典的分蛋糕的例子:

两个孩子分蛋糕,一个切蛋糕,一个先选蛋糕,然后具备贪吃策略(得到的蛋糕越大越好)。

 

切蛋糕可能有两种结果, 一样大, 一大(D +x )一小(D - x), D为一半蛋糕。

B先选一定会选择较大的一块,留给A小的(极小)。

A切蛋糕的时候尽可能保证自己的蛋糕最大(极大)。

 

由于A是后选,所以A会尽量使小块的蛋糕尽量大一些,极限的场景(小块最大的场景)就是D - x 最大的时候就是x为零,两块蛋糕一样大。

 

纳什均衡,纳什均衡是一种策略组合,使得同一时间内每个参与人的策略是对其他参与人策略的最优反应,一种非合作博弈状态。

 

对于切蛋糕的例子,如何A来切,B来选。A如果等分,那么B选择一半,A也是一半,双光都得到一个不后悔的结果;如果A变化策略,而B不变化,也就是A不均分切,B仍然优于自己选择,那么A的变化反而会影响到自己的利益,这种情况下A不会优先做出改变,达到了一半一半的平衡状态。

 

引申到GAN理论中,GAN有两个博弈者,一个名字是生成模型(G),另一个名字是判别模型(D)。在对抗网络模型中就是让G网络生成的样本有一半可以通过D网络监测,而有另一半无法通过监测。双方在这个对抗中不断调整自己的参数进行伪造和犯伪造的对抗,对抗网络也因此得名。

 

03

模型训练

 

生成对抗网络浅析(GAN)

  1. 定义一个模型来作为生成器(Generator), 在噪声的干扰下,将一个输入变量,生成为样本图片。模型可以是全连接神经网络,或者反卷积网络。输入向量写到某些信息,如字母,潦草程度(噪声)等,期望随机输入的最好是满足常见的的均值分布,高斯分布。

  2. 定义个判别器(Discriminator),用来判别图片是真是假,出入图片,输出判别见过,Real或者Fake。可以是任意判别器模型,如全连接网络或者是包含卷积网络等等。

 

根据论文,二元极小极大博弈的的Value函数可以表示为:生成对抗网络浅析(GAN)

其中x ~ Pdata(x)和z ~ Pz(z)指x和z分别满足各自的分布律;

D(x)是指真实图片被判断为真实的概率;

G(z)是指一个z噪声输入到G网络,并输出一个样本的构造过程;

D(G(x))指G网络生成的样本,被判定为真实图片的概率。

 

学习过程类似SML/PCD(Stochastic Maximum Likelihood, Persistent Contrastive Divergence)训练中在内循环中保护马尔科夫链不被破坏的过程。

 

从论文中的实例来看,

生成对抗网络浅析(GAN)

注:图中的黑色虚线表示真实的样本的分布情况,蓝色虚线表示判别器判别概率的分布情况绿色实线表示生成样本的分布。 Z 表示噪声, Z 到 x  表示通过生成器之后的分布的映射情况。

 

参考论文中的算法

生成对抗网络浅析(GAN)

D网络和G网络是交替训练的,两者的目的不一样,D的训练希望尽可能好地正确提取x的特征,增大正确判断的概率D(x);G的训练是希望尽可能伪造出一些图片让D误以为是真的,也就是增大1-D(G(z))

 

开始是(a)状态,生成器生成的分布和真实分布区别较大,并且判别器判别出样本的概率不是很稳定,这时需要训练判别器分辨样本的正确率,增大优化D,即为增大D(x).

逐步训练D到(b)样本状态,此时判别样本区分相对稳定。然后再对生成器G进行训练以优化生成为真的概率,公式为增大log(1 − D(G(z))),即增大1-D(G(z)),。

逐步训练G到(c)样本状态,此时生成器分布相比之前,逼近了真实样本分布。

经过多次反复训练迭代之后,最终希望能够达到(d)状态,生成样本分布拟合于真实样本分布,并且判别器分辨不出样本是生成的还是真实的(判别概率均为0.5), 相当于ln(x) + ln(1 - x)的最大值,等价于求解ln[x( 1 -x )]

生成对抗网络浅析(GAN)

最大值极值是x = 1/2。

 

 

04

遗留问题

 

GAN中有一些遗留问题,如不收敛问题,GAN网络的目的是做一个D网络和G网络的纳什均衡,然后只有保证Value函数V是凹函数的情况下才能保证纳什均衡,这个函数有可能收敛到一个不是50%概率的情况,CGAN和DCGAN尝试优化这类问题,有兴趣可以参考。

收工。

参考:

https://arxiv.org/pdf/1406.2661.pdf

https://medium.freecodecamp.org/an-intuitive-introduction-to-generative-adversarial-networks-gans-7a2264a81394

https://zhuanlan.zhihu.com/p/33752313

https://skymind.ai/wiki/generative-adversarial-network-gan

https://www.jianshu.com/p/7d7a2217c9a8

 

THE END

- 晚安 -

图片长按2秒,识别图中二维码,关注订阅号

生成对抗网络浅析(GAN)