牛顿法 (Newton Method)
背景
求解非线性方程和优化问题,在此之前是用二分法解决逼近问题。
核心内容
- 泰勒级数展开
- 迭代更新
- 梯度和海森矩阵(Hessian Matrix)
- 收敛性条件
特点
收敛速度快,但需要计算高阶导数(海森矩阵)
基本思想
利用迭代点处的一阶导数(梯度)和二阶导数(海森矩阵)对目标函数进行二次函数近似,然后把二次模型的极小值点作为新的迭代点,并不断重复这一过程,直到满足截止条件(一般是求解精度)
基本牛顿法
基本牛顿法是一种用导数的方法,它的每一步迭代方向都是沿当前点函数值下降的方向。
应用A-求解非线性方程问题(又名切线法等名字较多)
假设,我们要求某个非线性方程
f
(
x
)
=
0
f(x)=0
f(x)=0,给出一阶泰勒展开式:
f
(
x
)
=
f
(
x
0
)
+
f
′
(
x
0
)
(
x
−
x
0
)
+
o
(
x
−
x
0
)
2
f(x)=f(x_0)+f'(x_0)(x-x_0)+o(x-x_0)^2
f(x)=f(x0)+f′(x0)(x−x0)+o(x−x0)2
忽略二阶项,则有:
x
=
x
0
−
f
(
x
0
)
f
′
(
x
0
)
x=x_0-\frac{f(x_0)}{f'(x_0)}
x=x0−f′(x0)f(x0)
我们找到新的近似值
x
x
x,当重复整个过程就可以不断逼近零点,从几何意义上讲,改过程可以看成上图给定一个初始值
x
0
x_0
x0,求其切线与x轴的交点
x
x
x,得到近似值后重复整个过程直到截止条件。
总结
如果 x n x_n xn是非线性方程 f ( x ) = 0 f(x)=0 f(x)=0的一个近似解,如果 f ′ ( x n ) ≠ 0 f'(x_n)\neq0 f′(xn)=0,则下一个近似解由下式给出 x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)} xn+1=xn−f′(xn)f(xn)
应用B-优化问题
我们集中讨论一维情形,对于一个需要求解的优化函数
f
(
x
)
f(x)
f(x),求函数的极值问题可以转化为求解导数问题
f
′
(
x
)
=
0
f'(x)=0
f′(x)=0
给出函数二阶泰勒公式:
f
(
x
)
=
f
(
x
k
)
+
f
′
(
x
k
)
(
x
−
x
k
)
+
1
2
f
′
′
(
x
k
)
(
x
−
x
k
)
2
+
o
(
x
−
x
k
)
3
f(x)=f(x_k)+f'(x_k)(x-x_k)+\frac{1}{2}f''(x_k)(x-x_k)^2+o(x-x_k)^3
f(x)=f(xk)+f′(xk)(x−xk)+21f′′(xk)(x−xk)2+o(x−xk)3
则问题可近似转化为:
f
′
(
x
k
)
+
f
′
′
(
x
k
)
(
x
−
x
k
)
=
0
f'(x_k)+f''(x_k)(x-x_k)=0
f′(xk)+f′′(xk)(x−xk)=0即:
x
=
x
k
−
f
′
(
x
k
)
f
′
′
(
x
k
)
x=x_k-\frac{f'(x_k)}{f''(x_k)}
x=xk−f′′(xk)f′(xk)得到更新公式,循环上述过程
流程
- 给定终止条件 0 < ε < 1 0<\varepsilon<1 0<ε<1;
- 选择初始点 x 0 ∈ R n x_0\in R^n x0∈Rn , 令 k = 0 k=0 k=0
- 计算一阶导(梯度) g k = ▽ f ( x k ) g_k = \triangledown f(x_k) gk=▽f(xk)
- 判断 g k < ε g_k<\varepsilon gk<ε?
- 若是, x ∗ ≃ x k x^*\simeq x_k x∗≃xk
- 否则,计算 G k = ▽ 2 f ( x k ) G_k = \triangledown^2f(x_k) Gk=▽2f(xk),得到更新解: x k + 1 = x k − g k G k x_{k+1}=x_k-\frac{g_k}{G_k} xk+1=xk−Gkgk
- 令 k = k + 1 k=k+1 k=k+1,重复计算过程转2
其他牛顿法
比如基于Armijo搜索的全局牛顿法等,都是此基础的优化,本处不再讨论。