学习记录(四)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).  
完结 撒花????? 吃饭去啦啦啦啦 
                
                
                
        
    
 
 |