码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • generative-model [ From GAN to WGAN ]


    目录

    Kullback–Leibler and Jensen–Shannon Divergence

    Generative Adversarial Network (GAN)

    What is the optimal value for D?

    What is the global optimal?

    What does the loss function represent?

    Problems in GANs

    Hard to achieve Nash equilibrium

    Low dimensional supports

    Vanishing gradient

    Mode collapse

    Lack of a proper evaluation metric

    Improved GAN Training

    Wasserstein GAN (WGAN)

    What is Wasserstein distance?

    Why Wasserstein is better than JS or KL divergence?

    Use Wasserstein distance as GAN loss function

    Example: Create New Pokemons!


    生成对抗网络 (GAN) 在许多生成任务中显示出出色的结果,以复制现实世界的丰富内容,如图像、人类语言和音乐。它受到博弈论的启发:两个模型,一个生成器和一个批评者,在相互竞争的同时使彼此变得更强大。然而,训练GAN模型是相当具有挑战性的,因为人们面临着训练不稳定或无法收敛等问题。

    在这里,我想解释生成对抗网络框架背后的数学原理,为什么很难训练,最后介绍一个旨在解决训练困难的GAN的修改版本。

    Kullback–Leibler and Jensen–Shannon Divergence

    在我们开始仔细研究 GAN 之前,让我们首先回顾一下量化两个概率分布之间相似性的指标。

    一些人认为(Huszar,2015)GANs取得巨大成功背后的一个原因是将损失函数从传统最大似然方法中的不对称KL散度转换为对称JS散度。

    Generative Adversarial Network (GAN)

    GAN由两个模型组成:

    • 鉴别器D:估计给定样本来自真实数据集的概率。它充当评论家,并经过优化以区分假样品和真实样本。
    • 发电机G:输出给定噪声变量输入的合成样本z (z带来潜在的产出多样性)。它被训练来捕获真实的数据分布,以便其生成样本可以尽可能真实,或者换句话说,可以欺骗鉴别器提供高概率。

    这两个模型在训练过程中相互竞争:

    生成器G极力欺骗鉴别者,而批评者模特D正在努力不被骗。

    两种模型之间这种有趣的零和博弈激励双方改进其功能。

    What is the optimal value for D?

    What is the global optimal?

    What does the loss function represent?

    Problems in GANs

    尽管GAN在逼真的图像生成方面取得了巨大的成功,但培训并不容易;众所周知,该过程缓慢且不稳定。

    Hard to achieve Nash equilibrium

    Low dimensional supports

     

    Vanishing gradient

    因此,训练GAN面临两难境地:

    • 如果鉴别器行为不佳,则生成器没有准确的反馈,损失函数无法代表现实。
    • 如果鉴别器做得很好,损失函数的梯度会下降到接近零,学习变得非常慢甚至卡住。

    这种困境显然能够使GAN培训变得非常艰难。

    Mode collapse

    在训练期间,生成器可能会折叠到始终产生相同输出的设置。这是 GAN 的常见故障情况,通常称为模式崩溃。尽管生成器可能能够欺骗相应的鉴别器,但它无法学习表示复杂的真实世界数据分布,并且被困在一个种类极低的小空间中。

    Lack of a proper evaluation metric

    生成对抗网络并不是天生就有良好的反对函数,可以通知我们训练进度。如果没有一个好的评估指标,就像在黑暗中工作一样。没有好的迹象可以告诉何时停止;没有很好的指标来比较多个模型的性能。

    Improved GAN Training

    前五种方法是实现GAN训练更快收敛的实用技术,在“改进训练GAN的技术”中提出。 最后两个在“面向训练生成对抗网络的原则方法”中提出,以解决不相交分布问题。

    (1) Feature Matching

    (2) Minibatch Discrimination

    (3) Historical Averaging

    (4) One-sided Label Smoothing

    馈送鉴别器时,不要提供 1 和 0 标签,而是使用 0.9 和 0.1 等软化值。它被证明可以减少网络的脆弱性。

    (5) Virtual Batch Normalization (VBN)

    每个数据样本都基于固定的数据批次(“参考批次”)进行规范化,而不是在其小批量中。参考批次在开始时选择一次,并在整个训练过程中保持不变。

    (6) Adding Noises.

    (7) Use Better Metric of Distribution Similarity

    Wasserstein GAN (WGAN)

    What is Wasserstein distance?

     

    Why Wasserstein is better than JS or KL divergence?

     

    Use Wasserstein distance as GAN loss function

    Lipschitz continuity?

     

    与原始GAN算法相比,WGAN进行了以下更改:

    • 在注释器功能上的每次梯度更新后,将权重钳制到一个小的固定范围,[−c,c].
    • 使用从瓦瑟斯坦距离派生的新损失函数,不再对数。“鉴别器”模型不是直接的批评者,而是估计真实数据和生成数据分布之间的Wasserstein度量的助手。
    • 根据经验,作者向批评者推荐了RMSProp优化器,而不是像Adam这样可能导致模型训练不稳定的基于动量的优化器。关于这一点,我还没有看到明确的理论解释。

    可悲的是,Wasserstein GAN并不完美。甚至原始WGAN论文的作者也提到“权重裁剪显然是强制执行Lipschitz约束的可怕方法”(哎呀!WGAN仍然存在不稳定的训练,权重裁剪后收敛缓慢(当裁剪窗口太大时)和梯度消失(当裁剪窗口太小时)。

    Gulrajani 等人 2017 年讨论了一些改进,精确地用梯度惩罚代替了重量裁剪。我将把这个问题留到以后的帖子中。

     

    Example: Create New Pokemons!

    笔记摘自Lil'Log

    From GAN to WGANicon-default.png?t=N7T8https://lilianweng.github.io/posts/2017-08-20-gan/

  • 相关阅读:
    安全可靠的文件传输服务助力完成更高效的医疗保健工作(上)
    Flink 命令行参数介绍
    有了这45个小技巧,再也不怕女朋友代码写得烂了!!
    用大白话从宏观的角度聊一聊asm技术和class字节码文件和动态代理的关系,绝对通俗易懂
    畅购商城_第11章_ 订单
    【每日一题】 ~ C 语言中全局变量、局部变量、静态全局变量、静态局部变量有什么区别?
    设计模式之代理模式
    【待补充】【maxim】one-wire / DS2431 开发实例
    MySQL数据库基础:数据类型详解-二进制字符串类型
    【C++】C++11 -- 新功能
  • 原文地址:https://blog.csdn.net/qq_53826699/article/details/132603422
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号