牛顿法的基本含义
泰勒公式:
f(x)=f(a)0!(x−a)0+f′(a)1!(x−a)+f′′(a)2!(x−a)2+...+fn(a)n!(x−a)n+Rn(x)(B.1)
现在要求f(x)的极小值,假设f(x)是二阶连续偏导数,若第k次迭代值为
xk
,则可将f(x)在该点附近进行二阶泰勒展开:
f(x)=f(xk)+gTk(x−xk)+12(x−xk)TH(xk)(x−xk)(B.2)
gk=g(xk)=∇(f(xk)就是梯度向量在当前点的值(B.3)
H(xk)=[∂2f∂xi∂xj]n∗n代表海森矩阵在该点的值
推导流程
我们知道求极值,必要条件是一阶导数为0,那么
∇f(x)=0
我们利用
f(x)
推导一下:
∂f(x)∂x=gk+H(xk)(x−xk)
基于
∂xTAx∂x=2Ax
把一阶导数带入:
gk+H(xk)(xk+1−xk)=0(B.4)
xk+1=xk−H−1kgk(B.5)
至此找到了两次不同位置点的更新公式,那就找到了迭代方法。于是
算法流程
输入:
f(x)
,梯度
g(x)=∇f(x)
, 海塞矩阵
H(x)
, 精度要求
ε
输出:
f(x)
的极小点
x∗
算法步骤:
- 初始化点 x0,k=0 .
- 计算梯度 g(xk)
- ||g(xk)||<ε ,则得到极小点 xk
- 否则继续迭代 xk+1=xk−H−1kgk ,得到k=k+1
- 然后转步骤2
核心要点
- 需要求极值
- 然后泰勒公式展开
- 然后求导,得到梯度和海塞矩阵
- 极值满足必要条件梯度为0,所以推导出两次迭代的更新公式
- 根据精度得到迭代跳出条件
- 海塞矩阵逆矩阵是复杂度较高的计算,需要优化和计算解决的问题。