为什么共轭梯度法不适用于深度学习中的网络训练?

个人觉的最大的问题还是在于神经网络带来的特别蛋疼的"非凸"性。

而至于说在深度学习中使用共轭梯度法,直接或者非直接的都已经有了,参见On optimization methods for deep learning 以及 Training Deep and Recurrent Networks with Hessian-Free Optimization

应用上来说,共轭梯度(CG)当然可以用,线性搜索要求的计算量大,并不构成它不能用的原因。其实即便随机生成一个下降方向,然后做线性搜索都算是一个算法,只不过没有收敛性保证而已(其实我觉的依概率有..)。这也是上述文章中的算法都并没有理论结果只有数值试验的原因。可是要知道,哪怕随机梯度下降,也没有一个理论保证可以在神经网络中收敛到所谓"全局"哪怕"局部"最小,但并不妨碍它在实际问题上的应用(心虚的是搞优化的人..)。再者,当神经网络优化结合二阶方法的时候,CG就更有使用的必要了。因为在二阶方法里,下降方向是基于优化迭代点处的二阶近似函数得到的。CG在二阶函数上的优化需要的线性搜索得到的步长可以显式的写出来,这个显式的步长只用到所谓的hessian-vector乘积,一次这样的乘积大约只是四倍于算一次梯度的运算量。所以CG能用还不贵,具体实现细节可以看看之前给的文章。

理论上来说,要保证所谓的收敛性或者确定的复杂度,粉难。。简单说说CG会遇到的三懵@.@

第一懵:非二阶强凸函数。CG我觉的最漂亮的应用就是对大规模强凸二阶函数有限步的收敛性,相当于对矩阵直接求逆了。主要是通常在迭代进行一段时间之后,就已经能得到相当好的收敛结果。这主要得益于对强凸二阶函数每一个共轭方向上的针对性优化,而对非二阶强凸函数,二阶矩阵在迭代的过程中会不断变化,导致不存在那么一个确定的坐标系,使得沿着这样的坐标系在有限步内会收敛到最优。可是退一步,因为有线性搜索的存在,合理的"共轭"方向( d^+ = -g^+ + \beta d )依然能带来线性收敛性。还不赖了。

第二懵:二阶非强凸凸或者二阶非凸。回想CG在强凸二阶里做的事是在每一个迭代的时候,找到一个特征方向,然后做线性搜索,找到在这个共轭方向上下降最多的步长,然后再换到另一个共轭方向,重复。那二阶非强凸或者二阶非凸呢,在某些共轭方向上是只能上升或者函数值不变的。这时候CG就懵了,因为讲道理找到了一个方向,但是真瞎没地方移动了,函数值要么不下降要么步长无穷大,怎么走都不对。那硬走?溢出不谢 :)

第三懵:非强凸凸或者非凸。第一懵+第二懵 + 退化的没人认识的二阶三阶高阶导 => 神经网络

那在神经网络上直接应用可能的解决办法,就是用解非凸优化问题的共轭梯度方法,参见Conjugate Gradient Methods for Nonconvex Problems

在神经网络上间接应用可能的解决办法:

第一解:假装自己是二阶。在迭代点生成二阶近似模型上应用CG,这样就可以愉快的使用显式的步长了 :)

第二解:假装自己是凸二阶。白猫黑猫,先套上CG用起来,然后发现了某些蠢方向不能提供正常的下降方向了,那么或者1)就地打住退出CG,用之前的方向(truncated Netwon-CG)。或者2) 沿着当前的方向走一段事先给定的距离(steighaug-CG)。再或者3) 直接用负的梯度方向(steepest descent)。

第三解:假装自己是强凸二阶。为了尽量避免出现第二解的情形,就给每一个二阶近似模型加一个正则项( \lambda\|x\|^2 ),然后根据前后迭代步的模型近似程度调整正则项的大小(Levenberg-Marquardt). 也可以用别的Hessian近似矩阵,例如半正定的Gauss-Newton矩阵。

(第四解: 在相邻迭代步之间以不同的解法可能会需要线性搜索或者信赖域半径的调整。)

最后说下关于随机性,讲道理我觉的随机性并不是一个本质上的问题。这个可以扒开来说很多,有兴趣的话参见另一个回答

梯度下降法的神经网络容易收敛到局部最优,为什么应用广泛?

简单说就是,如果有办法可以把每一个batch函数优化的很好、很快。那在随机意义下,依然可以以概率使最后的收敛结果在"局部"最优甚至"全局"最优的邻域里晃荡的。现在的随机梯度算法就是在做这样的事。线性搜索其实并不可怕,算力够的时候,算法的收敛效果和对减小调参要求的降低才是最需要的。(虽然模型带来表现力的上限吧,不得不承认..)

之外,小小小的toy网络还没搞清楚的时候,就不准备掂着什么深度神经网络了,小网络各种方法的demo感兴趣的可以私信我,欢迎讨论!

===最后掰个小段子:

某一个来我系应聘的postdoc在做报告的时候,说过一句话,大意是:as an optimizer(做优化的人),I do believe that high-order methods could be better that simple gradient-based methods for complex problems。深以为然,觉的如果现在不好,可能只是因为大家都还没发现怎么用才好。即便即便已经有构造性的函数说明: newton methods can be as bad as steepest descent.

不过呢,对所谓神经网络,到最后,大家还是会欢乐的去用随机梯度下降法的,手动微笑 :)



来源:知乎 www.zhihu.com
作者:Esparami

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。 点击下载

此问题还有 5 个回答,查看全部。

没有评论:

发表评论