机器学习-牛顿法和拟牛顿法

守給你的承諾、 提交于 2020-02-23 18:06:00

介绍牛顿法和拟牛顿法

数值分析

牛顿法

牛顿法是解方程f(x)=0f(x)=0的一种方法,取根附近的一点x0x_0做为初值,反复迭代得到最终近似解。迭代方法如下:
首先将f(x)f(x)泰勒展开
f(x)f(x0)+f(x0)(xx0)f(x)\approx f(x_0)+f^{'}(x_0)(x-x_0)
于是方程可以近似表示为
xx0f(x0)f(x0)x \approx x_0-\frac{f(x_0)}{f^{'}(x_0)}
将此f(x)比f(x_0)更接近0(严格上需要数学证明收敛性,这里略)
得到递推公式:
xk+1=xkf(xk)f(xk)x_{k+1} =x_k-\frac{f(x_k)}{f^{'}(x_k)}
下面用一个例子加深理解:
解方程:xex1=0xe^x-1=0
迭代公式为:
xk+1=xkxkexk1xkexk+exkx_{k+1} =x_k-\frac{x_ke^{x_k}-1}{x_ke^{x_k}+e^{x_k}}
x0=0.5x_0=0.5代入计算得到每次结果:在这里插入图片描述同样对于多变量f(x1,x2,....xn)f(x_1,x_2,....x_n)也有自己的泰勒公式,具体推导过程略复杂,笔者在这里不给出,有兴趣的可以参考从一阶泰勒公式到高维泰勒公式。高维泰勒展开公式为:
f(X)f(X0)+(XX0)f(X0)+12(XX0)H(f(x0))(XX0)Tf(X)\approx f(X_0)+(X-X_0)\nabla f(X_0)+\frac{1}{2}(X-X_0)H(f(x_0))(X-X_0)^T
其中f(X0)\nabla f(X_0)ffX0X_0处梯度=(f(x1,x2,....xn)x1,f(x1,x2,....xn)x2,......f(x1,x2,....xn)xn\frac{\partial f(x_1,x_2,....x_n)}{x_1},\frac{\partial f(x_1,x_2,....x_n)}{x_2},......\frac{\partial f(x_1,x_2,....x_n)}{x_n}
H(X)是著名的黑塞矩阵
在这里插入图片描述
只是高维牛顿法目标求f(X)f(X)的极值点,而不是找到f(X)=0f(X)=0的点。 两边同时对XX求导(作用一个\nabla)。
f(X)=f(X0)+(XX0)H(f(X0))\nabla f(X)=\nabla f(X_0)+(X-X_0)H(f(X_0))
令左边等于0,得到牛顿法高阶表达式:
Xk+1=XkH1(f(X0))f(X0) X_{k+1}=X_k-H^{-1}(f(X_0))*\nabla f(X_0)

拟牛顿法

高阶牛顿法求最极值点时,每一次迭带都要求一次黑塞矩阵计算量超级大,还不一定可逆,可逆了还要求逆,这都是计算机不想做的事情,于是聪明的数学家们就想着用一个矩阵(不用求导不用求逆)来代替黑塞矩阵。
首先要确定什么样的的矩阵可以用来代替黑塞矩阵,也称为拟牛顿条件

(1) 拟牛顿条件

f(Xk+1)=f(Xk)+(Xk+1Xk)HkXk\nabla f(X_{k+1})=\nabla f(X_k)+(X_{k+1}-X_k)H_kX_k
f(Xk+1)f(Xk)=yk,Xk+1Xk=δk\nabla f(X_{k+1})-\nabla f(X_{k})=y_k,X_{k+1}-X_k=\delta_k
在这里插入图片描述

拟牛顿算法一:DFP算法

在这里插入图片描述

拟牛顿算法二:BFGS算法

在这里插入图片描述

拟牛顿算法三:L-BFGS算法

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!