GAN一代对抗网络(1)
生成对抗网络包括两个子网络:生成器网络(G)和鉴别器网络(D),其中生成器网络负责学习样本的真实分布,鉴别器网络负责区分生成器网络采样的样本和真实样本。
生成网络g(?)生成网络G类似于自编码器的解码器功能,从先验分布中采样隐变量,通过生成网络G的参数化分布得到生成样本,如下图所示。哪些隐藏变量?的先验分布可以假设属于一个已知分布,如多元均匀分布。
可以用深度神经网络参数化,如下图所示,隐变量可以从均匀分布采样?从多层转置卷积层网络的参数化分布中采样样本。
判别网络d(?判别网络类似于普通的二进制网络,它接受输入样本?,包括从真实数据分布中采样的样本,以及从自生成网络中采样的虚假样本,和* * *一起构成判别网络的训练数据集。将网络输出标识为?对于真实样本的概率,我们将所有真实样本标注为1,生成网络生成的所有样本标注为0。通过最小化判别网络的预测值和标签之间的误差,我们可以优化判别网络的参数。
我们的目标很明确,不仅要提高鉴别器分辨真假图像样本的能力,还要改进生成器生成更真实的图像,让鉴别器越来越难分辨。
对于判别网络D,其目标是能够很好地区分真样本和假样本。也就是说,为了最小化图像的预测值和真实值之间的交叉熵损失函数:
其中,判别网络中真实样本的输出是判别网络的参数集,判别网络中生成样本的输出是的标签,因为真实样本被标记为真,所以是生成样本的标签,因为生成样本被标记为假。根据交叉熵损失函数的定义,二分类问题:
因此,判别网络的优化目标是:
去掉中的负号,把问题变成疑问句,用预期的形式写出来:
对于生成网络g(?),我们希望能很好的忽悠判别网络,判别网络中的虚假样本输出越接近真实标签越好。也就是说,在训练生成的网络时,希望网络的输出越接近1越好。这时,交叉熵损失函数是:
把问题变成问题,用预期的形式写出来:
然后等效转换成:
GAN的优化过程不像通常的损失函数极小化,而是保持了生成和判别的动态平衡。因此,它的训练过程比一般的神经网络要困难得多。
将判别网络的目标和生成网络的目标合并,写成min-max形式:
在最初的甘论文中:
这里为了更好的理解,对符号进行了更清晰的梳理,并标注了符号与网络参数的对应关系。
理想情况下,会有更准确的识别数据真假的能力。经过大量的迭代训练,尽可能模拟出假的样本,最终整个GAN达到所谓的纳什均衡,即对于生成的样本和真实样本的识别结果,正确率各占50%,错误率各占50%。以下具体从理论层面推导。
现在从理论层面,通过游戏学习的训练模式,生成器G和判别器D分别会达到什么状态。具体来看以下两个问题:
首先,我们通过一个一维正态分布的例子给出一个直观的解释。如下图所示,黑色虚线表示真实数据的分布,为正态分布,绿色实线表示生成网络的学习分布,蓝色虚线表示鉴别器的判定边界曲线。在图中,(a) (b) (c)和(d)分别表示生成网络的学习轨迹。在初始状态,如图(a)所示,分布和差值较大,鉴别器很容易学习到判定边界,即图(a)中蓝色虚线,判断采样点从as 0开始,中间的采样点为1。随着生成的网络分布越来越接近真实分布,鉴别器分辨样本真假的难度越来越大,如图(b)和(c)所示。最后,生成的网络达到最佳性能和学习到的分布。此时从生成的网络中抽取的样本非常逼真,鉴别器无法区分,即判断为真假样本的概率相等,如图(d)所示。
修正了发生器G的参数,确定了鉴频器D能达到的最佳状态:
证明了对于给定的生成器G,要使鉴别器D最优,我们的目标是最大化损失函数,其积分形式为:
对于给定的,真实分布总是固定的,所以sum是固定值,所以对于鉴别器D,找出
的最大值,其中是判别网络参数,对于函数来说,在处取最大值并不难,是最大值。因此,可用的极值点也是
所以鉴别器能达到的最佳状态就是定理中给出的公式。
现在考虑第二个问题。
JS背离(詹森-香农背离)
对于KL散度来说,是不对称的。但是JS发散是对称的。
达到时,考虑此时总和的散度:
考虑到判断网络的到来,此时的损失函数为:
所以我们可以得到:
对于生成网络,目标是最小化损失函数,因为最小值仅在(此时)以下情况下获得:
此时,生成的网络达到以下状态:
即学习到的分布与真实分布一致,网络达到纳什均衡点。此时:
也就是说,生成器生成的图像有0.5%的概率是真的,有0.5%的概率是假的。