生成对抗网络GAN损失函数loss的简单理解

原始的公式长这样:
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变化应该是怎么样的

  • 26
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
生成对抗网络损失函数是通过对抗训练中的生成器和判别器之间的竞争来定义的。在WGAN中,生成器的损失函数可以通过以下方式计算:g_loss = adverisal_loss(discriminator(gen_imgs), real)。其中,adverisal_loss是判别器的损失函数,gen_imgs是生成器生成的图像,real是真实的图像。生成器的损失函数是通过将生成器生成的图像输入判别器,并将其与真实图像进行比较来计算的。 在WGAN-GP中,还引入了梯度惩罚的方法以替代权值剪裁。梯度惩罚的目的是确保函数在任何位置的梯度都小于1,以避免梯度爆炸和梯度消失的问题。通过在目标函数中添加惩罚项,根据网络的输入来限制对应判别器的输出。具体而言,WGAN-GP使用了梯度惩罚方法来解决WGAN中的问题,其中对判别器的输出进行了限制。 总结起来,生成对抗网络损失函数可以通过对判别器和生成器之间的竞争来定义。在WGAN中,使用了adverisal_loss作为生成器的损失函数,并通过梯度剪裁或梯度惩罚的方法来改进网络的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [对抗生成网络(GAN)中的损失函数](https://blog.csdn.net/L888666Q/article/details/127793598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [生成对抗网络(四)-----------WGAN-GP](https://blog.csdn.net/gyt15663668337/article/details/90271265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值