本文已参与「新人创作礼」活动,一起开启掘金创作之路。
原始的公式长这样:
minGmaxDV(D,G)=Ex∼pdata (x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
首先可以明确一点,这种公式肯定是从里面算到外面的,也就是可以先看这一部分:
maxDV(D,G)=Ex∼pdata (x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
我们知道,在每个epoch中,GAN的生成器与判别器是分别训练的,即先固定生成器G,去训练判别器D,那么上面这个式子实际上就是判别器的"损失函数"。继续拆分上面这个式子,可以发现主要就是加号左右两个部分。
先看左边。左边这一部分的作用是保证判别器的基础判断能力:对于Ex∼pdata (x)[logD(x)],x为从真实数据分布pdata 中采样得到的样本。Ex∼pdata (x)[logD(x)]越大,相当于意味着D(x)越大,即判别器越能准确地将真实样本识别为真实样本;因此有maxD;
再看右边。右边这一部分的作用是保证判别器能够区分出虚假样本:对于Ez∼pz(z)[log(1−D(G(z)))],z为从某一特定分布pz中得到的采样,G(z)为生成器生成的虚假样本。Ez∼pz(z)[log(1−D(G(z)))]越大,相当于意味着D(G(z))越小,即判别器越能够正确区分虚假样本,将其标为False;因此有maxD。
再来看生成器G的"损失函数"。到了训练生成器G的阶段,此时判别器D固定。如果G更强,那么判别器会进行误判,此时D(G(z))会变大,Ez∼pz(z)[log(1−D(G(z)))]更接近于零,即整个式子的值会更小;因此有minG。