梯度下降和牛顿迭代——qjzcy的博客

梯度下降和牛顿迭代


数值优化会经常遇到。网上搜了搜发现各大神已经总结的非常完美了。自己就手动推一遍牛顿迭代的公式好了,当作复习。
梯度下降和牛顿迭代主要做的事情就两步
1、 找到搜索的方向,
2、 迭代的步长


引子:
我们很多问题最后都会归结到要寻找一个凸函数的极值点,比如:
那么怎么才能找到极值点?
我们先拿一个一维的曲线来举例,怎么找到极值点
首先我们所学的高等数学告诉我们导数为0的地方就是极值点。
那么问题来了,当我们在X=X(k)的时候,怎样才能得到极值点,很显然我们需要两步,一、找到极值点所在的方向,二、向极值点前进一小步。

梯度下降:
下降方向:负的梯度方向
牛顿法:
下降方向和步长:
这里写图片描述

梯度下降和牛顿迭代——qjzcy的博客_第1张图片
牛顿法公式推导:
说牛顿法要先说一个重要的公式泰勒公式
梯度下降和牛顿迭代——qjzcy的博客_第2张图片
其中H就为我们所需要求的海塞矩阵,公式10即为刚刚我们得出的下降方向和步长

拟牛顿法:
拟牛顿法的本质在用x和一阶导数以及已知的海塞矩阵来近似计算当前的海塞矩阵,其中DFS,BFGS法是我们常见的。
DFS算法:
公式推导如下分为秩一矫正和秩二矫正。
梯度下降和牛顿迭代——qjzcy的博客_第3张图片

梯度下降和牛顿迭代——qjzcy的博客_第4张图片

BFGS算法:
如下图推导,其实BFGS的推导只是把DFS中的qk和pk对换。
梯度下降和牛顿迭代——qjzcy的博客_第5张图片
虽然得到了BFGS的迭代公式,可是还是矩阵相乘太多,于是我们用到Sherman-Morrison公式:
这里写图片描述
进行变换,可得
这里写图片描述
L-BFGS算法:
L-BFGS的含义为Limited-memory BFGS。
在BFGS算法中,每次都要存储近似Hesse矩阵,在高维数据时,存储H浪费很多的存储空间,因此出现了L-BFGS算法,顾名思义即用有限的内存实现BFGS。在L-BFGS算法中,只保存最近的 次迭代信息,以降低数据的存储空间。并且向量序列只保存最新的m步即可。M由用户自己决定,这样H的储存由原来的o(n*n)将到o(m*n)

引用:
这里还有两篇博客写的不错
http://blog.csdn.net/google19890102/article/details/46389869
http://blog.csdn.net/zhirom/article/details/38332111

你可能感兴趣的:(机器学习)