【傻瓜攻略】深度学习之海森矩阵(九)

本来这一章应该接着上一章进行优化算法的介绍的。但是,后来我发现接下去的很多算法都是与海森矩阵紧密相关的,所以在这一章先介绍海森矩阵,牛顿算法这些,然后再接着介绍剩余的优化算法。话不多说,下面开始:

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,等以后了解了一点再回来改。

猜你喜欢

转载自blog.csdn.net/lyy_sha/article/details/80594931