【GAN优化】详解GAN中的一致优化问题
GAN的训练是一个很难解决的问题,上期其实只介绍了一些基本的动力学概念以及与GAN的结合,并没有进行过多的深入。动力学是一门比较成熟的学科,有很多非常有用的结论,我们将尝试将其用在GAN上,来得到一些有意义的结果,指导一下我们怎么训练GAN。
作者&编辑 | 小米粥
本期我们将首先介绍一个有关于动力学的收敛性命题,然后将GAN运用到上面,接着进行深入分析达到收敛的条件并最终引出了一个比较好的优化算法:一致优化。
1 一个重要的命题
先不谈GAN,先介绍一个特别重要的与动力学收敛性相关的命题,考虑一个如下形式的函数:
其中h大于0。有这样一个命题:如果存在一个比较特殊的点(不动点)使得:
而且在该不动点,函数F(x)的雅可比矩阵F'(x)的所有特征值(非对称矩阵的特征值为复数)的绝对值均小于1,则从该不动点的一小邻域内的任意一点开始,使用如下形式的数值迭代法:
则F最终会收敛至:
为了直观描述,上述的数值迭代过程其实是在使用数值迭代的方式求:y=x和y=x+hG(x)两个函数的交点,如下示意:
非常难得有一个好的关于收敛性的结论,而且其数值迭代的方式与实际的GAN训练方式也吻合,我们考虑将GAN对接到这个结论中。
2 对接GAN
上一期中,我们已经给出了GAN的动力学系统的介绍,为了方便起见,我们将生成器和判别器的目标函数均写成max的形式:
那么对应于第一小节的式子,x对应为GAN的参数:
而h可以对应为训练时候的学习速率,G(x)则对应为矢量场v:
这样看来,式子表达的意思就是使用同时梯度下降法进行参数更新(由于将目标函数写成max形式,准确来说是梯度上升法,无伤大雅):
将一般形式与GAN对接起来后,再次考虑之前关于收敛性的结论,即如果存在满足如下形式的点(即不动点),并且在不动点,矢量场v的雅可比矩阵的所有特征值的绝对值均小于1,则从该不动点的某一个邻域内任意一点开始迭代,最终会进入收敛状态。
其实前一个条件无非就是说在不动点,v=0,即损失函数的梯度为0。那么我们可以对GAN的训练过程进行“检查”,当出现一个梯度为0的参数点时,“检查”其矢量场的雅可比矩阵的特征值是否都在单位圆内,如果在则GAN的迭代最终会收敛进该点。
3 特征值分析
训练GAN要找到梯度为0似乎不是那么困难,但是实现第二个条件:在不动点的矢量场v的雅可比矩阵的所有特征值的绝对值均小于1 可能比较困难,我们来详细分析一下。考虑一般情况下的表达式:
F(x)的雅可比矩阵为:
对其进行特征值分解,单位矩阵I的特征值是实数1,而考虑到一般情况下矩阵G'(x)是非对称矩阵,则其特征值必然是复数,设G'(x)分解出的特征值为:
F'(x)分解出的特征值为:
通常情况如下图所示:
特征值很容易跑出到单位圆之外。要保证其绝对值小于1(即在单位圆里),首先要保证a小于0,(a大于等于0时,该条件不可能满足),如下所示:
即G'(x)分解出的特征值的实部为负数,此时:
也就是说,要想进入收敛状态,特征值的实部要为负数,且同时要求学习速率h一定要足够小!其上界取决于特征值。但是这里有一个矛盾点,如果你将学习速率设置得太小,你的训练时长将会变得特别长。
同样地,在GAN中,需要保证矢量场v的雅可比矩阵
的所有特征值的实部为负数。但是实际中,这个条件是不太可能达到的,尤其是存在实部几乎为0而虚部的值比较大的情况,而且学习速率要设置的足够小。
注意到矢量场v的雅可比矩阵是与生成器和判别器的目标函数f、g相关的,考虑调整一下f和g,使得在不动点处的特征值的实部为负数。
4 一致优化
一致优化(Conseensus Optimization)是一种理论上比较好的方法,它做了一点“手脚”使得特征值的实部尽量为负数。先考虑一般的形式:
其中, γ 大于0,A为可逆矩阵,表达式为:
严谨起见,需要说明一下:如果某个x是
的一个不动点,则该x也是
的不动点,这里并没有因为在式子中添加A(x)而影响了不动点,之前可能在哪里收敛,之后还是可能在那个点收敛。而且在该不动点,
可以看出,相比于第3部分的表达式,新增加的一项会使得特征值向实数部的负数方向偏移(新增项为负定矩阵,其特征值必然为负实数),如图所示
如果超参数γ设置比较合理,“有希望”保证特征值均落在单位圆内。
现在,我们将上述方式对接到GAN中,将生成器和判别器的目标函数修改为:
其中,
可以写成如下形式:
化简可有:
其雅可比矩阵的表达式为:
根据之前的结论,如果γ设置比较合理,学习速率h足够小,则其特征值均会落入单位圆内,参数随着不断更新迭代会进入不动点,也就是说进入纳什均衡的状态。添加的正则项虽然没有解决要求足够小的学习速率的问题,但是“保证”了特征值尽可能落入单位圆中。
最后说明一下,一般GAN中,生成器和判别器的目标函数符号是相反的,但是我们同时对它们增加相同符号的正则项,在正则项部分上,它们的优化目标是一致的,故称之为一致优化。
[1] Mescheder L , Nowozin S , Geiger A . The Numerics of GANs[J]. 2017.
[2] Nagarajan V, Kolter J Z, Nagarajan V, et al. Gradient descent GAN optimization is locally stable[J]. 2017.
总结
这篇文章承接上一篇文章,在GAN中利用动力学的成熟知识,添加了一个正则项,保证了GAN在足够小的学习速率的情况下能收敛进入纳什均衡状态,是一项非常有价值的工作。下一期的任务将继续延此路线展开。
下期预告:GAN训练中的正则项
GAN群