学习记录(四)Theory behind GAN
Generator:
x:an image(a high-dimensional vector) 目标是找到这个distribution.
在GAN之前,找一个Model去Maximum Likelihood Estimation:
- Given a data distribution Pdata(x)
- 找到一个 distribution PG(x;θ)
找到一个θ使得 PG(x;θ) 接近 Pdata(x). - 从 Pdata(x) 中采样得到 {x`,x2,…,xm}
- 对每个x计算PG(xi;θ)
- 将他们相乘得到:
找到θ*使得likelihood最大。
Maximum Likelihood Estimation = Minimize KL Divergence.
A generator G is a network. 这个 network 定义了一个概率分布PG.
Div 是 PG 和 Pdata 之间的 divergence.
Discriminator:
从 PG 和 Pdata 里面sample。 从 Pdata 里面sample:
从 PG 里面sample:
区分这两个:
找到使 PG 和 Pdata 之间差别最小的Generator。
找到使 Discriminator 能最好的区分(large divergence) 的 Discriminator。即V最大,V是使D得分高,G得分低的函数。
下面证明V函数:
- 给定G,找到一个D*来最大化V。
对该式子进行化简积分:
- 给定x,转换为找到一个D使得下面式子取得最大值:(即积分里的每一项都分开算,其中D(x)可以取不同的函数)
经过一系列的不算复杂的数学运算后得到:
将其带入V可得:
经过一系列也不太复杂的变换后可得:
综上所述,将maxV带入可得:
对于不同的G有不同的V,对应有不同的D使得其对应的V最大,在所有的D里面找到一个D使得V最大化。如图所示,G3中的D使得V最小。故G*=G3.(对上面这个式子的解释)
图中的红点所对应的高即为 PG 和 Pdata 之间的divergence。即:
其中的Div即为红点对应的高,即maxV(G,D).
对于GAN,maxV(G,D)对应的discriminator网络的训练,argmin对应的就是generator的训练。 故训练过程总结如下:
- 初始化generator和discriminator
- 在每个迭代周期:
step 1:固定generator G,更新discriminator D. step 2:固定discriminator D,更新generator G.
Algorithm 实现: 在不同的G时分别进行maxV,得到最好的D,再固定这个D,进行Gradient Descent 来获得最好的G。
不停的更换G,去寻找最小的divergence(即红点对应的高,PG 和 Pdata 之间的divergence)
在实际计算中,对于maxV的计算:
把每个采样得到的x带入,然后取最大值。
再次回顾总的算法:
首先是 discriminator 的训练:
在训练generator时,由于第一项跟generator无关,故可以不考虑它。
由于log(1-D(x))一开始是0,不太好,故将其翻转:
将上式变换为:
上面那个叫做Minimac GAN(MMGAN),下面这个叫做Non-saturating GAN(NSGAN).
完结 撒花????? 吃饭去啦啦啦啦
|