Improved Techniques for Training GANs
在这项工作中,我们介绍了几种旨在鼓励GANs游戏收敛的技术。这些技术的动机是对非收敛问题的启发式理解。它们导致了半监督学习效果的提高和样本生成的改进。我们希望其中一些技术可以成为未来工作的基础,为收敛性提供正式的保证。
All code and hyperparameters may be found at: https://github.com/openai/ improved_gan
3 Toward Convergent GAN Training
训练GAN是为了找到一个双人非合作游戏的纳什均衡。每个玩家都希望最小化自己的成本函数,
J
(
D
)
(
θ
(
D
)
,
θ
(
D
)
)
J^{(D)}(θ^{(D)}, θ^{(D)})
J(D)(θ(D),θ(D))为判别器,
J
(
G
)
(
θ
(
D
)
,
θ
(
D
)
)
J^{(G)}(θ^{(D)}, θ^{(D)})
J(G)(θ(D),θ(D))为生成器。纳什均衡是一个点
(
θ
(
D
)
,
θ
(
G
)
)
(θ(D),θ(G))
(θ(D),θ(G)),使得
J
(
D
)
J^{(D)}
J(D)相对于
θ
(
D
)
θ^{(D)}
θ(D)处于最小值,使得
J
(
G
)
J^{(G)}
J(G)相对于
θ
(
G
)
θ^{(G)}
θ(G)处于最小值。不幸的是,寻找纳什均衡是一个非常困难的问题。有专门的算法,但我们不知道有什么算法可以应用于GAN博弈,因为GAN博弈的成本函数是非凸的,参数是连续的,而且参数空间是极高维的。
当每个玩家的成本最小时,纳什均衡就会出现,这一想法似乎直观地促使我们使用传统的基于梯度的最小化技术来同时最小化每个玩家的成本。不幸的是,修改
θ
(
D
)
θ^{(D)}
θ(D)以减少
J
(
D
)
J^{(D)}
J(D)可以增加
J
(
G
)
J^{(G)}
J(G),而修改
θ
(
G
)
θ^{(G)}
θ(G)以减少
J
(
G
)
J^{(G)}
J(G)可以增加
J
(
D
)
J^{(D)}
J(D)。
因此,梯度下降在许多游戏中都不能收敛。例如,当一个玩家对x最小化xy,另一个玩家对y最小化-xy时,梯度下降会进入一个稳定的轨道,而不是收敛到x=y=0,即期望的均衡点[15]。因此,以前的GAN训练方法是同时对每个玩家的成本进行梯度下降,尽管不能保证这个过程会收敛。我们引入了以下启发式的技术,以鼓励收敛。
3.1 Feature matching
特征匹配通过为生成器指定一个新的目标来解决GANs的不稳定性,防止它对当前判别器的过度训练。新的目标不是直接最大化判别器的输出,而是要求生成器生成与真实数据的统计量相匹配的数据,在这里我们只用判别器来指定我们认为值得匹配的统计量。具体来说,我们训练生成器来匹配鉴别器中间层上的特征的预期值。这是生成器要匹配的统计数据的自然选择,因为通过训练判别器,我们要求它找到那些对真实数据和当前模型生成的数据最具区分力的特征。
让f(x)表示判别器中间层的激活,我们对生成器的新目标定义为。
∣
∣
E
x
∼
p
d
a
t
a
f
(
x
)
−
E
z
∼
p
z
(
z
)
f
(
G
(
z
)
)
∣
∣
2
2
||\mathbb E_{x∼p_{data}} \mathbf f(x) - \mathbb E_{z∼p_z(z)}f(G(z))||^2_2
∣∣Ex∼pdataf(x)−Ez∼pz(z)f(G(z))∣∣22。鉴别器,以及f(x),都是以常规方式训练的。与常规的GAN训练一样,目标有一个固定点,即G与训练数据的分布完全匹配。我们不能保证在实践中达到这个固定点,但我们的经验结果表明,在常规GAN变得不稳定的情况下,特征匹配确实有效。
3.2 Minibatch discrimination
GAN的主要失败模式之一是模式崩溃。当崩溃到单一模式时,鉴别器的梯度可能会指向许多类似点的类似方向。因为鉴别器独立处理每个例子,它的梯度之间没有协调,因此没有机制告诉生成器的输出变得更不相似。
取而代之的是,所有输出都朝着鉴别器当前认为非常真实的一个点竞争。崩溃发生后,鉴别器得知这个single point来自发生器,但梯度下降法无法分离相同的输出。鉴别器的梯度将发生器产生的single point永远推到空间周围,该算法不能收敛到具有正确熵的分布。避免这类失败的一个明显策略是允许鉴别器组合查看多个数据示例,并执行我们称之为minibatch discrimination。
minibatch discrimination的概念是相当普遍的:任何结合而不是孤立地看多个样本的判别器模型都有可能帮助避免生成器的崩溃。事实上,Radford等人[3]在判别器中成功地应用了批量规范化,从这个角度可以很好地解释。不过,到目前为止,我们的实验仅限于那些明确旨在识别特别接近的生成器样本的模型。
一个成功的例子是对mini-batch中的样本之间的接近性进行建模。让
f
(
x
i
)
∈
R
A
\mathbf f(x_i)∈\mathbb R^A
f(xi)∈RA表示输入
x
i
x_i
xi的特征向量,由判别器的某个中间层产生。然后我们将向量
f
(
x
i
)
f(x_i)
f(xi)乘以张量
T
∈
R
A
×
B
×
C
T∈\mathbb R^{ A×B×C}
T∈RA×B×C,得出矩阵$M_i∈\mathbb R^{B×C} $。
图1:图中简述了minibatch discrimination的工作方式。来自样本xi的特征f(xi)通过张量T相乘,并计算出cross-sample的距离。
We then compute the L1-distance between the rows of the resulting matrix Mi across samples$ i ∈ {1, 2, . . . , n}$ and apply a negative exponential (Fig. 1):
c
b
(
x
i
,
x
j
)
=
e
x
p
(
−
∣
∣
M
i
,
b
−
M
j
,
b
∣
∣
L
1
)
∈
R
c_b(x_i, x_j ) = exp(-||M_{i,b} - M_{j,b}||_{L_1}) ∈ \mathbb R
cb(xi,xj)=exp(−∣∣Mi,b−Mj,b∣∣L1)∈R。 然后,这个minibatch层对一个样本xi的输出
o
(
x
i
)
o(x_i)
o(xi)被定义为对所有其他样本的
c
b
(
x
i
,
x
j
)
c_b(x_i, x_j )
cb(xi,xj)之和。
接下来,我们将minibatch layer的输出o(xi)与作为其输入的中间特征f(xi)相连接,并将结果送入判别器下一层中。我们对来自生成器和训练数据的样本分别计算这些迷你批的特征。和以前一样,判别器仍然需要为每个例子输出一个数字,表明它来自训练数据的可能性。因此,鉴别器的任务实际上仍然是将单个例子分类为真实数据或生成的数据,但它现在能够使用迷你批中的其他例子作为侧面信息。Minibatch判别器使我们能够非常迅速地生成具有视觉吸引力的样本,在这方面,它优于特征匹配(第6节)。然而,有趣的是,如果目标是使用第5节中描述的半监督学习方法获得一个强大的分类器,那么特征匹配被发现效果更好。
3.3 Historical averaging
当应用这种技术时,我们修改每个玩家的成本,以包括一个项
∣
∣
θ
−
1
t
Σ
i
=
1
t
θ
[
i
]
∣
∣
2
||θ-\frac{1}{t}\Sigma^t_{i=1} θ[i]||^2
∣∣θ−t1Σi=1tθ[i]∣∣2,其中θ[i]是过去时间i的参数值。参数的历史平均值可以以在线方式更新,因此这种学习规则可以很好地扩展到长时间序列。
3.4 One-sided label smoothing
标签平滑技术是20世纪80年代的一项技术,最近由Szegedy等人[17]独立地重新发现,用平滑的值(如.9或.1)取代分类器的0和1目标,最近被证明可以减少神经网络对对抗性例子的脆弱性[18]。
3.5 Virtual batch normalization
1855700807)]
3.5 Virtual batch normalization
批量规范化极大地改善了神经网络的优化,并被证明对DCGANs非常有效[3]。然而,它导致神经网络对一个输入样本x的输出高度依赖于同一minibatch中其他几个输入
x
′
x'
x′。为了避免这个问题,我们引入了虚拟批次规范化(VBN),在这个过程中,每个例子x都是根据在训练开始时选择一次并固定的参考批次的例子和x本身的统计数据进行规范化。参考批次仅使用其自身的统计数据进行规范化。VBN的计算成本很高,因为它需要在两个小批的数据上运行前向传播,所以我们只在生成器网络中使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)