GAN损失函数的理想取值是什么?附Goodfellow原版GAN损失函数公式
GAN损失函数的理想取值是什么?
嘿,这个问题问到点子上了!咱们从Goodfellow最初提出的原始GAN损失入手,一步步拆解它的理想状态取值。
首先先明确原始GAN的损失定义:
- 判别器损失:
D_loss = - log[D(X)] - log[1 - D(G(Z))],判别器的目标是最小化这个损失 - 生成器损失:
G_loss = - log[D(G(Z))],生成器的目标是最小化这个损失
这里的X是真实训练样本,Z是输入生成器的噪声,D(.)是判别器的输出(对输入样本是真实样本的置信度,范围0到1),G(.)是生成器生成的假样本。
理想状态:纳什均衡
当GAN训练到纳什均衡状态时,生成器和判别器都无法再通过调整自身参数来降低损失,这就是我们要的理想状态。此时满足两个核心条件:
- 生成器生成的样本分布
P_G完全等于真实样本分布P_data,也就是说生成的假样本和真样本没有任何区别 - 判别器对任何输入(不管是真实样本还是生成样本)的输出都是
0.5——因为它完全分不出真假,只能给出50%的置信度
代入计算理想损失值
把D(X)=0.5和D(G(Z))=0.5代入损失函数:
- 判别器的理想损失:
D_loss = -log(0.5) - log(1-0.5) = -log(0.5) - log(0.5) = 2 * log(2) ≈ 1.386 - 生成器的理想损失:
G_loss = -log(0.5) = log(2) ≈ 0.693
简单来说,这个状态下生成器已经完美复刻了真实数据,判别器彻底失效,这正是GAN训练追求的最终目标——生成足以以假乱真的样本。
内容的提问来源于stack exchange,提问作者Vinay Joshi




