【李宏毅2020 ML/DL】P77 Generative Adversarial Network | Theory behind GAN
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
这是我的李宏毅老师 GAN 系列第4
篇笔记,GAN 系列:
- 1:Basic Idea
- 2:Conditional GAN
- 3:Unsupervised Conditional Generation
本节内容综述
- 今天讨论的是GAN原始文章的一些解释,可能会与之前的讨论有些冲突,这也是至今为解释的问题。
- 首先我们的数据都是高维空间中的点,见 Generation 。之前讨论过,对于概率分布,我们可以使用极大似然估计来拟合。发现,还可理解为目标值为求分布最小KL 散度。问题是,拟合的分布未必是高斯分布的
(或者说我们拟合的分布是不知道公式无法求散度的)
,那么该怎么估计呢? - 承接 2 ,这就是 GAN 的神奇之处,我们可以用 Discriminator 来接近、评价“散度”这个指标。见
How to define a general P_G?
。 - 在
How to define a general P_G?
我们假设了生成数据与真是数据分布散度越大,D(x)越好分辨真伪(或者说,原论文中D(x)的更新目标设定是成立的)
。下面从数学上来证明。见max V(G,D)
。发现,实际上这个更新式就在最大化 JSD (Jensen-Shannon divergence)。 - 而基于上述结论,实际上就是在做 G 与 D 的极大极小博弈。见 Algorithm 。
- 实际上怎么做的 In practice … 。
- 目标函数在实际应用中有一些改动 Objective Function for Generator in Real Implementation 。
- 最后用直白的方式总结一下
Intuition
。 - 引出问题:
Can we consider discriminator as evaluation function?
文章目录
- 本节内容综述
- 小细节
- Generation
- How to define a general P_G?
- max V(G,D)
- Algorithm
- In practice ...
- Objective Function for Generator in Real Implementation
- Intuition
- Question?
小细节
Generation
如图,数据是高维空间中的点。我们希望机器找出数据在高位空间中的分布。
我们可以使用极大似然估计来拟合。
极大似然估计,也可以理解为最小化 KL Divergence(KL散度)
。如上,我们将下式
argmaxθ∫XPdata(x)logPG(x;θ)dxarg\max_{\theta}\int_X P_{data}(x)logP_G (x;\theta)dxargθmax∫XPdata(x)logPG(x;θ)dx
变为
argmaxθ∫XPdata(x)logPG(x;θ)dx−∫xPdata(x)logPdata(x)dxarg\max_{\theta}\int_X P_{data}(x)logP_G (x;\theta)dx-\int_x P_{data}(x)logP_{data}(x)dxargθmax∫XPdata(x)logPG(x;θ)dx−∫xPdata(x)logPdata(x)dx
之所以可以这么变换,是因为后面的这项与PG(x;θ)P_G(x;\theta)PG(x;θ)一点关系都没有。
而上式正好为
argminθKL(Pdata∣∣PG)arg \min_\theta KL(P_{data} || P_G)argθminKL(Pdata∣∣PG)
OK,那么现在的问题是:PGP_GPG是高斯分布的话,存在很多局限性。PGP_GPG不是高斯分布的话,怎么求极大似然估计呢?
How to define a general P_G?
如上,我们现在要找一个 Generator ,达成 PGP_GPG 与 PdataP_{data}Pdata 的KL散度最小。
但问题是,我们不知道 PPP 的公式,因此无法直接计算。
如上的V(G,D)V(G, D)V(G,D)公式,如果:
- x 是从 data 中来的,那么我们希望 D(x)D(x)D(x) 越大越好;
- x 是从 PGP_GPG 中生成出来的,那么我们希望 D(x)D(x)D(x) 越小越好。
那实际上,在训练时就可以使用下式达到上述目标:
D∗=argmaxDV(D,G)D^* = arg\max_D V(D,G)D∗=argDmaxV(D,G)
此外,上式与 KL 散度是直接关联的。
如上图,大的散度让 D(x) 更容易做分辨真假的工作。
max V(G,D)
如上, G 固定,找一个 D 使 V 最大。
注意有一个假设:D(x)D(x)D(x)可以是任何函数,可以产生任何值。
接下来,设置代数如上,进行微分。
接下来,将极大值点带回 V 。然后为了接近 KL 散度的形式,进行一些整理,如红字。
发现,实际上后面的项就是 Jensen-Shannon divergence 。
Algorithm
于是,我们的总目标就如上图。图中下部分三个坐标轴中,横坐标代表选择某个 Discriminator 。红点代表 D 会努力接近的部分。但是 G 会让关系来到 G3G_3G3 。因为这样,G 才达到自己的目标。这像是一种博弈
。
依次训练 G,D 并且循环,我个人理解为一种博弈均衡解的寻找。
如上,在优化 G 时,这个 maxD\max_DmaxD 其实也是可以微分的。我们之前学过 maxout
激活函数。
因此,如上,我们可以进行迭代。类似包络定理
?
但是,应注意,改变 G 后,可能会令 D 陷入局部最优。
如上,因此注意,每次不应该把 G 更新太多。
In practice …
我们在实际中进行的优化函数如上。而这是实际上就是一个二分类问题。
因此,最后总结起来,算法如上。注意,在 G 的更新中,同样使用该更新式,但是目标变为最小化
。式子的前一项与 G 无关,因此不管。并且,不能更新 G 太多,因此只更新 1 次每一步。并且,实际情况中,很难收敛。
Objective Function for Generator in Real Implementation
如上,还可以将目标中 Ex∼PG[log(1−D(x))]E_{x\sim P_G}[log(1-D(x))]Ex∼PG[log(1−D(x))] 改为 Ex∼PG[−log(D(x))]E_{x\sim P_G}[-log(D(x))]Ex∼PG[−log(D(x))] ,让初始的下降速度变快。但实际上,二者差别不大。
Intuition
这个例子中,生成的数据分布逐渐接近真实数据分布,导致 Discriminator 坏掉,而此时生成的数据就很接近真实值了。
Question?
如上,本节课的内容(参考自 Ian Goodfellow)与图中 Yann Lecun 的幻灯片中是有些矛盾的。Yann Lecun 认为 Discriminator 应该反应数据的分布,而非烂掉。
到底谁是对的呢?目前尚无定论。
或许我们可以通过实验理解:训练完的 GAN ,其 Discriminator 没有烂掉,也不完全反应数据分布。
【李宏毅2020 ML/DL】P77 Generative Adversarial Network | Theory behind GAN相关推荐
- 【李宏毅2020 ML/DL】P1 introduction
[李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...
- 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...
- 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P15 Why Deep-
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM
李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...
- 【李宏毅2020 ML/DL】P60-61 Unsupervised Learning - Deep Generative Model
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P80 Generative Adversarial Network | Feature Extraction
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 这是我的李宏毅老师 GAN 系列第7篇笔记,GAN 系列: 1:Basic Idea 2:Conditiona ...
最新文章
- 2021暑假实习-SSM超市积分管理系统-day06笔记
- Linux发行版 (列表)
- 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
- web开发中的计算机网络知识——应用层
- Mac电脑优化工具箱MacCleaner PRO
- ubuntu18基本软件安装
- ✖ subject may not be empty [subject-empty]
- js中的getDate() getMonth() getFullYear()方法;js如何获取当前日期/年月日
- learning and enjoying
- 5分钟搞定内网穿透工具-ngrok
- 嗖一下【基于命令行交互的文件搜索工具】实现思路
- 王者荣耀注销服务器的流程,王者荣耀账号怎么永久注销 王者荣耀注销账号流程介绍...
- 虹软:中小企业该如何拥抱 AI
- 保险的第一性原理——新保险
- CCF认证考试 202012-5星际旅行 (100分)(线段树)
- winPE下的PECMD命令详解 -----PECMD.INI 文件配置(2)
- 《高频电子线路》课程参考文献
- linux判断目录是否存在命令,linux shell 中判断文件、目录是否存在的方法
- 计算机科学与技术密码学是啥意思,密码学是什么意思
- Android App 开发技术图谱
热门文章
- 【PL/SQL】开发程序
- 苹果审核之遇到IPV6问题被拒的解决方法
- visual studio 容器工具首次加载太慢 vsdbg\vs2017u5 exists, deleting 的解决方案
- XSS 跨站脚本攻击 的防御解决方案
- 键盘快捷键将剪贴板内容粘贴到命令提示符窗口(Win XP)[关闭]
- win11如何设置始终以管理员身份运行 windows11设置始终以管理员身份运行的方法步骤
- activiti配置文件activiti.cfg.xml
- 维护人员工具_确保丝印机顺畅使用的维护事项有哪些?
- aspen和python一起使用_python-将$cond语句与$project一起使用并在PyMongo中聚合
- html在文本框选中后在表格中选中,excel表格出现文本框的解决方法步骤