原始的公式长这样:
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min _{G} \max _{D} V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] GminDmaxV(D,G)=Expdata (x)[logD(x)]+Ezpz(z)[log(1D(G(z)))] 首先可以明确一点,这种公式肯定是从里面算到外面的,也就是可以先看这一部分: max ⁡ D V ( D , G ) = E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \max _{D} V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] DmaxV(D,G)=Expdata (x)[logD(x)]+Ezpz(z)[log(1D(G(z)))] 我们知道,在每个epoch中,GAN的生成器与判别器是分别训练的,即先固定生成器 G G G,去训练判别器 D D D,那么上面这个式子实际上就是判别器的"损失函数"。继续拆分上面这个式子,可以发现主要就是加号左右两个部分。

先看左边。左边这一部分的作用是保证判别器的基础判断能力:对于 E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})] Expdata (x)[logD(x)] x \boldsymbol{x} x为从真实数据分布 p data  p_{\text {data }} pdata 中采样得到的样本。 E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})] Expdata (x)[logD(x)]越大,相当于意味着 D ( x ) D(\boldsymbol{x}) D(x)越大,即判别器越能准确地将真实样本识别为真实样本;因此有 max ⁡ D \max _{D} maxD

再看右边。右边这一部分的作用是保证判别器能够区分出虚假样本:对于 E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] Ezpz(z)[log(1D(G(z)))] z \boldsymbol{z} z为从某一特定分布 p z p_{\boldsymbol{z}} pz中得到的采样, G ( z ) G(\boldsymbol{z}) G(z)为生成器生成的虚假样本。 E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] Ezpz(z)[log(1D(G(z)))]越大,相当于意味着 D ( G ( z ) ) D(G(\boldsymbol{z})) D(G(z))越小,即判别器越能够正确区分虚假样本,将其标为False;因此有 max ⁡ D \max _{D} maxD

再来看生成器G的"损失函数"。到了训练生成器G的阶段,此时判别器D固定。如果G更强,那么判别器会进行误判,此时 D ( G ( z ) ) D(G(\boldsymbol{z})) D(G(z))会变大, E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] Ezpz(z)[log(1D(G(z)))]更接近于零,即整个式子的值会更小;因此有 min ⁡ G \min _{G} minG

拓展阅读:训练正常&异常的GAN损失函数loss变化应该是怎么样的

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐