牛顿法 主要有两方面的应用:
求方程的根;
求解最优化方法;
一. 为什么要用牛顿法求方程的根?
假设 f(x) = 0 为待求解方程,利用传统方法求解,牛顿法求解方程的公式:
f(X0+Δx) = f(X0) + f′(X0) ΔX
即 f(X) = f(X0) + f′(X0) (X-X0)
这个公式就是一阶泰勒展式,f′(X0) 表示 f(X) 在 X0 点的斜率 ,当X方向增量(Δx)比较小时,Y方向增量(Δy)可以近似表示为 斜率(导数)*X方向增量(f′(x0) Δx) ,令 f(x) = 0,我们能够得到 迭代公式:
X = X0 - f(X0) / f′(X0) => Xn+1 = Xn - f(Xn) / f′(Xn)
通过逐次迭代,牛顿法 将逐步逼近最优值,也就是方程的解。
二. 最优化问题
针对上面问题进行扩展:
解决 f(x) = 0 的问题,我们用了一阶泰勒展开:
f(x) = f(x0) + f'(x0)*(x-x0) + o( (x-x0)^2 )
去掉末位高阶展开项,代入x = x0+Δx,得到:
f(x) = f(x0+Δx) = f(x0) + f′(x0) Δx
那么 要解决 f′(x) = 0 的问题,我们就需要二阶泰勒展开:
f(x) = f(x0) + f'(x0)*(x-x0) + 0.5*f''(x0)*(x-x0)^2 + o( (x-x0)^3 )
去掉末位高阶展开项,代入x = x0+Δx,得到:
f(x) = f(x0+Δx) = f(x0) + f′(x0)Δx + 0.5 * f′′(x0) (Δx)^2
求导计算:对Δx求导,所以得到:
0 = f′(x0) + f′′(x0) (Δx)
==>
0 = f′(x0) + f′′(x0) (x−x0)
整理:
f′(x0) + f′′(x0)(x−x0) = 0
=>
x - x0 = − f′(x0) / f′′(x0)
=>
x = x0 − f′(x0) / f′′(x0)
=>
进一步得到:
Xn+1 = Xn - f'(Xn) / f''(Xn)
三. 牛顿法 与 Hessian矩阵的关系
以上只针对单变量进行讨论,如果对多变量就要引入雅克比矩阵和海森矩阵
简单介绍一下二者,雅克比矩阵为函数对各自变量的一阶导数,海森矩阵为函数对自变量的二次微分。形式分别如下: