思维导图
- 牛顿法求解最优化问题原理
- 牛顿法与梯度下降法的差异
- 拟牛顿法
牛顿法求解最优化问题原理
- 原理阐述:
-
f
(
x
)
f(x)
f(x)的取得最小值(极小值)的必要条件是
∇
f
(
x
)
=
0
\nabla{f(x)}=0
∇f(x)=0,所以牛顿法就是来逼近
x
∗
x^*
x∗,使
∇
f
(
x
∗
)
=
0
\nabla{f(x^*)}=0
∇f(x∗)=0。
-
f
(
x
)
f(x)
f(x)的取得最小值(极小值)的必要条件是
∇
f
(
x
)
=
0
\nabla{f(x)}=0
∇f(x)=0,所以牛顿法就是来逼近
x
∗
x^*
x∗,使
∇
f
(
x
∗
)
=
0
\nabla{f(x^*)}=0
∇f(x∗)=0。
- 过程推导:
-
f
(
x
⃗
)
f(\vec{x})
f(x)在
x
0
⃗
\vec{x_0}
x0处的二阶泰勒展开式为
f ( x ) = f ( x 0 ) + ∇ f ( x 0 ) T ( x − x 0 ) + 1 2 ( x − x 0 ) T ∇ 2 f ( 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)^T\nabla^2f(x_0)(x-x_0)+o(||x-x_0||^2) f(x)=f(x0)+∇f(x0)T(x−x0)+21(x−x0)T∇2f(x0)(x−x0)+o(∣∣x−x0∣∣2) - 将二次项以及二次项的高阶无穷小项舍去,可近似得
f ( x ) = f ( x 0 ) + ∇ f ( x ) T ( x − x 0 ) f(x)=f(x_0)+\nabla{f(x)}^T(x-x_0) f(x)=f(x0)+∇f(x)T(x−x0) - 对上式子两边同求求梯度
∇ f ( x ) = ∇ f ( x 0 ) + ∇ 2 f ( x 0 ) ( x − x 0 ) \nabla{f(x)}=\nabla{f(x_0)}+\nabla^2f(x_0)(x-x_0) ∇f(x)=∇f(x0)+∇2f(x0)(x−x0) - 令梯度等于0,即牛顿法原理的核心:梯度为0,求得驻点,驻点处可能取得极值
∇ f ( x 0 ) + ∇ 2 f ( x 0 ) ( x − x 0 ) = 0 \nabla{f(x_0)}+\nabla^2f(x_0)(x-x_0)=0 ∇f(x0)+∇2f(x0)(x−x0)=0 - 变式可得:
x = x 0 − ( ∇ 2 f ( x 0 ) ) − 1 ∇ f ( x 0 ) x=x_0-(\nabla^2f(x_0))^{-1}\nabla{f(x_0)} x=x0−(∇2f(x0))−1∇f(x0) - 由于推导过程中忽略了二阶及二阶以上的无穷小,故而需要反复的迭代来求解。
-
f
(
x
⃗
)
f(\vec{x})
f(x)在
x
0
⃗
\vec{x_0}
x0处的二阶泰勒展开式为
- 案例展示:求取
f
(
x
,
y
)
=
x
2
+
y
2
+
x
f(x,y)=x^2+y^2+x
f(x,y)=x2+y2+x的极值
- 将
f
(
x
,
y
)
=
x
2
+
y
2
+
x
f(x,y)=x^2+y^2+x
f(x,y)=x2+y2+x在
(
x
,
y
)
(x,y)
(x,y)处展开成二阶泰勒
f ( x + Δ x , y + Δ y ) = f ( x , y ) + [ Δ x Δ y ] [ f x ′ f y ′ ] + 1 2 [ Δ x Δ y ] [ f x x ′ ′ f x y ′ ′ f y x ′ ′ f y y ′ ′ ] [ Δ x Δ y ] + o n f(x+\Delta{x},y+\Delta{y})=f(x,y)+\left[ \begin{matrix} \Delta{x} & \Delta{y} \end{matrix} \right] \left[ \begin{matrix} f'_x\\\\f'_y \end{matrix} \right]+\frac{1}{2}\left[ \begin{matrix} \Delta{x} & \Delta{y} \end{matrix} \right] \left[ \begin{matrix} f''_{xx} & f''_{xy}\\\\f''_{yx} & f''_{yy} \end{matrix} \right]\left[ \begin{matrix} \Delta{x}\\\\\Delta{y} \end{matrix} \right]+o^n f(x+Δx,y+Δy)=f(x,y)+[ΔxΔy]⎣⎡fx′fy′⎦⎤+21[ΔxΔy]⎣⎡fxx′′fyx′′fxy′′fyy′′⎦⎤⎣⎡ΔxΔy⎦⎤+on - 由梯度向量为
[
2
x
+
1
2
y
]
\left[ \begin{matrix} 2x+1 \\ 2y \end{matrix} \right]
[2x+12y],Heissan矩阵为
[
2
0
0
2
]
\left[ \begin{matrix} 2 &0 \\ 0 & 2 \end{matrix} \right]
[2002],带入上式可得:
f ( x + Δ x , y + Δ y ) = f ( x , y ) + ( 2 x + 1 ) ∗ Δ x + 2 y ∗ Δ y + o 2 f(x+\Delta{x},y+\Delta{y})=f(x,y)+(2x+1)*\Delta{x}+2y*\Delta{y}+o^2 f(x+Δx,y+Δy)=f(x,y)+(2x+1)∗Δx+2y∗Δy+o2 - 舍去二阶及二阶以上的无穷小,可得式子
f ( x + Δ x , y + Δ y ) = f ( x , y ) + ( 2 x + 1 ) ∗ Δ x + 2 y ∗ Δ y f(x+\Delta{x},y+\Delta{y})=f(x,y)+(2x+1)*\Delta{x}+2y*\Delta{y} f(x+Δx,y+Δy)=f(x,y)+(2x+1)∗Δx+2y∗Δy - 对
f
(
x
+
Δ
x
,
y
+
Δ
y
)
f(x+\Delta{x},y+\Delta{y})
f(x+Δx,y+Δy)求偏度(即分别对
x
x
x和
y
y
y求偏导数),可得:
∂ f ( x + Δ x , y + Δ y ) ∂ x = ∂ f ( x , y ) ∂ x + 2 ∗ Δ x = 0 \frac{\partial f(x+\Delta{x},y+\Delta{y})}{\partial x}=\frac{\partial f(x,y)}{\partial x}+2*\Delta{x}=0 ∂x∂f(x+Δx,y+Δy)=∂x∂f(x,y)+2∗Δx=0
∂ f ( x + Δ x , y + Δ y ) ∂ y = ∂ f ( x , y ) ∂ y + 2 ∗ Δ y = 0 \frac{\partial f(x+\Delta{x},y+\Delta{y})}{\partial y}=\frac{\partial f(x,y)}{\partial y}+2*\Delta{y}=0 ∂y∂f(x+Δx,y+Δy)=∂y∂f(x,y)+2∗Δy=0 - 经整理可得:
{ 2 x + 1 + 2 Δ x = 0 2 y + 2 Δ y = 0 \left \{ \begin{array}{c} 2x+1+2\Delta{x}=0 \\ 2y+2\Delta{y}=0 \end{array} \right. {2x+1+2Δx=02y+2Δy=0 - 又由
x
=
x
k
x=x_{k}
x=xk,
y
=
y
k
y=y_{k}
y=yk以及
Δ
x
=
x
k
+
1
−
x
k
\Delta{x}=x_{k+1}-x_{k}
Δx=xk+1−xk,
Δ
y
=
y
k
+
1
−
y
k
\Delta{y}=y_{k+1}-y_{k}
Δy=yk+1−yk,带入可得:
{ 2 x k + 1 + 2 ( x k + 1 − x k ) = 0 2 y k + 2 ( y k + 1 − y k ) = 0 \left \{ \begin{array}{c} 2x_{k}+1+2(x_{k+1}-x_{k})=0 \\ 2y_{k}+2(y_{k+1}-y_{k})=0 \end{array} \right. {2xk+1+2(xk+1−xk)=02yk+2(yk+1−yk)=0 - 移项,解出
(
x
k
+
1
,
y
k
+
1
)
(x_{k+1},y_{k+1})
(xk+1,yk+1)
[ x k + 1 y k + 1 ] = [ x k y k ] − [ 2 x k + 1 2 2 y k 2 ] = [ − 0.5 0 ] \left[ \begin{matrix} x_{k+1} \\ y_{k+1} \end{matrix} \right]=\left[ \begin{matrix} x_{k} \\ y_{k} \end{matrix} \right]-\left[ \begin{matrix} \frac{2x_k+1}{2} \\\\ \frac{2y_k}{2} \end{matrix} \right]=\left[ \begin{matrix} -0.5\\\\0 \end{matrix} \right] [xk+1yk+1]=[xkyk]−⎣⎡22xk+122yk⎦⎤=⎣⎡−0.50⎦⎤
- 将
f
(
x
,
y
)
=
x
2
+
y
2
+
x
f(x,y)=x^2+y^2+x
f(x,y)=x2+y2+x在
(
x
,
y
)
(x,y)
(x,y)处展开成二阶泰勒
牛顿法与梯度下降法的差异
- 推导起点都是 f ( x ⃗ ) f(\vec{x}) f(x)的泰勒展开式,且二阶及更高阶无穷小的影响都用步长 γ \gamma γ接近于0来保证( x + Δ x x+\Delta{x} x+Δx在 x x x的邻域内);
- 梯度下降法后续的处理为:
f ( x + Δ x ) − f ( x ) = ∇ f ( x ) ∗ Δ x ≤ 0 f(x+\Delta{x})-f(x)=\nabla{f(x)}*\Delta{x}\leq0 f(x+Δx)−f(x)=∇f(x)∗Δx≤0恒成立,所以要求 Δ x = − γ ∇ f ( x ) \Delta{x}=-\gamma\nabla{f(x)} Δx=−γ∇f(x) - 牛顿法后续的处理为:
f ( x + Δ x ) = f ( x ) + ∇ f ( x ) ∗ Δ x ∇ f ( x + Δ x ) = ∇ f ( x ) + ∇ 2 f ( x ) ∗ Δ x = 0 f(x+\Delta{x})=f(x)+\nabla{f(x)}*\Delta{x} \\ \nabla{f(x+\Delta{x})}=\nabla{f(x)}+\nabla^2{f(x)}*\Delta{x}=0 f(x+Δx)=f(x)+∇f(x)∗Δx∇f(x+Δx)=∇f(x)+∇2f(x)∗Δx=0
然后两边求梯度并让梯度等于0,再经整理可得 Δ x = − ∇ f ( x ) ∇ 2 f ( x ) \Delta{x}=-\frac{\nabla{f(x)}}{\nabla^2{f(x)}} Δx=−∇2f(x)∇f(x) - 牛顿法要求Hessian矩阵要可逆
- 牛顿法比梯度下降法更容易收敛
拟牛顿法
- 使用场景: 如果Hessian矩阵不可逆,牛顿法难以使用
- 解决方案: 构造一个近似Hessian矩阵或其逆矩阵的正定对称矩阵,用来代替Hessian矩阵
- 构造方法: BFGS算法