[GAN学习笔记] 基础GAN(三)——WGAN
本笔记基于 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))))] dmingmax−[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))) gmincmaxE(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 gmincmaxE(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相关推荐
- Spring Boot学习笔记-基础(2)
Spring Boot学习笔记-基础(2) Spring Boot 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – st ...
- [GAN学习系列2] GAN的起源
本文大约 5000 字,阅读大约需要 10 分钟 这是 GAN 学习系列的第二篇文章,这篇文章将开始介绍 GAN 的起源之作,鼻祖,也就是 Ian Goodfellow 在 2014 年发表在 ICL ...
- JavaScript 学习笔记(第三天)
JavaScript 学习笔记(第三天) 一.数组 1.1.数组的基础 1.2.数据类型分类 1.3.创建数组 1.3.1.字面量创建一个数组 1.3.2.内置构造函数创建数组 1.4.数组的基本操作 ...
- MySQL学习笔记-基础篇1
MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...
- GAN学习总结一 GAN基本概念理解
GAN学习总结一GAN基本概念理解 GAN(Generative Adversarial Network)生成式对抗网络,由Ian Goodfellow 首先提出,是近两年来最热门的东西,仿佛什么 ...
- Redis学习笔记①基础篇_Redis快速入门
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- c语言/c++转Java学习笔记---基础问题
c语言/c++转Java学习笔记---基础问题 1.java注释 2.数组的定义和使用 定义 使用 3.类 4.this 的使用 5.继承 6.super的使用 7.包 8.修饰符 成员的访问控制符( ...
- MySQL学习笔记-基础篇2
MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...
- 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)
Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...
最新文章
- 自制机械臂,能给葡萄缝针的那种,成本1万块,网友:能把脑子开源一下?
- 常用 CSS 选择器
- RHEL7升级openssh7.4p1教程
- sklearn 相关性分析_人工智能和大数据的骨架支点—— 机器学习之相关性分析
- Android视图组成View
- Java中的责任链模式
- 重新设定mysql密码~,网上方法都是,这里选一个。
- firebase使用_如何开始使用Firebase Hosting
- 计算机网络课程优秀备考PPT之第一章概述(一)
- 物流广告收入实现高速增长 国际投行看好京东转型潜力
- matlab 深度学习环境配置
- pano2vr 制作交互热点模板时常显示文字
- 辽宁省计算机设计大赛三等奖英语,我校在2018年辽宁省大学生计算机设计大赛中取得佳绩...
- [开发]resin+spring+struts配搭在线上常见的三个问题
- Python爬虫《自动化学报》数据爬取与数据分析
- [培训-DSP快速入门-3]:C54x DSP内存资源与内存空间分布
- maya2018英文翻译_maya2018英文怎么切换中文?
- 乔布斯的创新之道:换一种思考方式
- 跟着大宇学Redis--------目录帖
- 刷机提示图像和设备不匹配_安卓怎么刷机 安卓手机刷机教程【详解】