我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

这是我的李宏毅老师 GAN 系列第4篇笔记,GAN 系列:

  • 1:Basic Idea
  • 2:Conditional GAN
  • 3:Unsupervised Conditional Generation

本节内容综述

  1. 今天讨论的是GAN原始文章的一些解释,可能会与之前的讨论有些冲突,这也是至今为解释的问题。
  2. 首先我们的数据都是高维空间中的点,见 Generation 。之前讨论过,对于概率分布,我们可以使用极大似然估计来拟合。发现,还可理解为目标值为求分布最小KL 散度。问题是,拟合的分布未必是高斯分布的(或者说我们拟合的分布是不知道公式无法求散度的),那么该怎么估计呢?
  3. 承接 2 ,这就是 GAN 的神奇之处,我们可以用 Discriminator 来接近、评价“散度”这个指标。见How to define a general P_G?
  4. How to define a general P_G? 我们假设了 生成数据与真是数据分布散度越大,D(x)越好分辨真伪(或者说,原论文中D(x)的更新目标设定是成立的)。下面从数学上来证明。见 max V(G,D)。发现,实际上这个更新式就在最大化 JSD (Jensen-Shannon divergence)。
  5. 而基于上述结论,实际上就是在做 G 与 D 的极大极小博弈。见 Algorithm 。
  6. 实际上怎么做的 In practice … 。
  7. 目标函数在实际应用中有一些改动 Objective Function for Generator in Real Implementation 。
  8. 最后用直白的方式总结一下 Intuition
  9. 引出问题: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​∫X​Pdata​(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​∫X​Pdata​(x)logPG​(x;θ)dx−∫x​Pdata​(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θmin​KL(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∗=argmax⁡DV(D,G)D^* = arg\max_D V(D,G)D∗=argDmax​V(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 时,这个 max⁡D\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相关推荐

  1. 【李宏毅2020 ML/DL】P1 introduction

    [李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...

  2. 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...

  3. 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  4. 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...

  5. 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  6. 【李宏毅2020 ML/DL】P15 Why Deep-

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...

  7. 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM

    李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...

  8. 【李宏毅2020 ML/DL】P60-61 Unsupervised Learning - Deep Generative Model

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  9. 【李宏毅2020 ML/DL】P80 Generative Adversarial Network | Feature Extraction

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 这是我的李宏毅老师 GAN 系列第7篇笔记,GAN 系列: 1:Basic Idea 2:Conditiona ...

最新文章

  1. 2021暑假实习-SSM超市积分管理系统-day06笔记
  2. Linux发行版 (列表)
  3. 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
  4. web开发中的计算机网络知识——应用层
  5. Mac电脑优化工具箱MacCleaner PRO
  6. ubuntu18基本软件安装
  7. ✖ subject may not be empty [subject-empty]
  8. js中的getDate() getMonth() getFullYear()方法;js如何获取当前日期/年月日
  9. learning and enjoying
  10. 5分钟搞定内网穿透工具-ngrok
  11. 嗖一下【基于命令行交互的文件搜索工具】实现思路
  12. 王者荣耀注销服务器的流程,王者荣耀账号怎么永久注销 王者荣耀注销账号流程介绍...
  13. 虹软:中小企业该如何拥抱 AI
  14. 保险的第一性原理——新保险
  15. CCF认证考试 202012-5星际旅行 (100分)(线段树)
  16. winPE下的PECMD命令详解 -----PECMD.INI 文件配置(2)
  17. 《高频电子线路》课程参考文献
  18. linux判断目录是否存在命令,linux shell 中判断文件、目录是否存在的方法
  19. 计算机科学与技术密码学是啥意思,密码学是什么意思
  20. Android App 开发技术图谱

热门文章

  1. 【PL/SQL】开发程序
  2. 苹果审核之遇到IPV6问题被拒的解决方法
  3. visual studio 容器工具首次加载太慢 vsdbg\vs2017u5 exists, deleting 的解决方案
  4. XSS 跨站脚本攻击 的防御解决方案
  5. 键盘快捷键将剪贴板内容粘贴到命令提示符窗口(Win XP)[关闭]
  6. win11如何设置始终以管理员身份运行 windows11设置始终以管理员身份运行的方法步骤
  7. activiti配置文件activiti.cfg.xml
  8. 维护人员工具_确保丝印机顺畅使用的维护事项有哪些?
  9. aspen和python一起使用_python-将$cond语句与$project一起使用并在PyMongo中聚合
  10. html在文本框选中后在表格中选中,excel表格出现文本框的解决方法步骤