本笔记基于 deeplearning.ai 的 Generative Adversarial Networks (GANs) 专项课程

1. 模式坍塌(Mode collapse)

模式(mode)是特征分布中的峰值。一般来说,现实世界中的分布中一般存在多种模式,如MINST数据集中的十种数字就是十种模式。模式坍塌(mode collapse)是指GAN产生的样本单一,其认为满足某一分布的结果为true,其他为False,导致以上结果。比方说利用MINST产生手写数字时,生成器陷入一种模式,只产生特定类型的数字而不产生其他数字的状态,即为模式坍塌。

2. BCE存在的问题

随着GAN的训练,会使生成器的分布向真实的分布逼近。但是鉴别器相比生成器来说更好训练,当鉴别器改善的过多时,BCE损失函数会到达一个相对平缓的地区,出现梯度消失问题(vanishing gradients),进而导致生成器的参数很难改善。

3. EMD距离和W-Loss

EMD的全名叫做 Earth Mover’s Distance,可以解决BCE损失函数中的梯度消失问题。EMD距离的大小与距离和搬运的次数有关。之所以EMD能够解决梯度消失问题,是因为用它构件的损失函数的梯度不会为0。与之前鉴别器所给出的相似程度(概率,在0-1之间)不同,EMD给出的是对于真假之间相似性的评分,这也就是为什么这里的鉴别器叫做评分器(critic)的原因。

原生GAN中的训练鉴别器时的成本函数可以写为:

min ⁡ d max ⁡ g − [ E ( log ⁡ ( d ( x ) ) ) + E ( 1 − log ⁡ ( d ( g ( z ) ) ) ) ] \min\limits_{d} \max\limits_{g} -[E(\log (d(x))) + E(1-\log (d(g(z))))] dmin​gmax​−[E(log(d(x)))+E(1−log(d(g(z))))]

W-Loss的形式与其类似,可以写为:

min ⁡ g max ⁡ c E ( c ( x ) ) − E ( c ( g ( z ) ) ) \min\limits_{g} \max\limits_{c} E(c(x)) - E(c(g(z))) gmin​cmax​E(c(x))−E(c(g(z)))

在更新评论器时,要尽量使损失函数较大,也即真的越真,假的越假;在更新生成器时,要尽量使损失函数较小,也即让生成器的分布更加接近真实分布。如下图所示,之前鉴别器的输出是0-1之间的某个值,存在梯度消失问题,但是现在评论器的输出可以是任意值,不存在梯度消失问题。

4. 1-L连续

当应用W-Loss时,评论器需要满足1-L连续条件,这个条件保证W-Loss能够有效的近似EMD。1-L条件的数学表达式为 ∣ ∣ ∇ f ( x ) ∣ ∣ 2 ≤ 1 ||\nabla f(x)||_2\leq1 ∣∣∇f(x)∣∣2​≤1。满足这种条件的方法是使用正则化技术进行梯度惩罚:在原来的损失函数后加一个正则项来保证梯度始终在1附近。完整的数学表达式如下。

min ⁡ g max ⁡ c E ( c ( x ) ) − E ( c ( g ( z ) ) ) + λ E ( ∣ ∣ ∇ c ( x ^ ) ∣ ∣ 2 − 1 ) 2 \min\limits_{g} \max\limits_{c} E(c(x)) - E(c(g(z)))+\lambda E(||\nabla c(\hat{x})||_2-1)^2 gmin​cmax​E(c(x))−E(c(g(z)))+λE(∣∣∇c(x^)∣∣2​−1)2

其中 x ^ \hat{x} x^为真实图像和假图像的加权和,表达式为 x ^ = ϵ x + ( 1 − ϵ ) g ( z ) \hat{x}=\epsilon x+(1-\epsilon)g(z) x^=ϵx+(1−ϵ)g(z), ϵ \epsilon ϵ为对应的权值。

[GAN学习笔记] 基础GAN(三)——WGAN相关推荐

  1. Spring Boot学习笔记-基础(2)

    Spring Boot学习笔记-基础(2) Spring Boot 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – st ...

  2. [GAN学习系列2] GAN的起源

    本文大约 5000 字,阅读大约需要 10 分钟 这是 GAN 学习系列的第二篇文章,这篇文章将开始介绍 GAN 的起源之作,鼻祖,也就是 Ian Goodfellow 在 2014 年发表在 ICL ...

  3. JavaScript 学习笔记(第三天)

    JavaScript 学习笔记(第三天) 一.数组 1.1.数组的基础 1.2.数据类型分类 1.3.创建数组 1.3.1.字面量创建一个数组 1.3.2.内置构造函数创建数组 1.4.数组的基本操作 ...

  4. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  5. GAN学习总结一 GAN基本概念理解

    GAN学习总结一GAN基本概念理解 ​ GAN(Generative Adversarial Network)生成式对抗网络,由Ian Goodfellow 首先提出,是近两年来最热门的东西,仿佛什么 ...

  6. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  7. c语言/c++转Java学习笔记---基础问题

    c语言/c++转Java学习笔记---基础问题 1.java注释 2.数组的定义和使用 定义 使用 3.类 4.this 的使用 5.继承 6.super的使用 7.包 8.修饰符 成员的访问控制符( ...

  8. MySQL学习笔记-基础篇2

    MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...

  9. 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)

    Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...

最新文章

  1. 自制机械臂,能给葡萄缝针的那种,成本1万块,网友:能把脑子开源一下?
  2. 常用 CSS 选择器
  3. RHEL7升级openssh7.4p1教程
  4. sklearn 相关性分析_人工智能和大数据的骨架支点—— 机器学习之相关性分析
  5. Android视图组成View
  6. Java中的责任链模式
  7. 重新设定mysql密码~,网上方法都是,这里选一个。
  8. firebase使用_如何开始使用Firebase Hosting
  9. 计算机网络课程优秀备考PPT之第一章概述(一)
  10. 物流广告收入实现高速增长 国际投行看好京东转型潜力
  11. matlab 深度学习环境配置
  12. pano2vr 制作交互热点模板时常显示文字
  13. 辽宁省计算机设计大赛三等奖英语,我校在2018年辽宁省大学生计算机设计大赛中取得佳绩...
  14. [开发]resin+spring+struts配搭在线上常见的三个问题
  15. Python爬虫《自动化学报》数据爬取与数据分析
  16. [培训-DSP快速入门-3]:C54x DSP内存资源与内存空间分布
  17. maya2018英文翻译_maya2018英文怎么切换中文?
  18. 乔布斯的创新之道:换一种思考方式
  19. 跟着大宇学Redis--------目录帖
  20. 刷机提示图像和设备不匹配_安卓怎么刷机 安卓手机刷机教程【详解】

热门文章

  1. Dubbo之服务导入流程解析
  2. Bugku 哥哥的秘密
  3. 【西祠日志】【17】初识AngularJS,下一代Web应用的前端
  4. 20130723 上海OOW第二日
  5. Windows软件推荐
  6. 如何快速搭建公司网站?
  7. 工作日志----统一工号补充了啦
  8. Oracle删除数据非常慢
  9. 【解释比较形象好理解】你稀里糊涂学的算法复杂度,原来这么简单!
  10. 数据库中的三种完整性