GAN的损失函数

这篇具有很好参考价值的文章主要介绍了GAN的损失函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.GAN

gan损失函数,深度学习,生成对抗网络,人工智能,深度学习
在训练过程中,生成器和判别器的目标是相矛盾的,并且这种矛盾可以体现在判别器的判断准确性上。生成器的目标是生成尽量真实的数据,最好能够以假乱真、让判别器判断不出来,因此生成器的学习目标是让判别器上的判断准确性越来越低;相反,判别器的目标是尽量判别出真伪,因此判别器的学习目标是让自己的判别准确性越来越高

当生成器生成的数据越来越真时,判别器为维持住自己的准确性,就必须向辨别能力越来越强的方向迭代。当判别器越来越强大时,生成器为了降低判别器的判断准确性,就必须生成越来越真的数据。在这个奇妙的关系中,判别器判断的准确性由GAN论文中定义的特殊交叉熵 V V V来衡量,判别器与生成器共同影响交叉熵 V V V,同时训练、相互内卷,对该交叉熵的控制时此消彼长的,这是真正的零和博弈。

2. 特殊交叉熵 V V V

在生成器与判别器的内卷关系中,GAN的特殊交叉熵公式如下:
V ( D , G ) = 1 m ∑ i = 1 m [ log ⁡ D ( x i ) + log ⁡ ( 1 − D ( G ( z i ) ) ) ] V(D,G)=\frac1m\sum_{i=1}^{m}[\log D(x_i) +\log(1-D(G(z_i)))] V(D,G)=m1i=1m[logD(xi)+log(1D(G(zi)))]
其中,字母 V V V是原始GAN论文中指定用来表示该交叉熵的字母,对数 log ⁡ \log log的底数为自然底数 e e e m m m表示共有 m m m个样本,因此以上表达式是全部样本交叉的均值表达式。
除此之外, x i x_i xi表示任意真实数据, z i z_i zi与真实数据相同结构的任意随机数据, G ( z i ) G(z_i) G(zi)表示在生成器中基于 z i z_i zi生成的假数据,而 D ( x i ) D(x_i) D(xi)表示判别器在真实数据 x i x_i xi上判断出的结果, D ( G ( z i ) ) D(G(z_i)) D(G(zi))表示判别器在假数据 G ( z i ) G(z_i) G(zi)上判断出的结果,其中 D ( x i ) D(x_i) D(xi) D ( G ( z i ) ) D(G(z_i)) D(G(zi))都是样本为“真”的概率,即标签为 1 1 1的概率。

在原始论文中,这一交叉熵被认为是一种“损失”,但它有两个特殊之处:

  • 不同于二分类交叉熵等常见的损失函数,损失 V V V上不存在最小值,反而存在最大值。具体来看, D ( x i ) D(x_i) D(xi) D ( G ( z i ) ) D(G(z_i)) D(G(zi))都是概率,因此这两个值的范围都在 ( 0 , 1 ) (0,1) (0,1)之间。对于底数为 e e e的对数函数来说,在定义域为 ( 0 , 1 ) (0,1) (0,1)之间意味着函数的值为 ( − ∞ , 0 ) (-\infty,0) (,0)。因此理论上来说,损失 V V V的值域也在 ( − ∞ , 0 ) (-\infty,0) (,0)
  • 损失 V V V在判别器的判别能力最强时达到最大值,这就是说判别器判断得越准确时,损失反而越大,这违背我们对普通二分类网络中的损失函数的期待。但我们从判别器和生成器角度分别来看待公式 V V V,则可以很快理解这一点。

不难发现,在 V V V的表达式中,两部分对数都与判别器 D D D有关,而只有后半部分的对数与生成器 G G G有关。因此我们可以按如下方式分割损失函数:
对判别器:
L o s s D = 1 m ∑ i = 1 m [ log ⁡ D ( x i ) + log ⁡ ( 1 − D ( G ( z i ) ) ) ] Loss_D=\frac1m\sum_{i=1}^m[\log D(x_i) +\log(1-D(G(z_i)))] LossD=m1i=1m[logD(xi)+log(1D(G(zi)))]
从判别器的角度来看,由于判别器希望自己尽量能够判断正确,而输出概率又是“数据为真”的概率,所以最佳情况就是所有的真实样本上的输出 D ( x i ) D(x_i) D(xi)都无比接近 1 1 1,而所有的假样本上的输出 D ( G ( z i ) ) D(G(z_i)) D(G(zi))都无比接近 0 0 0。因此对判别器来说,最佳损失值是:
L o s s D = 1 m ∑ i = 1 m [ log ⁡ D ( x i ) + log ⁡ ( 1 − D ( G ( z i ) ) ) ] = 1 m ∑ i = 1 m [ log ⁡ 1 + log ⁡ ( 1 − 0 ) ] = 0 Loss_D=\frac1m\sum_{i=1}^m[\log D(x_i) +\log(1-D(G(z_i)))]= \frac1m\sum_{i=1}^m[\log 1+\log (1-0)]= 0 LossD=m1i=1m[logD(xi)+log(1D(G(zi)))]=m1i=1m[log1+log(10)]=0
这说明判别器希望以上损失 L o s s D Loss_D LossD越大越好,且最大值理论上可达 0 0 0,且判别器追求大 L o s s D Loss_D LossD的本质是令 D ( x ) D(x) D(x)接近 1 1 1,令 D ( G ( z ) ) D(G(z)) D(G(z))接近 0 0 0。不难发现,对判别器而言, V V V更像是一个存在上限的积极的指标(比如准确率)。

而从生成器的角度来看,生成器无法影响 D ( x i ) D(x_i) D(xi),只能影响 D ( G ( z i ) ) D(G(z_i)) D(G(zi)),因此只有损失的后半段与生成器相关。因此对生成器:
L o s s G = 1 m ∑ i = 1 m [ 常数 + log ⁡ ( 1 − D ( G ( z i ) ) ) ] Loss_G=\frac1m\sum_{i=1}^m[常数+\log(1-D(G(z_i)))] LossG=m1i=1m[常数+log(1D(G(zi)))]
生成器的目标是令输出的数据越真越好,最好让判别器完全判断不出,因此生成器希望 D ( G ( z i ) ) D(G(z_i)) D(G(zi))越接近 1 1 1越好。因此对生成器来说,最佳损失是(去掉常数项):
L o s s G = 1 m ∑ i = 1 m log ⁡ ( 1 − D ( G ( z i ) ) ) = log ⁡ ( 1 − 1 ) = − ∞ Loss_G=\frac1m\sum_{i=1}^m\log(1-D(G(z_i)))= \log(1-1)= -\infty LossG=m1i=1mlog(1D(G(zi)))=log(11)=
这说明生成器希望以上损失 L o s s G Loss_G LossG越小越好,且最小理论值可达负无穷,且生成器追求小 L o s s G Loss_G LossG的本质是令 D ( G ( z ) ) D(G(z)) D(G(z))接近 1 1 1。对生成器而言, V V V更像是一个损失,即算法表现越好,该指标的值越低。从整个生成对抗网络的角度来看,我们(使用者)的目标与生成器的目标相一致,因此对我们而言, V V V被定义为损失,它应该越低越好。

在原始论文当中,该损失 V V V被表示为如下形式:
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ P d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ P z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min \limits_G \max \limits_D V(D, G)=\mathbb{E}_{x \sim{P_{data}} (x)} [\log D(x)] + \mathbb{E}_{z \sim{P _{z}}(z)}[\log (1 - D(G(z)))] GminDmaxV(D,G)=ExPdata(x)[logD(x)]+EzPz(z)[log(1D(G(z)))]
即先从判别器的角度令损失最大化,又从生成器的角度令损失最小化,即可让判别器和生成器在共享损失的情况下实现对抗。其中 E \mathbb{E} E表示期望,第一个期望 E x ∼ P d a t a ( x ) [ log ⁡ D ( x ) ] \mathbb{E}_{x \sim{P_{data}} (x)} [\log D(x)] ExPdata(x)[logD(x)]是所有 x x x都是真实数据时 log ⁡ D ( x ) \log D(x) logD(x)的期望;第二个期望 E z ∼ P z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{z \sim{P _{z}}(z)}[\log (1 - D(G(z)))] EzPz(z)[log(1D(G(z)))]是所有数据都是生成数据时 log ⁡ ( 1 − D ( G ( z ) ) ) \log (1 - D(G(z))) log(1D(G(z)))的期望。当真实数据、生成数据的样本点固定时,期望就等于均值。
如此,通过共享以上损失函数,生成器与判别器实现了在训练过程中互相对抗, min ⁡ G max ⁡ D V ( D , G ) \min \limits_G \max \limits_D V(D, G) GminDmaxV(D,G)的本质就是最小化 L o s s G Loss_G LossG的同时最大化 L o s s D Loss_D LossD。并且,在最开始训练时,由于生成器生成的数据与真实数据差异很大,因此 D ( x i ) D(x_i) D(xi)应该接近 1 1 1 D ( G ( z i ) ) D(G(z_i)) D(G(zi))应该接近 0 0 0。理论上来说,只要训练顺利,最终 D ( x i ) D(x_i) D(xi) D ( G ( z i ) ) D(G(z_i)) D(G(zi))都应该非常接近 0.5 0.5 0.5,但实际上这样的情况并不常见。


B站up:菜菜文章来源地址https://www.toymoban.com/news/detail-801587.html

到了这里,关于GAN的损失函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Pytorch深度学习实战】(10)生成对抗网络(GAN)

     🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】 ​  🖍foreword ✔说

    2023年04月08日
    浏览(52)
  • 深度学习7:生成对抗网络 – Generative Adversarial Networks | GAN

    生成对抗网络 – GAN 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频。我们手机里的照片处理软件中就会使用到它。 目录 生成对抗网络 GAN 的基本原理 大白话版本 非大白话版本 第一阶段:固定「判别器D」,训练「生成器G」 第二阶段:固定

    2024年02月11日
    浏览(54)
  • PyTorch深度学习实战(31)——生成对抗网络(Generative Adversarial Network, GAN)

    生成对抗网络 ( Generative Adversarial Networks , GAN ) 是一种由两个相互竞争的神经网络组成的深度学习模型,它由一个生成网络和一个判别网络组成,通过彼此之间的博弈来提高生成网络的性能。生成对抗网络使用神经网络生成与原始图像集非常相似的新图像,它在图像生成中应用

    2024年01月22日
    浏览(47)
  • 深度学习进阶篇[9]:对抗生成网络GANs综述、代表变体模型、训练策略、GAN在计算机视觉应用和常见数据集介绍,以及前沿问题解决

    【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、

    2024年02月08日
    浏览(96)
  • 大数据机器学习GAN:生成对抗网络GAN全维度介绍与实战

    本文为生成对抗网络GAN的研究者和实践者提供全面、深入和实用的指导。通过本文的理论解释和实际操作指南,读者能够掌握GAN的核心概念,理解其工作原理,学会设计和训练自己的GAN模型,并能够对结果进行有效的分析和评估。 生成对抗网络(GAN)是深度学习的一种创新架

    2024年02月03日
    浏览(38)
  • 适合小白学习的GAN(生成对抗网络)算法超详细解读

    “GANs are \\\'the coolest idea in deep learning in the last 20 years.\\\' ” --Yann LeCunn, Facebook’s AI chief   今天我们就来认识一下这个传说中被誉为过去20年来深度学习中最酷的想法——GAN。  GAN之父的主页: http://www.iangoodfellow.com/  GAN论文地址: https://arxiv.org/pdf/1406.2661.pdf 目录 前言  📢一、

    2024年02月02日
    浏览(46)
  • 学习笔记:Pytorch利用MNIST数据集训练生成对抗网络(GAN)

    2023.8.27        在进行深度学习的进阶的时候,我发了生成对抗网络是一个很神奇的东西,为什么它可以“将一堆随机噪声经过生成器变成一张图片”,特此记录一下学习心得。         2014年,还在蒙特利尔读博士的Ian Goodfellow发表了论 文《Generative Adversarial Networks》(网址

    2024年02月10日
    浏览(40)
  • GAN!生成对抗网络GAN全维度介绍与实战

    本文为生成对抗网络GAN的研究者和实践者提供全面、深入和实用的指导。通过本文的理论解释和实际操作指南,读者能够掌握GAN的核心概念,理解其工作原理,学会设计和训练自己的GAN模型,并能够对结果进行有效的分析和评估。 作者 TechLead,拥有10+年互联网服务架构、AI产

    2024年02月12日
    浏览(46)
  • 【计算机视觉|生成对抗】生成对抗网络(GAN)

    本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题: Generative Adversarial Nets 链接:Generative Adversarial Nets (nips.cc) 我们提出了一个通过**对抗(adversarial)**过程估计生成模型的新框架,在其中我们同时训练两个模型: 一个生成模型G,捕获数据分布 一个判别模型

    2024年02月12日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包