在
上一篇文章中,我以玩具模型为例,试图分析为什么我们实际上能够有效训练GAN。 现在,我们将尝试总结一些结果,最重要的是,尝试分析神经网络的体系结构如何影响学习过程的稳定性。
引言
您可以将GAN学习过程看作是使差异下限最小化的过程,或者是由鉴别器和生成器组成的动态系统。 第一种方法已经很好地开发了,如果有兴趣的人可以找到很多与此主题相关的有趣作品,我认为我只给出最重要的作品:
f-GAN ,
WGAN 。 另一方面,
GANs的数值学,Lars Mescheder等人,2017年表明,不能仅从最小化发散的角度来看GAN(尽管这是主要目标),但是仍然有必要考虑动态系统的特性。 我们的目标是将这两种方法结合起来,看看这种动态系统的轨迹将具有什么理论特性。
接下来,我们将考虑GAN功能的一种相当通用的形式(GAN目标)。
I( theta, phi)= intpd(x)fD(D theta(x))dx + intp( epsilon)fG(D theta(G phi( epsilon))d epsilon
在哪里
theta -鉴别参数,
phi -发电机参数。 并且我们还假设生成器和鉴别器是两个可微的函数。
学习过程可以用数学公式表示为:
\ underset {\ phi} {min} \ {\ underset {\ theta} {max} I(\ theta,\ phi)\}
\ underset {\ phi} {min} \ {\ underset {\ theta} {max} I(\ theta,\ phi)\}
休息点
尽管在GAN上进行了大量工作,但是存在静态点的问题仍然悬而未决。 现在我们将尝试回答这个问题。
假设(
假设1 )对于任何生成器,存在一个使
I( theta, phi)
即功能
\ theta_ {opt} = \ underset {\ theta} {argmax} \ {I(\ theta,\ phi)\}
\ theta_ {opt} = \ underset {\ theta} {argmax} \ {I(\ theta,\ phi)\}
为任何值定义
phi 。 尽管这是可能的并且是模棱两可的-也就是说,存在许多不同的最佳判别器。 我们将这类最佳鉴别器的整个集合称为“重新参数化”,
\ {\ theta_ {opt} \}\ {\ theta_ {opt} \} 鉴别符重新参数化的集合。 让我们做一点澄清-所谓最大,不仅是指全局最大值,也包括任何局部最大值。
数学上
thetaopt 由方程组确定:
nabla thetaI( thetaopt, phi)=0
nabla theta2I( theta, phi) preceq0
尽管如果生成器和鉴别器是神经网络,并且我们训练了图像生成器,则无法满足此假设。 在下面的文章中,我将展示如何借助简单的正则化工具来实现此目的,但现在我必须相信这一点。
第二个假设(
假设2 )是,对于发生器参数的任何无限小变化,都有一个最佳判别器,其无限接近当前值。 您可以尝试找出何时对神经网络执行此操作,但是在我看来,这是一个直观的要求,并且很有可能在相当灵活的网络中得以实现。
在数学上,此要求可以表述为:一个方程组
nabla theta2I( thetaopt, phi)d theta=− nabla theta phiI( thetaopt, phi)d phi ;(1)美
有决定权
d theta 在任何时候
d phi 。
这个条件很容易从分解中获得
nabla thetaI( thetaopt, phi)=0 在泰勒的行中。
现在我们表明,在
假设2下,发生器
的梯度
nabla phiI( thetaopt, phi) 如果我们沿鉴别器重新参数化集移动,则不会改变。 在数学上沿着重新参数化集进行移动意味着
delta theta 属于核心
nabla theta2I( theta, phi) 即:
nabla thetaI( thetaopt, phi)= nabla thetaI( thetaopt+d thetaopt, phi)=0
让我们扩展一个泰勒级数:
nabla phiI( thetaopt+d thetaopt, phi)= nabla phiI( thetaopt, phi)+ nabla phi thetaI( theta, phi)d thetaopt
为了使梯度不发生变化,必须从哪里开始
d thetaopt 属于核心
nabla phi thetaI( theta, phi) 。 但是如果
d thetaopt 属于核心
nabla theta2I( theta, phi) 并且(1)成立,然后
d thetaopt 属于核心
nabla phi theta我( theta, phi) 。 用(1)乘以很容易显示
d thetaopt 并考虑到
d phi 可以是任何:
d thetaTopt nabla theta2I( thetaopt, phi)d theta=−d thetaTopt nabla theta phiI( thetaopt, phi)d phi=0
我们刚刚证明了梯度的奇妙事实
\ nabla_ \ phi \ underset {\ theta} {max} \ {I(\ theta,\ phi)\} 无论选择哪一个
theta 来自鉴别器的重新参数化,这意味着
underset thetamaxI( theta, phi) 是...的微分函数
phi 我们可以使用梯度优化方法将其最小化。
关于此功能的最小值,该怎么说? 不幸的是,到目前为止还不能得出一般性结论。 我们必须对鉴别器的性质再做一个假设(
假设3 ),即
underset thetamaxI( theta, phi) geq0 。 从Mat分析中,我们知道在下面限制的连续函数达到其最小值,或者存在单调递减的点序列(即,函数在无穷远处达到最小值)。
假设3指出,无论我们从什么时候开始训练鉴别器(初始化神经网络),最优鉴别器始终为数据分配比生成器样本更高的(平均)值(平均),并且做相反的鉴别器都不是最优的。 在我看来,这种假设在内部非常合乎逻辑,并且足够灵活的神经网络应该可以满足它。 顺便说一下,很容易证明线性鉴别器满足这个假设。
“最佳轨迹”
我们只是发现,如果判别器充分满足“软”假设,那么要么存在休息点,要么位于无穷大处,我们可以渐近地接近它。
为此,假设
theta 和
phi 当前参数,鉴别器经过训练收敛。 现在我们稍微改变一下发电机(
phik+1= phik+d phi ),这样
\ underset {\ theta} {argmax} \ {I(\ theta,\ phi)\} 减少-例如,我们采取了梯度下降的一步。 我们应该如何更新鉴别器? 答案由公式(1)给出:
d theta=− nabla theta2I( theta, phi)\匕首 nabla theta phiI( theta, phi)d phi(2)美
在哪里
nabla theta2I( theta, phi)\匕首 是伪逆矩阵。
为了精确地进行数学计算,公式(2)确定了最优标识符在其上“生存”的参数空间中曲面的切线超平面。 我们将这个表面称为“最佳”。
但是,如果我们从一个非常接近的起点开始,将会发生什么,但是仍然存在判别器不是最优的。 显然,我们的公式描述了完全不可预测的轨迹,因为 它仅用于最佳鉴别器。 让我们尝试解决这种情况。 在这种情况下,逻辑上不仅要平行于“最佳”表面移动,而且还要朝着该表面移动。 显然,在牛顿法所指示的方向上的一个台阶非常适合于此。 我们的最终公式将如下所示:
d theta=− nabla theta2I( theta, phi) dagger[ nabla thetaI( theta, phi)+ nabla theta phiI( theta, phi)d phi](3)美
我们刚刚做了什么? 首先,请注意在最佳表面上
nabla thetaI( theta, phi)=0 ,即 如果
theta 鉴别器受过训练以收敛,那么我们没有改变轨迹。 另一方面,如果我们从“最佳”点附近开始,那么附加项将“拉”我们到“最佳”轨迹上。 也就是说,我们使“最佳”轨迹具有抗噪声能力。
不幸的是,我无法从数学上证明它。 但是我们不需要它。 让我们仔细看一下公式(3),它可以用以下形式重写:
d theta=− nabla theta2I( theta, phi)\匕首 nabla thetaI( theta, phi+d phi)
看起来不一样吗? 它几乎看起来像牛顿的方法。 这表明生成器和鉴别符参数的交替更新(在英语文献中使用交替),其中鉴别符是通过牛顿方法更新的(实际上,我们不必采取完整的牛顿步骤,但是我们可以朝牛顿方法指示的方向走一小步),通常来说,发电机可以朝任何方向迈出一步,主要是减少
\ underset {\ theta} {argmax} \ {I(\ theta,\ phi)\} 是沿最佳轨迹运动的良好近似。
顺便说一句,也许这就是Adam在GAN培训中取得成功的地方。 毕竟,众所周知,Adam试图近似Hessian并将此信息用于梯度步长(近似牛顿法)。
弹道稳定性
为了分析轨迹的稳定性,我们将使用与
哪些GAN训练方法实际收敛的家伙相同的工具
? 。 无论谁有时间,我建议您都很好地理解这项工作,这是值得的。
我相信本文的主要缺点是作者分析了系统在静止点的稳定性,这对于大多数实际的GAN根本不存在(对于玩具2D或3D示例,当然可以做到)。 我的意思是,通常来说,没有休止点,并且生成器与数据具有相同的分布,且鉴别符等于0。 。 尽管此分析可以轻松地转移到静止点,但是静止点也是一条轨迹。
作为研究的轨迹,我们选择通过梯度下降训练过程中获得的轨迹。 为什么这很重要? 首先,我们找出“最佳”轨迹是什么,并发现通过鉴别器更新沿牛顿方法指示的方向可以很好地近似它。 牛顿法是最渐变的方法,它使用来自二阶导数的信息来调整方向。 但是我们这样做的主要原因很简单-因为我们可以。 对此的任何偏离都会导致如此疯狂的公式,以至于根本无法理解其中的任何内容。
分析轨迹稳定性的标准方法是分析线性化模型。 与《
哪种GAN训练方法实际上收敛》的作者相似
? 我们将探索雅可比轨迹:
A= beginbmatrix nabla theta2I( theta, phi)& nabla2 theta phiI( theta, phi)− nabla2 theta phiI( theta, phi)T&− nabla phi2I( theta, phi) endbmatrix
J=I+ etaA
在哪里
我 是单位矩阵。
我们假设鉴别器虽然不是最佳的,但与要执行的最佳鉴别器足够接近
nabla theta2I( theta, phi) preceq0 。 而且正则化器(我已经提到过,在实际的GAN中,鉴别器没有最佳点,我们必须在正则化器的帮助下创建该点)不会使生成器羡慕不已。 我会先行一点-我们在实践中发现的最佳正则化函数取决于我们,但是对于我们的理论研究而言,这种假设并不会限制我们太多。
接下来,我们需要一个关于矩阵的基本事实:
nabla theta2I( theta, phi) preceq0 和
nabla phi2I( theta, phi) succeq0 ,然后有
eta>0 矩阵的光谱范数是多少
J 将小于或等于1。
证明是基本的-我们写
JTJ :
JTJ=[I+ etaA]T[I+ etaA]=I+ eta[A+AT+ eta(ATA)]
但是:
A+AT= beginbmatrix2 nabla theta2I( theta, phi)&00&−2 nabla phi2I( theta, phi)\结束bmatrix
因此,由于特征值的连续性,很明显,人们可以选择这样的特征值。
eta>0 那本征值
JTJ 将小于或等于1。因此,我们需要
\左 |J\对 | leqslant1 。
我们知道在我们的轨迹上
nabla theta2I( theta, phi) preceq0 执行(因为轨迹是“最优”的)并且是否存在
nabla phi2I( theta, phi) succeq0 那么任何轨迹(包括平衡点)都将是稳定的-也就是说,与轨迹略有偏差,系统将倾向于返回到该轨迹。 这是显而易见的,因为任何离散轨迹都可以表示为雅可比行列式的乘积,范数小于或等于1的矩阵乘积的范数不能大于1。
但是很多事实表明,对于GAN而言,情况并非总是如此。 一个令人震惊的例子是崩溃模式,而且这种崩溃并不总是发生,也不是针对所有模型。 我认为GAN训练的复杂性与两个事实有关:没有最佳判别器(由正则化器处理),并且生成器的雅可比行列式不是非负定矩阵。 现在,我们将尝试了解,如果不能完全摆脱第二个问题,至少如何将其对可持续性的影响最小化。
为此,我们写出生成器的雅可比行列式。 它将包括三个部分:
J1= intp( epsilon)f″G(D theta(Gphi( epsilon)))[ nabla phiG phi( epsilon) nablaxD theta(G phi( epsilon))][ nabla phiG phi( epsilon) nablaxD theta(G phi( epsilon))]Td epsilon
J2= intp( epsilon)f′G(D theta(Gphi( epsilon))) nabla phi2G phi( epsilon) nablaxD theta(G phi( epsilon))d epsilon
J3= intp( epsilon)f′G(D theta(G phi( epsilon))) nabla phiG phi( epsilon)T nabla2xD theta(G phi( epsilon)) nabla phiG phi( epsilon)d epsilon
由于雅可比行列式的表达式非常复杂,无法看到任何类型的结构,因此我们所有的操作都旨在确保这些矩阵尽可能接近0。
J1 可以看出,这个术语很容易重置-只需选择该功能
fG 这样
f″G(x)=0 或使“工作点”位于二阶导数接近0的区域。顺便说一下,函数的选择
f″G(x)=0 符合WGAN。 WGAN是否以稳定性着称?
其他两个术语只能受神经网络的体系结构影响。 例如,对于线性生成器和鉴别器(二阶导数为零),它们将无效。 顺便提一下,ReLU激活是我想到的-不幸的是,该分析不适用于此类网络,因为违反了可区分性的假设。 但是从实践中知道,例如,具有分段线性激活的神经网络的GAN实际训练起来比双曲线切线要稳定得多。 这是由于雅各布主义还是其他更重要的原因尚待猜测,但是将来我计划对此问题进行一些调查。
我们还可以得出结论,GAN“更喜欢”广泛的网络。 确实,我们知道具有深层网络的GAN更容易崩溃。
结论
在本文中,我试图给出GAN理论中长期存在的问题的答案。 您和我看到,为了存在一个休息点,鉴别器具有相当简单的属性就足够了。 我们还看到,对GAN的概率(最小化差异)解释拥有生命的所有权利,并且通过相当简单的算法,我们可以很好地近似“最佳”轨迹。 而且,亚当算法已经做到了这一点,并且理论上应该稳定GAN训练,顺便提一下,这在许多著作中都已提到。
尽管如此,这非常重要,我们发现选择神经网络的架构和损失函数的经验建议与该理论非常一致。 最重要的是,由于非线性而导致的学习中的所有问题-线性模型的训练非常稳定。
文章遗漏了什么? 练习 在下一篇文章中,我将描述我用来为鉴别器提供休息点的正则化方法和一堆提高GAN学习过程稳定性的技巧(顺便说一下,其中一些是受此分析启发的)。
举例来说,在LSUN卧室数据集上训练了一个深度网络(50层生成器和50层区分器)(仅进行了10万次迭代,我们没有使用生成器平均)