主要内容
概述
GAN由生成器和判别器 (D) 组成,生成器 (G) 负责生成样本,判别器负责判断生成器生成的样本是否为真。生成器要尽可能迷惑判别器,而判别器要尽可能区分生成器生成的样本和真实样本。
目标函数
GminDmaxV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
其中x∼pdata(x) 代表真实数据,z∼Pz(z) 表示 随机高斯分布
目标函数可以分成两个部分来看
- 让判别器能尽量的分辨真实样本和生成器生成的样本。其中真实样本值为1,生成样本为0,可以把G暂时看作常量,求V关于D(其中的参数)的最大值。判别器完美情况下 V=0 ,否则 V<0。
DmaxV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
E代表期望值(平均值)
2. 让判别器能尽量的分辨不出来生成器生成的假样本。
GminV(D,G)=Ez∼pz(z)[log(1−D(G(z)))]
训练步骤
- 先固定生成器,训练判别器。判别器的输入为真实数据和生成数据,训练判别器使它能分辨出真实数据和生成数据。
- 固定判别器,训练生成器,上一步训练出来的判别器能判别之前生成的数据,现在要训练生成器使判别器判断不出来生成器生成的数据。
- 反复进行上面两个步骤。
conditional GAN
需要成对的数据,判别器既要能判断生成的数据是否真实,又需要判断生成的数据和输入的条件是否匹配。
- 其中(c,x)∼pdata(c,x) 代表真实数据且其中(c,x)是匹配的
- (c,x)∼pdata′(c,x) 也代表真实数据,但其中(c,x)是不匹配的
- z∼Pz(z) 表示 随机高斯分布
训练判别器:
DmaxV(D,G)=E(c,x)∼pdata(c,x)[logD(c,x)]+E(c)∼pdata(c),z∼pz(z)[log(1−D(G(c,z)))]+E(c,x)∼pdata‘(c,x)[log(1−D(c,x))]
添加的第三项,就是为了使判别器能够分辨数据和标签是否匹配。就是为了判别器能够分辨生成器出来的数据和输入的标签是否匹配。
cycle GAN
X是输入的图像,Y是需要转换的图像
DX 是 X的判别器,DY 是 Y的判别器
G是第一个生成器,将输入图像转化成需要转换类型的图像,F是第二个生成器,将转换后的图像再转换成输入的图像
损失函数 Loss=Lossgan+Losscycle
Lossgan=Lgan(G,DY,X,Y)+Lgan(F,DX,X,Y)
= Ey∼pdata(y)[logDY(y)]+Ex∼pdata(x)[log(1−DY(G(x)))]+Ex∼pdata(x)[logDX(x)]+Ey∼pdata(y)[log(1−DY(F(y)))]
类似于两个GAN接起来,变成一个循环。
Losscycle=Ex∼pdata(x)[∣∣F(G(x))−x∣∣1]+Ey∼pdata(y)[∣∣F(G(y))−y∣∣1]