原始GAN的问题
判别器越好,生成器梯度消失越严重。
当判别器为最优时,最佳生成器的损失函数为
 
     
      
       
        
         2
        
        
         J
        
        
         S
        
        
         
          (
         
         
          
           P
          
          
           r
          
         
         
          ∥
         
         
          
           P
          
          
           g
          
         
         
          )
         
        
        
         −
        
        
         2
        
        
         log
        
        
         
        
        
         2
        
       
       
         2 J S\left(P_{r} \| P_{g}\right)-2 \log 2 
       
      
     2JS(Pr∥Pg)−2log2
 即当判别器为最优时,最小化真实分布
    
     
      
       
        
         P
        
        
         r
        
       
      
      
       P_{r}
      
     
    Pr与生成分布
    
     
      
       
        
         P
        
        
         g
        
       
      
      
       P_{g}
      
     
    Pg之间的JS散度,可以得到最优的生成器。当真实分布
    
     
      
       
        
         P
        
        
         r
        
       
      
      
       P_{r}
      
     
    Pr与生成分布 
    
     
      
       
        
         P
        
        
         g
        
       
      
      
       P_{g}
      
     
    Pg有重叠部分时,最小化其JS散度可以拉近这二个分布。但当真实分布
    
     
      
       
        
         P
        
        
         r
        
       
      
      
       P_{r}
      
     
    Pr与生成分布
    
     
      
       
        
         P
        
        
         g
        
       
      
      
       P_{g}
      
     
    Pg没有重叠部分时,最佳的JS散度固定为
    
     
      
       
        log
       
       
        
       
       
        2
       
      
      
       \log 2
      
     
    log2。此时,不管真实分布
    
     
      
       
        
         P
        
        
         r
        
       
      
      
       P_{r}
      
     
    Pr与生成分布
    
     
      
       
        
         P
        
        
         g
        
       
      
      
       P_{g}
      
     
    Pg相距多远,只要没有重叠部分,JS散度就固定是常数
    
     
      
       
        log
       
       
        
       
       
        2
       
      
      
       \log 2
      
     
    log2,生成器梯度为0,导致梯度消失的问题。
在(近似)最优判别器下,最小化生成器的loss等价于最小化真实分布 P r P_{r} Pr与生成分布 P g P_{g} Pg之间的JS散度,而由于 P r P_{r} Pr与 P g P_{g} Pg几乎不可能有不可忽略的重叠,所以无论它们相距多远JS散度都是常数 log  2 \log 2 log2,最终导致生成器的梯度(近似)为0,梯度消失。
梯度不稳定
生成器损失函数为
    
     
      
       
        
         E
        
        
         
          x
         
         
          ∼
         
         
          
           P
          
          
           g
          
         
        
       
       
        [
       
       
        −
       
       
        log
       
       
        
       
       
        D
       
       
        (
       
       
        x
       
       
        )
       
       
        ]
       
      
      
       \mathbb{E}_{x \sim P_{g}}[-\log D(x)]
      
     
    Ex∼Pg[−logD(x)]
 在最优判别器
    
     
      
       
        
         D
        
        
         ∗
        
       
      
      
       D^{*}
      
     
    D∗下,
 
     
      
       
        
         
          E
         
         
          
           x
          
          
           ∼
          
          
           
            P
           
           
            a
           
          
         
        
        
         
          [
         
         
          −
         
         
          log
         
         
          
         
         
          
           D
          
          
           ∗
          
         
         
          (
         
         
          x
         
         
          )
         
         
          ]
         
        
        
         =
        
        
         K
        
        
         L
        
        
         
          (
         
         
          
           P
          
          
           g
          
         
         
          ∥
         
         
          
           P
          
          
           r
          
         
         
          )
         
        
        
         −
        
        
         2
        
        
         J
        
        
         S
        
        
         
          (
         
         
          
           P
          
          
           r
          
         
         
          ∥
         
         
          
           P
          
          
           g
          
         
         
          )
         
        
        
         +
        
        
         2
        
        
         log
        
        
         
        
        
         2
        
        
         +
        
        
         
          E
         
         
          
           x
          
          
           ∼
          
          
           
            P
           
           
            r
           
          
         
        
        
         
          [
         
         
          log
         
         
          
         
         
          
           D
          
          
           ∗
          
         
         
          (
         
         
          x
         
         
          )
         
         
          ]
         
        
       
       
        \mathbb{E}_{x \sim P_{a}}\left[-\log D^{*}(x)\right]=K L\left(P_{g} \| P_{r}\right)-2 J S\left(P_{r} \| P_{g}\right)+2 \log 2+\mathbb{E}_{x \sim P_{r}}\left[\log D^{*}(x)\right]
       
      
     Ex∼Pa[−logD∗(x)]=KL(Pg∥Pr)−2JS(Pr∥Pg)+2log2+Ex∼Pr[logD∗(x)]
 所以最小化生成器的损失函数等价于最小化
    
     
      
       
        K
       
       
        L
       
       
        
         (
        
        
         
          P
         
         
          g
         
        
        
         ∥
        
        
         
          P
         
         
          r
         
        
        
         )
        
       
       
        −
       
       
        2
       
       
        J
       
       
        S
       
       
        
         (
        
        
         
          P
         
         
          r
         
        
        
         ∥
        
        
         
          P
         
         
          g
         
        
        
         )
        
       
      
      
       K L\left(P_{g} \| P_{r}\right)-2 J S\left(P_{r} \| P_{g}\right)
      
     
    KL(Pg∥Pr)−2JS(Pr∥Pg)
 由于
    
     
      
       
        K
       
       
        L
       
       
        
         (
        
        
         
          P
         
         
          g
         
        
        
         ∥
        
        
         
          P
         
         
          r
         
        
        
         )
        
       
      
      
       K L\left(P_{g} \| P_{r}\right)
      
     
    KL(Pg∥Pr)与
    
     
      
       
        J
       
       
        S
       
       
        
         (
        
        
         
          P
         
         
          r
         
        
        
         ∥
        
        
         
          P
         
         
          g
         
        
        
         )
        
       
      
      
       J S\left(P_{r} \| P_{g}\right)
      
     
    JS(Pr∥Pg)在最小化时矛盾,导致训练时梯度不稳定。
collapse mode,多样性不足
由于KL散度是不对称的衡量,即 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(Pg∥Pr) 与 K L ( P r ∥ P g ) K L\left(P_{r} \| P_{g}\right) KL(Pr∥Pg)存在差别。
- 当 P g ( x ) → 0 P_{g}(x) \rightarrow 0 Pg(x)→0 而 P r ( x ) → 1 P_{r}(x) \rightarrow 1 Pr(x)→1 时, P g ( x ) log  P g ( x ) P r ( x ) → 0 P_{g}(x) \log \frac{P_{g}(x)}{P_{r}(x)} \rightarrow 0 Pg(x)logPr(x)Pg(x)→0 ,对 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(Pg∥Pr) 贡献趋近 0。即生成器没能生成真实的样本,但惩罚很小。
 - 当 P g ( x ) → 1 P_{g}(x) \rightarrow 1 Pg(x)→1 而 P r ( x ) → 0 P_{r}(x) \rightarrow 0 Pr(x)→0 时, P g ( x ) log  P g ( x ) P r ( x ) → + ∞ P_{g}(x) \log \frac{P_{g}(x)}{P_{r}(x)} \rightarrow+\infty Pg(x)logPr(x)Pg(x)→+∞ ,对 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(Pg∥Pr) 贡献趋近正无穷。生成器生成了不真实的样本,惩罚很大。
 
这导致生成器趋向于生成重复的接近真实的样本,避免产生错误,造成样本多样性不足的情况。
Wasserstein距离
Wasserstein距离的定义为:
 
     
      
       
        
         W
        
        
         
          (
         
         
          
           P
          
          
           r
          
         
         
          ,
         
         
          
           P
          
          
           g
          
         
         
          )
         
        
        
         =
        
        
         
          
           inf
          
          
           
          
         
         
          
           γ
          
          
           ∼
          
          
           Π
          
          
           
            (
           
           
            
             P
            
            
             r
            
           
           
            ,
           
           
            
             P
            
            
             g
            
           
           
            )
           
          
         
        
        
         
          E
         
         
          
           (
          
          
           x
          
          
           ,
          
          
           y
          
          
           )
          
          
           ∼
          
          
           γ
          
         
        
        
         [
        
        
         ∥
        
        
         x
        
        
         −
        
        
         y
        
        
         ∥
        
        
         ]
        
       
       
        W\left(P_{r}, P_{g}\right)=\inf _{\gamma \sim \Pi\left(P_{r}, P_{g}\right)} \mathbb{E}_{(x, y) \sim \gamma}[\|x-y\|]
       
      
     W(Pr,Pg)=γ∼Π(Pr,Pg)infE(x,y)∼γ[∥x−y∥]
 
    
     
      
       
        Π
       
       
        
         (
        
        
         
          P
         
         
          r
         
        
        
         ,
        
        
         
          P
         
         
          g
         
        
        
         )
        
       
      
      
       \Pi\left(P_{r}, P_{g}\right)
      
     
    Π(Pr,Pg) 是 
    
     
      
       
        
         P
        
        
         r
        
       
      
      
       P_{r}
      
     
    Pr 和 
    
     
      
       
        
         P
        
        
         g
        
       
      
      
       P_{g}
      
     
    Pg 组合起来的所有可能的联合分布的集合。
 Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近。
Lipschitz连续指的是存在一个常数 
    
     
      
       
        K
       
       
        >
       
       
        0
       
      
      
       K>0
      
     
    K>0 使得定义域内的任意两个元素 
    
     
      
       
        
         x
        
        
         1
        
       
      
      
       x_{1}
      
     
    x1 和 
    
     
      
       
        
         x
        
        
         2
        
       
      
      
       x_{2}
      
     
    x2 都满足
 
     
      
       
        
         
          ∣
         
         
          f
         
         
          
           (
          
          
           
            x
           
           
            1
           
          
          
           )
          
         
         
          −
         
         
          f
         
         
          
           (
          
          
           
            x
           
           
            2
           
          
          
           )
          
         
         
          ∣
         
        
        
         ≤
        
        
         K
        
        
         
          ∣
         
         
          
           x
          
          
           1
          
         
         
          −
         
         
          
           x
          
          
           2
          
         
         
          ∣
         
        
       
       
        \left|f\left(x_{1}\right)-f\left(x_{2}\right)\right| \leq K\left|x_{1}-x_{2}\right|
       
      
     ∣f(x1)−f(x2)∣≤K∣x1−x2∣
 等价于
    
     
      
       
        f
       
      
      
       f
      
     
    f的导函数绝对值不超过
    
     
      
       
        K
       
      
      
       K
      
     
    K。
由于Wasserstein距离的式子无法直接求解,可以变换成
 
     
      
       
        
         W
        
        
         
          (
         
         
          
           P
          
          
           r
          
         
         
          ,
         
         
          
           P
          
          
           g
          
         
         
          )
         
        
        
         =
        
        
         
          1
         
         
          K
         
        
        
         
          
           sup
          
          
           
          
         
         
          
           ∥
          
          
           f
          
          
           
            ∥
           
           
            L
           
          
          
           ≤
          
          
           K
          
         
        
        
         
          E
         
         
          
           x
          
          
           ∼
          
          
           
            P
           
           
            r
           
          
         
        
        
         [
        
        
         f
        
        
         (
        
        
         x
        
        
         )
        
        
         ]
        
        
         −
        
        
         
          E
         
         
          
           x
          
          
           ∼
          
          
           
            P
           
           
            g
           
          
         
        
        
         [
        
        
         f
        
        
         (
        
        
         x
        
        
         )
        
        
         ]
        
       
       
        W\left(P_{r}, P_{g}\right)=\frac{1}{K} \sup _{\|f\|_{L} \leq K} \mathbb{E}_{x \sim P_{r}}[f(x)]-\mathbb{E}_{x \sim P_{g}}[f(x)]
       
      
     W(Pr,Pg)=K1∥f∥L≤KsupEx∼Pr[f(x)]−Ex∼Pg[f(x)]
 其中,
    
     
      
       
        ∥
       
       
        f
       
       
        
         ∥
        
        
         L
        
       
      
      
       \|f\|_{L}
      
     
    ∥f∥L表示函数 
    
     
      
       
        f
       
      
      
       f
      
     
    f 的Lipschitz常数。上式又可近似为
 
     
      
       
        
         K
        
        
         ⋅
        
        
         W
        
        
         
          (
         
         
          
           P
          
          
           r
          
         
         
          ,
         
         
          
           P
          
          
           g
          
         
         
          )
         
        
        
         ≈
        
        
         
          
           max
          
          
           
          
         
         
          
           w
          
          
           :
          
          
           
            
             ∣
            
            
             
              f
             
             
              w
             
            
            
             ∣
            
           
           
            L
           
          
          
           ≤
          
          
           K
          
         
        
        
         
          E
         
         
          
           x
          
          
           ∼
          
          
           
            P
           
           
            r
           
          
         
        
        
         
          [
         
         
          
           f
          
          
           w
          
         
         
          (
         
         
          x
         
         
          )
         
         
          ]
         
        
        
         −
        
        
         
          E
         
         
          
           x
          
          
           ∼
          
          
           
            P
           
           
            g
           
          
         
        
        
         
          [
         
         
          
           f
          
          
           w
          
         
         
          (
         
         
          x
         
         
          )
         
         
          ]
         
        
       
       
        K \cdot W\left(P_{r}, P_{g}\right) \approx \max _{w:\left|f_{w}\right|_{L} \leq K} \mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right]
       
      
     K⋅W(Pr,Pg)≈w:∣fw∣L≤KmaxEx∼Pr[fw(x)]−Ex∼Pg[fw(x)]
可以用神经网络来拟合
    
     
      
       
        
         f
        
        
         w
        
       
      
      
       f_{w}
      
     
    fw。我们可以构造一个含参数
    
     
      
       
        w
       
      
      
       w
      
     
    w、最后一层不是非线性激活层的判别器网络
    
     
      
       
        
         f
        
        
         w
        
       
      
      
       f_{w}
      
     
    fw,在限制
    
     
      
       
        w
       
      
      
       w
      
     
    w不超过某个范围的条件下,
 
     
      
       
        
         L
        
        
         =
        
        
         
          E
         
         
          
           x
          
          
           ∼
          
          
           
            P
           
           
            r
           
          
         
        
        
         
          [
         
         
          
           f
          
          
           w
          
         
         
          (
         
         
          x
         
         
          )
         
         
          ]
         
        
        
         −
        
        
         
          E
         
         
          
           x
          
          
           ∼
          
          
           
            P
           
           
            g
           
          
         
        
        
         
          [
         
         
          
           f
          
          
           w
          
         
         
          (
         
         
          x
         
         
          )
         
         
          ]
         
        
       
       
        L=\mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right]
       
      
     L=Ex∼Pr[fw(x)]−Ex∼Pg[fw(x)]
 
    
     
      
       
        L
       
      
      
       L
      
     
    L就是近似真实分布与生成分布之间的Wasserstein距离。
判别器 f w f_{w} fw 做的是近似拟合Wasserstein距离,属于回归任务,要去掉最后一层的Sigmoid函数。判别器要做的是令Wasserstein距离尽可能最大,所以损失函数为 E x ∼ P g [ f w ( x ) ] − E x ∼ P r [ f w ( x ) ] \mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right] Ex∼Pg[fw(x)]−Ex∼Pr[fw(x)]
而生成器的损失函数则为 − E x ∼ P g [ f w ( x ) ] -\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right] −Ex∼Pg[fw(x)]
Wasserstein GAN对原始GAN的改动
- 去掉判别器最后一层的Sigmoid
 - 生成器和判别器的损失函数不取log
 - 每次更新判别器的参数之后把它们的绝对值进行截断
 - 不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp和SGD
 











