今天讲述的内容是GAN与动力学,这是一个非常好玩、非常新鲜的视角。考虑到很多人微积分和线性代数等知识的涉猎不多,我将会对涉及的内容都做出基本说明,也并不会涉及过深入的东西,然后争取串成一个故事,扩展一下大家的视野。
作者&编辑 | 小米粥
最近这几期我们都一直在讲GAN的训练,最开始说明了实际训练GAN面临的几个理论和实践上的问题,然后接着从博弈论角度解释了GAN和纳什均衡,还说了几个帮助网络收敛的技巧。
这期将从动力学的视角看一下GAN,首先介绍基本概念常微分方程和欧拉法,然后介绍非常经典的梯度下降动力学系统,最后将GAN表示成动力学系统,并给出了一些比较好的结论。其实无论是什么视角,都是为了能更好的解决训练收敛的问题。
1 常微分方程与欧拉法
很多人平时接触的方程大部分是代数方程、超越方程等等,比如:
其解是一个或几个数值,例如上式的解为:
而微分方程是一种稍微“抽象”的方程,它是表示未知函数y(x)、未知函数的导数y`(x)以及自变量x关系的方程,比如:
其解(如果可解)应是一个函数或者函数族,例如上式的解析解为:
未知函数y(x)是一元函数的称为常微分方程,若是多元函数则称为偏微分方程。方便起见,将自变量x写成时间t,则可以用微分方程来表示某些随时间变化的规律或者动力学系统:
需要说明,对于常微分方程,只有某些特殊类型的方程能求得解析解,大部分是很难求得解析解的,所以实际中主要依靠数值法来近似计算求得数值解,以一个简单的具有初始值常微分方程为例:
其解析解为:
而数值解只能给出部分、离散的自变量、因变量近似数值对,例如
欧拉法便是一种非常经典的一阶数值方法。给定初始值和一系列固定间隔h的离散时间点,则可迭代计算:
得到微分方程的数值解。根据递推关系:
可以看出,欧拉法是先从初始点开始,在每一点做切线并沿当前切线推进至下一点,最后连接成一条折线,这种比较“粗糙”的方式精度是比较差的。上面的例子使用欧拉法得到的解如蓝线所示:
2 梯度下降法
在机器学习或者神经网络中,我们大量使用梯度下降法,其实它也可以看作是一个动力系统。给定关于训练集的某种损失函数:
一般情况下,对相当复杂的损失函数,不太可能一步到位直接求解参数的最优解,只能通过某些算法“慢慢地”去寻找最优解,比如使用经典的梯度下降算法,参数不断更新,在参数空间留下一条美妙的轨迹,其行为与动力系统十分相像。
考虑一个由常微分方程表示的动力系统:
使用欧拉法求解该动力系统,则有如下迭代关系:
如果把固定时间间隔h视为学习速度learning rate,则这就是大家非常熟悉的梯度下降算法的表达式,到此应该看得出,所谓梯度下降算法从动力学角度来看,就是使用欧拉法求解某个动力学系统。
当然,我们并不单单致力于能求解微分方程的数值解或者得到参数的轨迹,更重要的是,希望参数θ能够收敛到某个稳定点,动力系统达到某个稳定的状态,损失函数能够收敛。
3 GAN的动力学系统
在GAN中,我们设定生成器的优化目标为最大化f,而判别器的优化目标为最大化g,动力系统的参数由两部分组成:
那么动力学微分方程可写为:
整个动力学仍然采用梯度下降法进行迭代更新,若使用欧拉法求解GAN动力学系统,则可理解为使用同时梯度下降算法:
即在一个时间节点上,同时更新生成器和判别器的参数,其参数轨迹如下:
需要说明一下,通常在GAN中我们使用的是交替梯度下降,两者有一些区别(但是很多情况下并不影响最终的结论),即依次交替更新生成器和判别器的参数,其参数轨迹为:
上一期也说过,GAN并不是在寻找全局最优解,而是在寻找一个局部最优解。我们希望动力学系统的轨迹可以随着不断迭代而进入一个局部收敛点,也就是纳什均衡,定义纳什均衡点为:
容易证明对于零和博弈(f=-g),在纳什均衡点,其雅可比矩阵:
是负定的。反过来,可以通过检查雅可比矩阵的性质来判断是否达到了局部收敛,如果在某个点,其一阶导数为0
且其雅可比矩阵为负定矩阵,则该点为纳什均衡点。
我们知道半负定矩阵的特征值均小于等于0,则:如果在某一点的雅可比矩阵的特征值为均负实数,则在足够小的学习速率的前提下,训练过程收敛;如果特征值出现复数,则训练一般而言不会实现局部收敛;如果复数特征值的实部很小而虚部比较大,此时需要某种非常苛刻的学习速率才能达到收敛状态。
[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,并且给出几个有用的结论。