介绍牛顿法和拟牛顿法
数值分析
牛顿法
牛顿法是解方程f(x)=0的一种方法,取根附近的一点x0做为初值,反复迭代得到最终近似解。迭代方法如下:
首先将f(x)泰勒展开
f(x)≈f(x0)+f′(x0)(x−x0)
于是方程可以近似表示为
x≈x0−f′(x0)f(x0)
将此f(x)比f(x_0)更接近0(严格上需要数学证明收敛性,这里略)
得到递推公式:
xk+1=xk−f′(xk)f(xk)
下面用一个例子加深理解:
解方程:xex−1=0
迭代公式为:
xk+1=xk−xkexk+exkxkexk−1
将x0=0.5代入计算得到每次结果:同样对于多变量f(x1,x2,....xn)也有自己的泰勒公式,具体推导过程略复杂,笔者在这里不给出,有兴趣的可以参考从一阶泰勒公式到高维泰勒公式。高维泰勒展开公式为:
f(X)≈f(X0)+(X−X0)∇f(X0)+21(X−X0)H(f(x0))(X−X0)T
其中∇f(X0)是f在X0处梯度=(x1∂f(x1,x2,....xn),x2∂f(x1,x2,....xn),......xn∂f(x1,x2,....xn))
H(X)是著名的黑塞矩阵
只是高维牛顿法目标求f(X)的极值点,而不是找到f(X)=0的点。 两边同时对X求导(作用一个∇)。
∇f(X)=∇f(X0)+(X−X0)H(f(X0))
令左边等于0,得到牛顿法高阶表达式:
Xk+1=Xk−H−1(f(X0))∗∇f(X0)
拟牛顿法
高阶牛顿法求最极值点时,每一次迭带都要求一次黑塞矩阵计算量超级大,还不一定可逆,可逆了还要求逆,这都是计算机不想做的事情,于是聪明的数学家们就想着用一个矩阵(不用求导不用求逆)来代替黑塞矩阵。
首先要确定什么样的的矩阵可以用来代替黑塞矩阵,也称为拟牛顿条件
(1) 拟牛顿条件
∇f(Xk+1)=∇f(Xk)+(Xk+1−Xk)HkXk
令∇f(Xk+1)−∇f(Xk)=yk,Xk+1−Xk=δk
拟牛顿算法一:DFP算法
拟牛顿算法二:BFGS算法
拟牛顿算法三:L-BFGS算法