牛顿迭代法
1概念:
Jacobi 矩阵:又称为雅克比矩阵。如果f(x)是标量函数,那么雅克比矩阵是一个向量,等于 f(x) 的梯度。如果f(x)是向量函数,那么雅克比矩阵是二维矩阵,hession矩阵是三维矩阵。
梯度是 Jacobian 矩阵的特例,梯度的 jacobian 矩阵就是 Hesse 矩阵。
hession矩阵:又称海森矩阵,黑塞矩阵。
如果f(x)是标量函数,f(x1,x2,x3,…,xn),那么hession矩阵是二维矩阵,如下图:
2解决问题:
f(x),在定义域[a,b]中最小值。求f(x)最小值,如果f(x)在[a,b]上局部最小值唯一,则也就是求:f’(x)=0。
3牛顿步骤:
如果f(x)满足一下几个条件:
1.f(x)在[a,b]二次可微,即f(x)又二次导数.只有二次可微,这样f(x)才能求Hession矩阵
2.f(x)的Hession矩阵在[a,b]上正定,只要在某些位置不正定,就有可能收敛不到局部极小值点
计算的步骤:
不停迭代n步,直到Xk+1 - Xk小于某个值,比如0.0001.
牛顿方法有两个好处:
1:收敛快,是二次收敛。
请看wikipdia:
http://en.wikipedia.org/wiki/Newton%27s_method
下关于二次收敛的证明:
Proof of quadratic convergence for Newton’s iterative method
而且要满足以下条件才收敛:
1f(x)导数不等于零,因为f(x)导数为分母。
2f(x)的二次导师是有限的。
3x充分接近局部极值点a.
2:
只要初始值充分接近局部极小值,则可以保证收敛到局部极小值。
但计算Hession矩阵的逆矩阵,时间复杂度为n的3次方,空间复杂度为n的平方。
为什么是n的三次方,由于矩阵的逆矩阵计算有两种方法:
一种是先计算矩阵的每个元素的伴随矩阵,再用伴随矩阵除以矩阵行列式的值作为逆矩阵对应的值。
第二种是先计算增广矩阵,增广矩阵左边是该矩阵,右边是单位矩阵。最后变成左边为单位矩阵,右边的值为逆矩阵。具体方法是:主对角线元素互换并除以行列式的值,副对角线元素变号并除以行列式的值.
时间复杂第二种是n的3次。
所以用这种牛顿方法有太多限制:所以出现了 L-BFGS,拟牛顿等很多好的方法。