对抗式生成网络GANs——part1



   对抗式生成网络GANs是Goodfellow在2014年发表的Generative Adversarial Nets一文中提出的。GANs可以用来生成样本数据,当目前我们没有掌握足够多的数据量时,可以使用GANs生成许多以假乱真的样本,这是目前GANs最主要的用途。

    

 1.生成式对抗网络的结构

    对抗网络只是提出了一种网络结构,总体来说,这个网络结构还是很简单的。

    1.1下面我们一个一个介绍图中的各个部分。

         随机噪声z:这个随机噪声可能是一个随机数字,也可能是好几个随机数字组成的随机向量,有时候还可能是一些随机数混合了一些有意义的数,我们可以将这个有意义的数理解为一种指令信息。

      生成器:通过输入少量的数值,用来训练生成我们想要得到的样本。

        判别器:  用来判别输入的数据是真实的样本数据还是机器产生的假样本数据,具体修炼判别器的方法就是我们往判别器里输入等量的真实数据和生成数据,同时我们将真实数据加上标签1,生成数据加上标签0,。判别器判别之后输出一个标签值,如果输出的标签值越接近0,那么就代表判别器就认为这个数据为生成数据的可能性就越大,输出标签值越接近1,那么就代表判别器就越认为这个数据为真实数据的可能性就越大。我们希望判别器的性能强大, 可以准确的分辨出哪些是真实数据,哪些是假数据。

    

    1.2GANs的基本思想

    判别器返回的结果,用来训练生成器。根据判别器返回来的结果,用于使生成器生成更加以假乱真的样本,使得生成器生成数来的数据使得判别器判别不出这是生成出来的数据。具体怎么学习肯定跟我们的损失函数制定有关系,之后我们会介绍如何制定损失函数。



--------------- -----------------------以上就是GANs的最最基本的思想---------------------------------------------


极小极大定理:(1928; 约翰.冯。诺依曼 - 1903-57)对于每个两人零和博弈,每个局中人都存在一个混合策略使得当局中人使用这些策略时,双方都有相同的支付期望。而且,这个支付期望也是每个局中人能指望从博弈的一局中得到的最优支付。因此,这个混合策略是两个局中人所用的最优策略。    


目标函数如下公式:


目标函数就采用了极小极大值定理的思想

G(z):生成器生成的样本分布

D():代表判别器函数

pdata(x):代表真实样本的分布

E:取期望值

    如果判别器D经常把生成样本错判成真实样本,那么D(G(z))就越接近1,那么右式第二项就越小(越趋近于一个很大的负数)。生成器希望判别器经常判断出错,已达到生成器可以生成以假乱真的数据的目的,所以生成器G希望右项的值越小越好。而判别器希望自己可以准确的判断出真实样本和生成样本,判别器希望右边的值越大就好。这本身就是一个对抗和博弈。之所以写成期望,是因为我们之后可以用积分来表达这个式子,这对于我们数学推导也是有好处的。


2.数学讲解

     KL距离(相对熵):KL距离,是Kullback-Leibler差异,也叫做相对熵,它用来衡量相同事件空间里的两个概率分布的差异情况。作者在构造目标函数的时候使用Log,也是因为使用Log在以后计算中,可以方便转化为求KL距离。


训练算法:

for number of training iteations do  //在这里我们定义训练的次数

    for k steps do     //k是一个超参数,我们一般使k为1,使得计算的代价是最低的

                我们先抽出小批量的噪音

                我们又抽出同样多的真实样本

                之后我们计算梯度,这是梯度上升的,因为我们想求max

               

end for 

        抽出同样多的样本来训练G,

                   使用梯度下降放来训练。


数学结论:

结论1:如果生成器G固定,那么判别器D是



结论2:



3.实验




    图中有黄框的是真实样本,其余全是GANs生成的样本,通过图像可以看出,GANs在某些时候确实可以生成以假乱真的样本。

猜你喜欢

转载自blog.csdn.net/qq_41858768/article/details/80711524