生成模型学习笔记(1):Generative Adversarial Nets(生成对抗网络)

学习笔记

本部分来源于论文《Generative Adversarial Nets》(arXiv:1406.2661)。

介绍

到目前为止,深度学习中那些最显著的成功所涉及到的判别模型(discriminative model),通常是将那些高维的、丰富感知(rich sensory)输入映射到分类标签中。这些成功通常是基于反向传播和dropout算法,采用那些具有良好梯度的分段线性单元。但是由于在最大似然估计和相关策略中有很多难以近似的困难概率计算问题,同时分段线性单元的优点很难在生成上下文中应用,因此深度生成模型在这方面受益较小。

GAN模型包含:

  • 一个判别模型(discriminative model),它用来确定样本是来自于真实数据还是我们生成的数据
  • 一个声明模型(generative model),它尝试制造假的数据来使鉴别模型认为这些数据都是来源于真实数据

在本文中,作者探讨了一种特殊的情况:

  • 生成模型通过输入一组随机噪声给多层感知机来生成假的样本
  • 判别模型也通过一个多层感知机来判断样本来源

模型构建

  1. 为了学习生成器在数据 x x 上的分布 p g p_{g} ,作者定义了在输入噪音变量 p z ( z ) p_{z}\left ( z \right ) 上的先验分布,然后利用 G ( z ; θ g ) G\left ( z;\theta _{g} \right ) 表示到数据空间的映射,其中 G G 是一个由带有变量 θ g \theta_{g} 的多层感知机表示的可微函数。
  2. 作者同时定义了第二个输出一个标量的多层感知机 D ( x ; θ g ) D\left ( x;\theta_{g} \right ) D ( x ) D\left ( x \right ) 表示 x x 来自于数据而不是 p g p_{g} 的概率。通过训练 D D 来最大化正确区分来自于训练样本和 G G 生成的样本的概率。
  3. 同时训练 G G 来最小化 log ( 1 D ( G ( Z ) ) ) \log\left ( 1 - D\left ( G\left ( Z \right ) \right ) \right )

换句话说, D D G G 通过使用价值函数 V ( G , D ) V\left( G,D \right) 来参与二人最大最小博弈(two-player minimax game)。 V ( G , D ) V\left( G,D \right) 如下:

(1) min G max D V ( D , G ) = E x p d a t a ( x ) [ log D ( x ) ] + E z p z ( z ) [ log ( 1 D ( G ( z ) ) ) ] \min_{G}\max_{D}V\left ( D,G \right ) = \mathbb{E} _{x \sim p_{data}\left ( x \right )}\left [ \log D\left ( x \right ) \right ] + \mathbb{E} _{z \sim p_{z}\left ( z \right )}\left [ \log \left ( 1 - D\left ( G\left ( z \right ) \right ) \right ) \right ] \tag{1}

对对抗网络的理论分析可以表明,在 G G D D 具有足够的能力的前提下,训练规则允许其修复(recover)无参数限制(in the non-parametric limit)数据生成分布。在实际操作中,我们必须采用迭代的数值近似方法来进行操作。在训练内循环内优化 D D 到完成在计算上禁止,同时在有限的数据集上会产生过拟合。因此,作者选择在优化 k k D D 和一步 G G 之间交替执行。只要 G G 改变的足够慢, D D 的结果就会保持在最优解附近。

分析公式一可以发现,在训练开始时由于 G G 是随机初始化的,导致 log ( 1 D ( G ( z ) ) ) \log \left ( 1 - D \left ( G \left ( z \right ) \right ) \right ) 的梯度变化很慢,因此与其最小化 log ( 1 D ( G ( z ) ) ) \log \left ( 1 - D \left ( G \left ( z \right ) \right ) \right ) ,不如最大化 log ( G ( z ) ) \log \left ( G \left(z \right ) \right ) 。这个目标函数使得在训练早期就有很强的梯度。

理论结果

算法 1

介绍:通过小批次随机梯度下降来训练生成对抗网络。对于鉴别器的步骤数 k k 是一个超参数。在实验里,作者选择了 k = 1 k = 1 这个选项。

for 训练迭代次数 do

for k k do

  • 从先验噪音 p g ( z ) p_{g}\left ( z \right ) 中采集小批次的 m m 个噪音样本 { z ( 1 ) ,   , z ( m ) } \left \{ z^{\left( 1 \right )}, \cdots ,z^{\left( m \right )} \right \}
  • 从数据生成分布 p d a t a ( x ) p_{data}\left ( x \right ) 中采集小批次的 m m 个样本 { x ( 1 ) ,   , x ( m ) } \left \{ x^{\left( 1 \right )}, \cdots ,x^{\left( m \right )} \right \}
  • 通过随机梯度提升来更新辨别器:
    d 1 m i = 1 m [ log D ( x ( i ) ) + log ( 1 D ( G ( z ( i ) ) ) ) ] . \bigtriangledown _{d}\frac{1}{m}\sum_{i = 1}^{m}\left [ \log D \left ( x^{\left ( i \right )} \right ) + \log \left ( 1 - D \left ( G\left ( z^{\left ( i \right )} \right ) \right ) \right ) \right ].

end for

  • 从先验噪音 p g ( z ) p_{g}\left ( z \right ) 中采集小批次的 m m 个噪音样本 { z ( 1 ) ,   , z ( m ) } \left \{ z^{\left( 1 \right )}, \cdots ,z^{\left( m \right )} \right \}
  • 通过随机梯度下降来更新生成器
    θ g 1 m i = 1 m log ( 1 D ( G ( z ( i ) ) ) ) . \bigtriangledown _{\theta _{g}}\frac{1}{m}\sum_{i = 1}^{m} \log \left ( 1- D \left ( G \left ( z^{\left ( i \right )} \right ) \right ) \right ).

end for

基于梯度的更新可以使用任何标准的基于梯度的学习规则。

关于 p g = p d a t a p_{g} = p_{data} 的全局最优性

首先考虑对于任意给定的生成器 G G 来优化鉴别器 D D

命题 1. 对于确定的 G G ,最优的鉴别器 D D

(2) D G ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x ) D_{G}^{*}\left ( x \right ) = \frac{p_{data}\left ( x \right )}{p_{data}\left ( x \right ) + p_{g}\left ( x \right )} \tag{2}

证明: 对于任意给定的生成器 G G ,鉴别器 D D 的训练标准是最大化 V ( G , D ) V \left ( G,D \right )

V ( G , D ) = x p d a t a ( x ) log ( D ( x ) ) d x + z p z ( z ) log ( 1 D ( g ( z ) ) ) d z V \left ( G,D \right ) = \int_{x}^{ }p_{data}\left ( x \right ) \log \left ( D\left ( x \right ) \right )dx + \int_{z}^{ } p _{z} \left ( z \right ) \log \left ( 1 - D\left ( g\left ( z \right ) \right ) \right )dz
(3) = x p d a t a ( x ) log ( D ( x ) ) + p g ( x ) log ( 1 D ( x ) ) d x = \int_{x}^{ }p_{data}\left ( x \right ) \log \left ( D\left ( x \right ) \right ) + p_{g}\left ( x \right ) \log \left ( 1 - D\left ( x \right ) \right )dx \tag{3}

对于任意的 ( a , b ) R { 0 , 0 } \left ( a,b \right ) \in \mathbb{R} \setminus \left \{ 0,0 \right \} ,函数 y a log ( y ) + b log ( 1 y ) y \rightarrow a \log \left ( y \right ) + b \log \left ( 1 - y \right ) 在位于 [ 0 , 1 ] \left [ 0,1 \right ] 之间的 a a + b \frac{a}{a+b} 上达到最大值。鉴别器不需要在 S u p p ( p d a t a ) S u p p ( p g ) Supp\left ( p_{data} \right ) \cup Supp \left ( p_{g} \right ) 之外定义。

证明结束。

注意,对于 D D 的训练目标可以被理解为最大化估计条件概率 P ( Y = y x ) P\left ( Y =y\mid x \right ) 的对数估计函数(log-likelihood),其中 Y Y 表明 x x 来自于 p d a t a p_{data} (当 y = 1 y = 1 )还是来自于 p g p_{g} (当 y = 0 y = 0 )。方程式1中的最大最小化博弈现在可以被阐释为:

C ( G ) = max D V ( G , D ) C\left ( G \right ) = \max _{D} V\left ( G,D \right )

(4) = E x p d a t a [ log D G ( x ) ] + E z p z [ log ( 1 D G ( G ( z ) ) ) ] = \mathbb{E} _{x \sim p _{data}} \left [ \log D_{G}^{*} \left ( x \right ) \right ] + \mathbb{E} _{z \sim p_{z}}\left [ \log \left ( 1 - D _{G}^{*} \left ( G\left ( z \right ) \right ) \right ) \right ] \tag{4}

= E x p d a t a [ log D G ( x ) ] + E x p g [ log ( 1 D G ( x ) ) ] = \mathbb{E} _{x \sim p _{data}} \left [ \log D_{G}^{*} \left ( x \right ) \right ] + \mathbb{E} _{x \sim p_{g}}\left [ \log \left ( 1 - D _{G}^{*} \left ( x \right ) \right ) \right ]

= E x p d a t a [ log p d a t a ( x ) p d a t a ( x ) + p g ( x ) ] + E x p g [ log p g ( x ) p d a t a ( x ) + p g ( x ) ] = \mathbb{E} _{x \sim p_{data}}\left [ \log \frac{p_{data}\left ( x \right )}{p _{data}\left ( x \right ) + p _{g}\left ( x \right )} \right ] + \mathbb{E} _{x \sim p_{g}}\left [ \log \frac{p_{g}\left ( x \right )}{p _{data}\left ( x \right ) + p _{g}\left ( x \right )} \right ]

定理 1. 虚拟训练标准 C ( G ) C \left ( G \right ) 的全局最小值当且仅当 p g = p d a t a p_{g} = p_{data} 时取到,在这一点上, C ( G ) C \left ( G \right ) 到达值 log 4 - \log 4

证明. p g = p d a t a p_{g} = p_{data} D G ( x ) = 1 2 D_{G}^{*}\left ( x \right ) = \frac{1}{2} (考虑公式2)。因此,把 D G ( x ) = 1 2 D_{G}^{*}\left ( x \right ) = \frac{1}{2} 带入公式4,我们可以发现 C ( G ) = log 1 2 + log 1 2 = log 4 C \left ( G \right ) = \log\frac{1}{2} + \log\frac{1}{2} = - \log 4 。要知道这是 C ( G ) C\left(G\right) 的可能的值,只在 p g = p d a t a p_{g} = p_{data} 时取到,我们注意到:

E x p d a t a [ log 2 ] + E x p g [ log 2 ] = log 4 \mathbb{E} _{x \sim p_{data}}\left [ -\log 2 \right ] + \mathbb{E} _{x \sim p_{g}}\left [ -\log 2 \right ] = - \log 4

然后从 C ( G ) = V ( D G , G ) C\left(G\right) = V\left(D_{G}^{*},G\right) 中减去这个表达式,我们得到了

C ( G ) = log 4 + K L ( p d a t a p d a t a + p g 2 ) + K L ( p g p d a t a + p g 2 ) C\left(G\right) = -\log4 + KL \left ( p_{data} \parallel \frac{p_{data}+p_{g}}{2} \right ) + KL \left ( p_{g} \parallel \frac{p_{data}+p_{g}}{2} \right )

其中 K L KL 是KL散度。我们在之前的表达式中认出了在模型的分布和数据生成过程之间的 JS散度(Jensen-Shannon divergence):

C ( G ) = log 4 + 2 J S D ( p d a t a p g ) C\left(G\right) = -\log4 + 2 \cdot JSD\left ( p_{data} \parallel p_{g} \right )

由于两个分布间的JS散度总是非负的并且仅在他们相等时等于0,我们以及证明了 C = log ( 4 ) C^{*} = - \log \left(4\right) C ( G ) C\left(G\right) 的全局最小值同时唯一解是 p g = p d a t a p_{g} = p_{data} ,即生成模型完美的复制了数据的生成过程。

算法一的收敛测试

命题 2. 如果 G G D D 具有足够的能力,同时在算法一的每一次迭代里,对于给定的 G G 鉴别器总能达到最优,同时更新 p g p_{g} 以改进标准:

E x p d a t a [ log D G ( x ) ] + E x p g [ log ( 1 D G ( x ) ) ] \mathbb{E}_{x \sim p_{data}}\left [ \log D_{G}^{*}\left ( x \right ) \right ] + \mathbb{E}_{x \sim p_{g}}\left [ \log \left (1 - D_{G}^{*} \left ( x \right ) \right ) \right ]

那么 p g p_{g} 就会收敛于 p d a t a p_{data}

证明. 考虑当 p g p_{g} 在上面的标准中被更新完成的情况下的方程 V ( G , D ) = U ( p g , D ) V\left(G,D\right) = U\left(p_{g},D\right) ,凸函数上界的二阶导数包括了函数在取得最大值的那一点的导数,换句话说,如果 f ( x ) = sup α A f α ( x ) f \left( x \right) = \sup _{\alpha \in \mathcal{A}} f_{\alpha}\left(x \right ) 并且 f α ( x ) f_{\alpha}\left(x \right ) 对于任意的 α \alpha x x 上都是凸的,那么当 β = arg sup α A f α ( x ) \beta = \arg \sup _{\alpha \in \mathcal{A}}f_{\alpha }\left ( x \right ) f β ( x ) f \partial f _{\beta } \left(x \right ) \in \partial f 。这等价于在给定的 G G 的最优 D D 下通过计算梯度下降来更新 p g p_{g} sup D U ( p g , D ) \sup _{D}U\left( p_{g},D \right) 在定理1中已经证明过的具有全局最优解的 p g p_{g} 上是凸的,因此当 $p_{g} 的更新量足够小的时候, p g p_{g} 收敛于 p x p_{x}

证明结束。

优缺点

缺点

没有一个显示表示的 p g ( x ) p_{g}\left( x \right) D D G G 必须在训练过程中保持同步 (尤其是 G G 不能在没有更新 D D 的前提下训练太多次,为了防止所谓的“Helvetica场景(the Helvetica scenario)” 即 G G 将太多的 z z 的值分解到相同的 x x 的值以至于没有足够的多样性来对 p d a t a p_{data} 进行建模。)。这就像一个波尔茨曼机的负链必须在学习步之间保持最新一样。

优点

永远不需要马尔科夫链,只利用反向传播算法来更新梯度,在学习过程中不需要推理,并且可以把不同的函数集成到模型当中。

对抗模型也可以从生成器中获得一些统计上的优势,而不是直接采用流经鉴别器的梯度和样例来直接更新。这意味着输入的部分不会直接复制到生成器中。

对抗网络模型可以表示非常急剧的甚至退化的分布,当方法基于为了使链能够在模型之间混合而分布比较模糊的马尔可夫链上。

猜你喜欢

转载自blog.csdn.net/Dptimus/article/details/88776028