赞
踩
牛顿法是用迭代的方法,来求解方程的根和最优化
预备知识
1.Hessian矩阵
2.多元泰勒展开
用牛顿法求解方程的根
用牛顿法求解导数为0 的点
相当于一元函数的二阶导数,所有元素由函数的二阶偏导数构成。
由于高阶导数一般和求导次序无关,所以Hessian矩阵往往是对称矩阵
f
(
x
1
,
x
2
,
.
.
.
x
n
)
f(x_1,x_2,...x_n)
f(x1,x2,...xn)
H
(
f
)
=
(
∂
2
f
∂
x
1
∂
x
1
∂
2
f
∂
x
1
∂
x
2
∂
2
f
∂
x
1
∂
x
3
∂
2
f
∂
x
2
∂
x
1
∂
2
f
∂
x
2
∂
x
2
∂
2
f
∂
x
2
∂
x
3
∂
2
f
∂
x
3
∂
x
1
∂
2
f
∂
x
3
∂
x
2
∂
2
f
∂
x
3
∂
x
3
)
H(f)=
举个例子:
f
(
x
,
y
,
z
)
=
2
x
2
−
x
y
+
y
2
−
3
z
2
f(x,y,z)=2x^2-xy+y^2-3z^2
f(x,y,z)=2x2−xy+y2−3z2
故Hessian矩阵为
(
4
−
1
0
−
1
2
0
0
0
−
6
)
Hessian矩阵的作用:
与多元函数的凹凸性由密切的关系。
如果Hessian矩阵正定,则f(x,y,z)是凸函数
如果Hessian矩阵负定,则f(x,y,z)是凹函数
极值判别法:
一元函数的极值判别法:
多元函数的极值判别法
一元函数的泰勒展开
f
(
x
k
+
1
)
=
f
(
x
k
)
+
f
′
(
x
k
)
(
x
k
+
1
−
x
k
)
+
1
2
f
′
′
(
x
k
)
(
x
(
k
+
1
)
−
x
k
)
2
+
.
.
.
+
1
n
!
f
(
n
)
(
x
k
)
(
x
k
+
1
−
x
k
)
n
+
1
n
+
1
!
f
(
n
+
1
)
(
ϵ
)
(
x
k
+
1
−
x
k
)
n
+
1
f(x^{k+1})=f(x^{k})+f'(x^{k})(x^{k+1}-x^{k})+\frac{1}{2}f''(x^{k})(x^{(k+1)}-x^{k})^2+...+\frac{1}{n!}f^{(n)}(x^{k})(x^{k+1}-x^{k})^n+\frac{1}{n+1!}f^{(n+1)}(\epsilon)(x^{k+1}-x^{k})^{n+1}
f(xk+1)=f(xk)+f′(xk)(xk+1−xk)+21f′′(xk)(x(k+1)−xk)2+...+n!1f(n)(xk)(xk+1−xk)n+n+1!1f(n+1)(ϵ)(xk+1−xk)n+1
其中
ϵ
\epsilon
ϵ是介于
x
k
x^{k}
xk与
x
k
+
1
x^{k+1}
xk+1的数
推广到多元函数的泰勒展开
f
(
x
)
=
f
(
x
0
)
+
(
∇
f
(
x
0
)
)
T
(
x
−
x
0
)
+
1
2
(
x
−
x
0
)
T
H
(
x
0
)
(
x
−
x
0
)
+
O
(
∣
∣
x
−
x
0
∣
∣
2
)
f(x)=f(x_0)+(\nabla f(x_0))^T(x-x_0)+\frac{1}{2}(x-x_0)^TH(x_0)(x-x_0)+O\big( ||x-x_0||^2 \big)
f(x)=f(x0)+(∇f(x0))T(x−x0)+21(x−x0)TH(x0)(x−x0)+O(∣∣x−x0∣∣2)
一元函数的情形:
f
(
x
k
+
1
)
f(x^{k+1})
f(xk+1)在
x
=
x
k
x=x^{k}
x=xk一阶展开
f
(
x
k
+
1
)
=
f
(
x
k
)
+
f
′
(
x
k
)
(
x
k
+
1
−
x
k
)
+
O
f(x^{k+1})=f(x^{k})+f'(x^{k})(x^{k+1}-x^{k})+O
f(xk+1)=f(xk)+f′(xk)(xk+1−xk)+O
因为我们要找到的是
f
(
x
k
+
1
)
=
0
f(x^{k+1})=0
f(xk+1)=0的位置
故
f
(
x
k
)
+
f
′
(
x
k
)
(
x
k
+
1
−
x
k
)
=
0
f(x^{k})+f'(x^{k})(x^{k+1}-x^{k})=0
f(xk)+f′(xk)(xk+1−xk)=0
化简的
x
k
+
1
=
x
k
−
f
(
x
k
)
f
′
(
x
k
)
x^{k+1}=x^{k}-\frac{f(x^{k})}{f'(x^{k})}
xk+1=xk−f′(xk)f(xk)
一元函数的情形:
f
(
x
k
+
1
)
f(x^{k+1})
f(xk+1)在
x
=
x
k
x=x^{k}
x=xk二阶展开
f
(
x
k
+
1
)
=
f
(
x
k
)
+
f
′
(
x
k
)
(
x
k
+
1
−
x
k
)
+
1
2
f
′
′
(
x
k
)
(
x
(
k
+
1
)
−
x
k
)
2
+
O
f(x^{k+1})=f(x^{k})+f'(x^{k})(x^{k+1}-x^{k})+\frac{1}{2}f''(x^{k})(x^{(k+1)}-x^{k})^2+O
f(xk+1)=f(xk)+f′(xk)(xk+1−xk)+21f′′(xk)(x(k+1)−xk)2+O
因为我们要找的
f
(
x
k
+
1
)
f(x^{k+1})
f(xk+1)的导数为0
故函数左右两端同时对
x
k
+
1
x^{k+1}
xk+1求导=0
得
x
k
+
1
=
x
k
−
f
′
(
x
k
)
f
′
′
(
x
k
)
=
x
k
−
f
′
′
(
x
k
)
−
1
f
′
(
x
k
)
x^{k+1} = x^{k}-\frac{f'(x^{k})}{f''(x^{k})}\\ =x^{k}-f''(x^{k})^{-1}f'(x^{k})
xk+1=xk−f′′(xk)f′(xk)=xk−f′′(xk)−1f′(xk)
由此可以推测,若求n阶导为0的点
则迭代公式为:
x
k
+
1
=
x
k
−
f
n
(
x
k
)
f
n
+
1
(
x
k
)
x^{k+1} = x^{k}-\frac{f^{n}(x^{k})}{f^{n+1}(x^{k})}
xk+1=xk−fn+1(xk)fn(xk)
推广到多元
f
(
x
k
+
1
)
f(x^{k+1})
f(xk+1)在
x
=
x
k
x=x^{k}
x=xk二阶展开
f
(
x
k
+
1
)
=
f
(
x
k
)
+
∇
f
(
x
k
)
T
(
x
k
+
1
−
x
k
)
+
1
2
(
x
k
+
1
−
x
k
)
T
H
(
x
k
)
(
x
k
+
1
−
x
k
)
+
O
(
∣
∣
x
−
x
0
∣
∣
2
)
f(x^{k+1})=f(x^{k})+\nabla f(x^{k})^T(x^{k+1}-x^{k})+\frac{1}{2}(x^{k+1}-x^{k})^TH(x^{k})(x^{k+1}-x^{k})+O\big( ||x-x_0||^2 \big)
f(xk+1)=f(xk)+∇f(xk)T(xk+1−xk)+21(xk+1−xk)TH(xk)(xk+1−xk)+O(∣∣x−x0∣∣2)
因为我们要找的
∇
f
(
x
k
+
1
)
\nabla f(x^{k+1})
∇f(xk+1)为0的坐标
故函数左右两端同时对
x
k
+
1
x^{k+1}
xk+1求梯度,并令其为0
得
x
k
+
1
=
x
k
−
H
(
x
k
)
−
1
∇
f
(
x
k
)
x^{k+1}=x^{k}-H(x_k)^{-1}\nabla f(x_k)
xk+1=xk−H(xk)−1∇f(xk)
为了保证确实可以忽略高阶无穷小
则
x
k
+
1
=
x
k
−
H
(
x
k
)
−
1
∇
f
(
x
k
)
∗
γ
x^{k+1}=x^{k}-H(x_k)^{-1}\nabla f(x_k)*\gamma
xk+1=xk−H(xk)−1∇f(xk)∗γ
其中
−
H
(
x
k
)
−
1
∇
f
(
x
k
)
∗
γ
-H(x_k)^{-1}\nabla f(x_k)*\gamma
−H(xk)−1∇f(xk)∗γ
为搜索方向
牛顿法无法保证每次迭代后,函数值会更小,所以
γ
\gamma
γ的选取非常有技巧,往往采用线性搜索(line search)
即gamma的取值在0.01,0.001,0.0001,0.00001这几个选项中,选择令函数值下降最快的步长。
牛顿法的终止条件:
设置迭代停止条件:
1) 最大迭代次数T,迭代次数大于T时停止迭代
2) 停止搜索条件 ∣ ∣ ∇ f ∣ ∣ < ϵ ||\nabla f||<\epsilon ∣∣∇f∣∣<ϵ,满足条件时停止
牛顿法与梯度下降法的联系:
牛顿法与梯度下降法是非常相似的,只是牛顿法多乘Hessian矩阵的逆矩阵。
梯度下降法是用线性函数来近似代替目标函数,而牛顿法是用二次函数来代替目标函数,故牛顿法的收敛速度是更快的。
尤其是当函数的三阶导为0时,只需要迭代一次,即可得到最终的结果。
牛顿法的局限:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。