本来这一章应该接着上一章进行优化算法的介绍的。但是,后来我发现接下去的很多算法都是与海森矩阵紧密相关的,所以在这一章先介绍海森矩阵,牛顿算法这些,然后再接着介绍剩余的优化算法。话不多说,下面开始:
1、海森矩阵 Hessian Matrix
海森矩阵和牛顿法密切相关。
可以利用海森矩阵进行多元函数的极值判断。参考:https://blog.csdn.net/guoyunfei20/article/details/78246699
2、牛顿法
是一种在实数域和复数域上近似求解方程的方法。
参考:https://baike.baidu.com/item/%E7%89%9B%E9%A1%BF%E6%B3%95/1384129#4 以下是牛顿法的本源原理:
总结来说:牛顿法就是一种近似于泰勒级数展开的一种迭代接近求值的方法。当然,上述的分析是在一元平面的,在深度学习的过程中我们更需要的是在二维平面上的求解。
参考:https://www.cnblogs.com/shixiangwan/p/7532830.html
蓝色的为目标函数,红色的为切线。整个过程就是求解最小值的方法。是不是和梯度下降有点相似?但是这个方法的下降速度比梯度下降要快的多。
关于上述图像的求解方法:
参考网址:https://www.cnblogs.com/monoSLAM/p/5246665.html
讨论到多维即x是一个向量的时候的牛顿迭代公式为:
参考:https://www.cnblogs.com/ljy2013/p/5129294.html
算法步骤:
牛顿法的缺点在于最优化求解的时候需要求解海森矩阵。
3、拟牛顿法
由于海森矩阵的逆矩阵计算过于复杂,所以诞生了拟牛顿算法,即用一个正定矩阵代替海森矩阵的逆矩阵,从而减缓运算复杂度。
多维的时候,二阶求导式子可写作海森矩阵,这样:
我们可以选择用一个正定矩阵代替海森矩阵,
每次迭代我们需要更新代替矩阵Gk。
3.1 DFP算法
参考:https://www.cnblogs.com/ljy2013/p/5129294.html
其核心是:通过迭代的方法,对做近似。其中
反正,经历了一系列的推到,得出矫正公式:
其中:
唔,感兴趣的童鞋可以根据3.1的连接去看原文,我这里就直接粘贴推导结果了。再次感谢大大们的细心撰写,耐心推导!!!!
3.2 BFGS算法
其中矫正公式为:
具体算法:
3.3 L-BFGS :省内存的BFGS
下面是另外一种算法的表示方式:
我只能做到这里了,╮(╯▽╰)╭看不懂,大大们的世界太复杂。反正了解一下,就是一个省内存的算法。
这里为止,我应该介绍完了所有的有关海森矩阵和牛顿法的东西了。反正……就是辣么个东东,后面大概是要接触到的。了解一下,(#^.^#),我也是一知半解啊,╮(╯▽╰)╭。
等以后再回来看可能会好一些。先这样放在这里,当做一篇笔记的flag,等以后了解了一点再回来改。