我已经有两年 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散度)
。如上,我们将下式
变为
之所以可以这么变换,是因为后面的这项与 一点关系都没有。
而上式正好为
OK,那么现在的问题是: 是高斯分布的话,存在很多局限性。 不是高斯分布的话,怎么求极大似然估计呢?
How to define a general P_G?
如上,我们现在要找一个 Generator ,达成
与
的KL散度最小。
但问题是,我们不知道
的公式,因此无法直接计算。
如上的
公式,如果:
- x 是从 data 中来的,那么我们希望 越大越好;
- x 是从 中生成出来的,那么我们希望 越小越好。
那实际上,在训练时就可以使用下式达到上述目标:
此外,上式与 KL 散度是直接关联的。
如上图,大的散度让 D(x) 更容易做分辨真假的工作。
max V(G,D)
如上, G 固定,找一个 D 使 V 最大。
注意有一个假设:
可以是任何函数,可以产生任何值。
接下来,设置代数如上,进行微分。
接下来,将极大值点带回 V 。然后为了接近 KL 散度的形式,进行一些整理,如红字。
发现,实际上后面的项就是 Jensen-Shannon divergence 。
Algorithm
于是,我们的总目标就如上图。图中下部分三个坐标轴中,横坐标代表选择某个 Discriminator 。红点代表 D 会努力接近的部分。但是 G 会让关系来到
。因为这样,G 才达到自己的目标。这像是一种博弈
。
依次训练 G,D 并且循环,我个人理解为一种博弈均衡解的寻找。
如上,在优化 G 时,这个
其实也是可以微分的。我们之前学过 maxout
激活函数。
因此,如上,我们可以进行迭代。类似包络定理
?
但是,应注意,改变 G 后,可能会令 D 陷入局部最优。
如上,因此注意,每次不应该把 G 更新太多。
In practice …
我们在实际中进行的优化函数如上。而这是实际上就是一个二分类问题。
因此,最后总结起来,算法如上。注意,在 G 的更新中,同样使用该更新式,但是目标变为最小化
。式子的前一项与 G 无关,因此不管。并且,不能更新 G 太多,因此只更新 1 次每一步。并且,实际情况中,很难收敛。
Objective Function for Generator in Real Implementation
如上,还可以将目标中
改为
,让初始的下降速度变快。但实际上,二者差别不大。
Intuition
这个例子中,生成的数据分布逐渐接近真实数据分布,导致 Discriminator 坏掉,而此时生成的数据就很接近真实值了。
Question?
如上,本节课的内容(参考自 Ian Goodfellow)与图中 Yann Lecun 的幻灯片中是有些矛盾的。Yann Lecun 认为 Discriminator 应该反应数据的分布,而非烂掉。
到底谁是对的呢?目前尚无定论。
或许我们可以通过实验理解:训练完的 GAN ,其 Discriminator 没有烂掉,也不完全反应数据分布。