本课程来自深度之眼,部分截图来自课程视频以及李航老师的《统计学习方法》第二版。
公式输入请参考: 在线Latex公式
牛顿法
这个方法用得到了二阶导数,它比梯度下降法(一阶导)收敛速度快。
它的思想是在
x
(
k
)
x^{(k)}
x(k)处用泰勒把
f
(
x
)
f(x)
f(x)进行二阶展开,也就是用一个二阶函数去逼近
f
(
x
)
f(x)
f(x),然后求使这个二阶函数的导数为0的点(
▽
f
(
x
)
=
0
\bigtriangledown f(x)=0
▽f(x)=0),然后用
▽
f
(
x
)
\bigtriangledown f(x)
▽f(x)一步步迭代逼近
f
(
x
)
f(x)
f(x)的最小。
对于一个无约束最优化问题
min
x
∈
R
n
f
(
x
)
\underset{x\in \R^n}{\min}f(x)
x∈Rnminf(x)
假设
f
(
x
)
f(x)
f(x)具有二阶连续偏导数,通过迭代方法寻找最优点
x
x
x,即
x
(
1
)
→
x
(
2
)
→
⋯
→
x
(
k
)
→
x
(
k
+
1
)
→
⋯
x^{(1)}\rightarrow x^{(2)}\rightarrow\cdots \rightarrow x^{(k)}\rightarrow x^{(k+1)}\rightarrow\cdots
x(1)→x(2)→⋯→x(k)→x(k+1)→⋯
在
x
(
k
)
x^{(k)}
x(k)处对
f
(
x
)
f(x)
f(x)进行二阶泰勒展开:
f
(
x
)
=
f
(
x
(
k
)
)
+
▽
f
(
x
(
k
)
)
T
(
x
−
x
(
k
)
)
+
1
2
(
x
−
x
(
k
)
)
T
H
(
x
(
k
)
)
(
x
−
x
(
k
)
)
f(x)=f(x^{(k)})+\bigtriangledown f(x^{(k)})^T(x-x^{(k)})+\cfrac{1}{2}(x-x^{(k)})^TH(x^{(k)})(x-x^{(k)})
f(x)=f(x(k))+▽f(x(k))T(x−x(k))+21(x−x(k))TH(x(k))(x−x(k))
这里
H
(
x
)
=
[
∂
2
f
∂
x
i
∂
x
j
]
n
×
n
H(x)=\left[\cfrac{\partial^2f}{\partial x_i\partial x_j}\right]_{n\times n}
H(x)=[∂xi∂xj∂2f]n×n是
f
(
x
)
f(x)
f(x)的海森矩阵(其实就是二阶导数),如果用
g
g
g表示
f
f
f一阶导数,并对上面的式子两边求导,左边就是
▽
f
(
x
)
\bigtriangledown f(x)
▽f(x),如果有极值,那么
▽
f
(
x
)
=
0
\bigtriangledown f(x)=0
▽f(x)=0,写成:
g
k
+
H
k
(
x
−
x
(
k
)
)
=
0
g_k+H_k(x-x^{(k)})=0
gk+Hk(x−x(k))=0
这里
H
k
=
H
(
x
(
k
)
)
H_k=H(x^{(k)})
Hk=H(x(k))
具体的从
x
(
k
+
1
)
x^{(k+1)}
x(k+1)这个点开始求极值,则有:
▽
f
(
x
(
k
+
1
)
)
=
0
\bigtriangledown f(x^{(k+1)})=0
▽f(x(k+1))=0
根据上上式:
g
k
+
H
k
(
x
(
k
+
1
)
−
x
(
k
)
)
=
0
g_k+H_k(x^{(k+1)}-x^{(k)})=0
gk+Hk(x(k+1)−x(k))=0
然后求解,先移项
H
k
(
x
(
k
+
1
)
−
x
(
k
)
)
=
−
g
k
H_k(x^{(k+1)}-x^{(k)})=-g_k
Hk(x(k+1)−x(k))=−gk
这里是
H
H
H是矩阵,所以两边同时乘以它的逆矩阵:
x
(
k
+
1
)
−
x
(
k
)
=
−
g
k
H
k
−
1
x^{(k+1)}-x^{(k)}=-g_kH_k^{-1}
x(k+1)−x(k)=−gkHk−1
移项:
x
(
k
+
1
)
=
x
(
k
)
−
g
k
H
k
−
1
x^{(k+1)}=x^{(k)}-g_kH_k^{-1}
x(k+1)=x(k)−gkHk−1
这里要求解
H
k
−
1
H_k^{-1}
Hk−1,比较麻烦,因此出现了下面这个方法。
拟牛顿法
用上面的条件可以有以下等式:
▽
f
(
x
(
k
+
1
)
)
=
0
=
g
k
+
1
=
g
k
+
H
k
(
x
(
k
+
1
)
−
x
(
k
)
)
\bigtriangledown f(x^{(k+1)})=0=g_{k+1}=g_k+H_k(x^{(k+1)}-x^{(k)})
▽f(x(k+1))=0=gk+1=gk+Hk(x(k+1)−x(k))
g
k
+
1
−
g
k
=
H
k
(
x
(
k
+
1
)
−
x
(
k
)
)
g_{k+1}-g_k=H_k(x^{(k+1)}-x^{(k)})
gk+1−gk=Hk(x(k+1)−x(k))
令
y
k
=
g
k
+
1
−
g
k
,
δ
k
=
x
(
k
+
1
)
−
x
(
k
)
y_k=g_{k+1}-g_k,\delta_k=x^{(k+1)}-x^{(k)}
yk=gk+1−gk,δk=x(k+1)−x(k),则有:
y
k
=
H
k
δ
k
y_k=H_k\delta_k
yk=Hkδk
δ
k
=
H
k
−
1
y
k
\delta_k=H_k^{-1}y_k
δk=Hk−1yk
以上就是拟牛顿条件。
接下来就是有两种方法求
G
G
G(用来近似
H
k
−
1
H_k^{-1}
Hk−1):DFP和BFGS
不展开。
小结
1.拟牛顿法是求解无约束最优化问题的常用方法。
2.拟牛顿法有收敛速度快的优点。
3.牛顿法是迭代法,每一步需要求解目标函数的海塞矩阵,计算比较复杂。拟牛顿法通过正定矩阵近似海塞矩阵的逆矩阵或海塞矩阵,简化了这一计算过程。