与公众号同步更新,详细内容及相关ipynb文件在公众号中,公众号:AI入门小白
文章目录
牛顿法(Newton method) 和拟牛顿法(quasi-Newton method) 也是求解无约束最优化问题的常用方法,有收敛速度快的优点。牛顿法是迭代算法,每一步需要求解目标函数的黑塞矩阵的逆矩阵,计算比较复杂。拟牛顿法通过正定矩阵近似黑塞矩阵的逆矩阵或黑塞矩阵,简化了这一计算过程。
黑塞矩阵是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。
牛顿法
考虑无约束最优化问题
min
x
∈
R
n
f
(
x
)
(B.1)
\min_{x \in R^n} f(x) \quad \tag{B.1}
x∈Rnminf(x)(B.1)
其中
x
∗
x^*
x∗为目标函数的极小点。
假设
f
(
x
)
f(x)
f(x)具有二阶连续偏导数,若第
k
k
k次迭代值为
x
(
k
)
x^{(k)}
x(k),则可将
f
(
x
)
f(x)
f(x)在
x
(
k
)
x^{(k)}
x(k)附近进行二阶泰勒展开:
f
(
x
)
=
f
(
x
(
k
)
)
+
g
k
T
(
x
−
x
(
k
)
)
+
1
2
(
x
−
x
(
k
)
)
T
H
(
x
(
k
)
)
(
x
−
x
(
k
)
)
(B.2)
f(x) = f(x^{(k)}) + g_k^T (x - x^{(k)}) + \frac{1}{2} (x - x^{(k)})^T H(x^{(k)})(x - x^{(k)}) \quad \tag{B.2}
f(x)=f(x(k))+gkT(x−x(k))+21(x−x(k))TH(x(k))(x−x(k))(B.2)
这里,
g
k
=
g
(
x
(
k
)
)
=
▽
f
(
x
(
k
)
)
g_k = g(x^{(k)}) = \triangledown f(x^{(k)})
gk=g(x(k))=▽f(x(k))是
f
(
x
)
f(x)
f(x)的梯度向量在点
x
(
k
)
x^{(k)}
x(k)的值,
H
(
x
(
k
)
)
H(x^{(k)})
H(x(k))是
f
(
x
)
f(x)
f(x)的黑塞矩阵
H
(
x
)
=
[
∂
2
f
∂
x
i
∂
x
j
]
n
×
n
(B.3)
H(x) = \Bigg[\frac{\partial^2 f}{\partial x_i \partial x_j} \Bigg]_{n\times n} \quad \tag{B.3}
H(x)=[∂xi∂xj∂2f]n×n(B.3)
在点
x
(
k
)
x^{(k)}
x(k)的值。函数
f
(
x
)
f(x)
f(x)有极值的必要条件是在极值点处一阶导数为0 ,即梯度向量为0。特别是当
H
(
x
(
k
)
)
H(x^{(k)})
H(x(k))是正定矩阵时,函数
f
(
x
)
f(x)
f(x)的极值为极小值。
牛顿法利用极小点的必要条件
▽
f
(
x
)
=
0
(B.4)
\triangledown f(x) = 0 \quad \tag{B.4}
▽f(x)=0(B.4)
每次选代中从点
x
(
k
)
x^{(k)}
x(k)开始,求目标函数的极小点,作为第
k
+
1
k + 1
k+1次迭代值
x
(
k
+
1
)
x^{(k+1)}
x(k+1)。具体地,假设
x
(
k
+
1
)
x^{(k+1)}
x(k+1)满足:
▽
f
(
x
(
k
+
1
)
)
=
0
(B.5)
\triangledown f(x^{(k+1)}) = 0 \quad \tag{B.5}
▽f(x(k+1))=0(B.5)
由式(B.2) 有
▽
f
(
x
)
=
g
k
+
H
k
(
x
−
x
(
k
)
)
(B.6)
\triangledown f(x) = g_k + H_k(x - x^{(k)}) \quad \tag{B.6}
▽f(x)=gk+Hk(x−x(k))(B.6)
其中
H
k
=
H
(
x
(
k
)
)
H_k = H(x^{(k)})
Hk=H(x(k))。这样,式(B.5)成为
g
k
+
H
k
(
x
(
k
+
1
)
−
x
(
k
)
)
=
0
(B.7)
g_k + H_k (x^{(k+1)} - x^{(k)}) = 0 \quad \tag{B.7}
gk+Hk(x(k+1)−x(k))=0(B.7)
因此,
x
(
k
+
1
)
=
x
(
k
)
−
H
k
−
1
g
k
(B.8)
x^{(k+1)} = x^{(k)} - H_k^{-1} g_k \quad \tag{B.8}
x(k+1)=x(k)−Hk−1gk(B.8)
或者
x
(
k
+
1
)
=
x
(
k
)
+
p
k
(B.9)
x^{(k+1)} = x^{(k)} + p_k \quad \tag{B.9}
x(k+1)=x(k)+pk(B.9)
其中,
H
k
p
k
=
−
g
k
(B.10)
H_k p_k = -g_k \quad \tag{B.10}
Hkpk=−gk(B.10)
用式(B.8)作为迭代公式的算法就是牛顿法。
算法B.1(牛顿法)
输入:目标函数
f
(
x
)
f(x)
f(x),梯度
g
(
x
)
=
▽
f
(
x
)
g(x) = \triangledown f(x)
g(x)=▽f(x),黑塞矩阵
H
(
x
)
H(x)
H(x),精度要求
ε
\varepsilon
ε;
输出:
f
(
x
)
f(x)
f(x)的极小点
x
∗
x^*
x∗。
(1)取初始点
x
(
0
)
x^{(0)}
x(0),置
k
=
0
k = 0
k=0。
(2)计算
g
k
=
g
(
x
(
k
)
)
g_k = g(x^{(k)})
gk=g(x(k))。
(3)若
∥
g
k
∥
<
ε
\lVert g_k \rVert < \varepsilon
∥gk∥<ε,则停止计算,得近似解
x
∗
=
x
(
k
)
x^* = x^{(k)}
x∗=x(k)。
(4)计算
H
k
=
H
(
x
(
k
)
)
H_k = H(x^{(k)})
Hk=H(x(k)),并求
p
k
p_k
pk
H
k
p
k
=
−
g
k
H_k p_k = -g_k
Hkpk=−gk
(5)置
x
(
k
+
1
)
=
x
(
k
)
+
p
k
x^{(k+1)} = x^{(k)} + p_k
x(k+1)=x(k)+pk。
(6)置
k
=
k
+
1
k = k+1
k=k+1,转(2)
步骤(4) 求 p k , p k = − H k − 1 g k p_k, p_k = -H_k^{-1} g_k pk,pk=−Hk−1gk,要求 H k − 1 H_k^{-1} Hk−1,计算比较复杂,所以有其它改进的方法。
拟牛顿法的思路
在牛顿法的迭代中,需要计算黑塞矩阵的逆矩阵 H − 1 H^{-1} H−1,这一计算比较复杂,考虑用一个 n n n阶矩阵 G k = G ( x ( k ) ) G_k = G(x^{(k)}) Gk=G(x(k))来近似代替 H k − 1 = H − 1 ( x ( k ) ) H_k^{-1} = H^{-1}(x^{(k)}) Hk−1=H−1(x(k))。这就是拟牛顿法的基本想法。
先看牛顿法迭代中黑塞矩阵
H
k
H_k
Hk满足的条件。首先,
H
k
H_k
Hk满足以下关系。在式(B.6)中取
x
=
x
(
k
+
1
)
x = x^{(k+1)}
x=x(k+1),即得
g
k
+
1
−
g
k
=
H
k
(
x
(
k
+
1
)
−
x
(
k
)
)
(B.11)
g_{k+1} - g_k = H_k(x^{(k+1)} - x^{(k)}) \quad \tag{B.11}
gk+1−gk=Hk(x(k+1)−x(k))(B.11)
记
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
(B.12)
y_k = H_k \delta_k \quad \tag{B.12}
yk=Hkδk(B.12)
或
H
k
−
1
y
k
=
δ
k
(B.13)
H_k^{-1} y_k = \delta_k \quad \tag{B.13}
Hk−1yk=δk(B.13)
式(B.12) 或式(B.13) 称为拟牛顿条件。
如果
H
k
H_k
Hk是正定的(
H
k
−
1
H_k^{-1}
Hk−1也是正定的),那么可以保证牛顿法搜索方向
p
k
p_k
pk是下降方向。这是因为搜索方向是
p
k
=
−
H
k
−
1
g
k
p_k = -H_k^{-1} g_k
pk=−Hk−1gk,由式(B.8) 有
x
=
x
(
k
)
+
λ
p
k
=
x
(
k
)
−
λ
H
k
−
1
g
k
(B.14)
x = x^{(k)} + \lambda p_k = x^{(k)} - \lambda H_k^{-1} g_k \quad \tag{B.14}
x=x(k)+λpk=x(k)−λHk−1gk(B.14)
所以
f
(
x
)
f(x)
f(x)在
x
(
k
)
x^{(k)}
x(k)的泰勒展开式(B.2) 可以近似写成:
f
(
x
)
=
f
(
x
(
k
)
)
−
λ
g
k
T
H
k
−
1
g
k
(B.15)
f(x) = f(x^{(k)}) - \lambda g_k^T H_k^{-1} g_k \quad \tag{B.15}
f(x)=f(x(k))−λgkTHk−1gk(B.15)
因
H
k
−
1
H_k^{-1}
Hk−1正定,故有
g
k
T
H
k
−
1
g
k
>
0
g_k^T H_k^{-1} g_k > 0
gkTHk−1gk>0。当
λ
\lambda
λ为一个充分小的正数时,总有
f
(
x
)
<
f
(
x
(
k
)
)
f(x) < f(x^{(k)})
f(x)<f(x(k)),也就是说
p
k
p_k
pk是下降方向。
拟牛顿法将
G
k
G_k
Gk作为
H
k
−
1
H_k^{-1}
Hk−1的近似,要求矩阵
G
k
G_k
Gk满足同样的条件。首先,每次选代矩阵
G
k
G_k
Gk是正定的。同时,
G
k
G_k
Gk满足下面的拟牛顿条件:
G
k
+
1
y
k
=
δ
k
(B.16)
G_{k+1} y_k = \delta_k \quad \tag{B.16}
Gk+1yk=δk(B.16)
按照拟牛顿条件选择
G
k
G_k
Gk作为
H
k
−
1
H_k^{-1}
Hk−1的近似或选择
B
k
B_k
Bk作为
H
k
H_k
Hk的近似的算法称为拟牛顿法。
按照拟牛顿条件,在每次选代中可以选择更新矩阵
G
k
+
1
G_{k+1}
Gk+1:
G
k
+
1
=
G
k
+
Δ
G
k
(B.17)
G_{k+1} = G_k + \Delta G_k \quad \tag{B.17}
Gk+1=Gk+ΔGk(B.17)
这种选择有一定的灵活性,因此有多种具体实现方法。下面介绍Broyden 类拟牛顿法。
DFP (Davidon-Fletcher- Powell) 算法(DFP algorithm)
DFP算法选择
G
k
+
1
G_{k+1}
Gk+1的方法是,假设每一步迭代中矩阵
G
k
+
1
G_{k+1}
Gk+1是由
G
k
G_k
Gk加上两个附加项构成的,即
G
k
+
1
=
G
k
+
P
k
+
Q
k
(B.18)
G_{k+1} = G_k + P_k +Q_k \quad \tag{B.18}
Gk+1=Gk+Pk+Qk(B.18)
其中
P
k
,
Q
k
P_k, Q_k
Pk,Qk是待定矩阵。这时,
G
k
+
1
y
k
=
G
k
y
k
+
P
k
y
k
+
Q
k
y
k
(B.19)
G_{k+1}y_k = G_k y_k + P_k y_k + Q_k y_k \quad \tag{B.19}
Gk+1yk=Gkyk+Pkyk+Qkyk(B.19)
为使
G
k
+
1
G_{k+1}
Gk+1满足拟牛顿条件,可使
P
k
P_k
Pk和
Q
k
Q_k
Qk满足:
P
k
y
k
=
δ
k
(B.20)
P_k y_k = \delta_k \quad \tag{B.20}
Pkyk=δk(B.20)
Q
k
y
k
=
−
G
k
y
k
(B.21)
Q_k y_k = -G_k y_k \quad \tag{B.21}
Qkyk=−Gkyk(B.21)
事实上,不难找出这样的
P
k
P_k
Pk和
Q
k
Q_k
Qk,例如取:
P
k
=
δ
k
δ
k
T
δ
k
T
y
k
(B.22)
P_k = \frac{\delta_k \delta_k^T}{\delta_k^T y_k} \quad \tag{B.22}
Pk=δkTykδkδkT(B.22)
Q
k
=
−
G
k
y
k
y
k
T
G
k
y
k
T
G
k
y
k
(B.23)
Q_k = -\frac{G_k y_k y_k^T G_k}{y_k^T G_k y_k} \quad \tag{B.23}
Qk=−ykTGkykGkykykTGk(B.23)
这样就可得到矩阵
G
k
+
1
G_{k+1}
Gk+1的迭代公式:
G
k
+
1
=
G
k
+
δ
k
δ
k
T
δ
k
T
y
k
−
G
k
y
k
y
k
T
G
k
y
k
T
G
k
y
k
(B.24)
G_{k+1} = G_k + \frac{\delta_k \delta_k^T}{\delta_k^T y_k} - \frac{G_k y_k y_k^T G_k}{y_k^T G_k y_k} \quad \tag{B.24}
Gk+1=Gk+δkTykδkδkT−ykTGkykGkykykTGk(B.24)
称为DFP 算法。
如果初始矩阵 G 0 G_0 G0是正定的,则迭代过程中的每个矩阵 G k G_k Gk都是正定的。
算法B.2(DFP算法)
输入:目标函数
f
(
x
)
f(x)
f(x),梯度
g
(
x
)
=
∇
f
(
x
)
g(x) = \nabla f(x)
g(x)=∇f(x),精度要求
ε
\varepsilon
ε;
输出:
f
(
x
)
f(x)
f(x)的极小点
x
∗
x^*
x∗。
(1)选定初始点
x
(
0
)
x^{(0)}
x(0),取
G
0
G_0
G0为正定对称矩阵,置
k
=
0
k=0
k=0。
(2)计算
g
k
=
g
(
x
(
k
)
)
g_k = g(x^{(k)})
gk=g(x(k))。若
∥
g
k
∥
<
ε
\lVert g_k \rVert < \varepsilon
∥gk∥<ε,则停止计算,得近似解
x
∗
=
x
(
k
)
x^* = x^{(k)}
x∗=x(k);否则转(3)。
(3)置
p
k
=
−
G
k
g
k
p_k = -G_k g_k
pk=−Gkgk。
(4)一维搜索:求
λ
k
\lambda_k
λk使得
f
(
x
(
k
)
+
λ
k
p
k
)
=
min
λ
≥
0
f
(
x
(
k
)
+
λ
p
k
)
f(x^{(k)} + \lambda_k p_k) = \min_{\lambda \geq 0} f(x^{(k)} + \lambda p_k)
f(x(k)+λkpk)=λ≥0minf(x(k)+λpk)
(5)置
x
(
k
+
1
)
=
x
(
k
)
+
λ
k
p
k
x^{(k+1)} = x^{(k)} + \lambda_k p_k
x(k+1)=x(k)+λkpk。
(6)计算
g
k
+
1
=
g
(
x
(
k
+
1
)
)
g_{k+1} = g(x^{(k+1)})
gk+1=g(x(k+1)),若
∥
g
k
+
1
∥
<
ε
\lVert g_{k+1} \rVert < \varepsilon
∥gk+1∥<ε,则停止计算,得近似解
x
∗
=
x
(
k
+
1
)
x^* = x^{(k+1)}
x∗=x(k+1);否则,按式(B.24)算出
G
k
+
1
G_{k+1}
Gk+1。
(7)置
k
=
k
+
1
k = k+1
k=k+1,转(3)。
BFGS (Broyden-Fletcher-Goldfarl-Shanno) 算法(BFGS algorithm)
BFGS 算法是最流行的拟牛顿算法。
可以考虑用
G
k
G_k
Gk逼近黑塞矩阵的逆矩阵
H
−
1
H^{-1}
H−1,也可以考虑用
B
k
B_k
Bk逼近黑塞矩阵
H
H
H。
这时,相应的拟牛顿条件是
B
k
+
1
δ
k
=
y
k
(B.25)
B_{k+1} \delta_k = y_k \quad \tag{B.25}
Bk+1δk=yk(B.25)
可以用同样的方法得到另一迭代公式。首先令
B
k
+
1
=
B
k
+
P
k
+
Q
k
(B.26)
B_{k+1} = B_k + P_k + Q_k \quad \tag{B.26}
Bk+1=Bk+Pk+Qk(B.26)
B
k
+
1
δ
k
=
B
k
δ
k
+
P
k
δ
k
+
Q
k
δ
k
(B.27)
B_{k+1} \delta_k = B_k \delta_k + P_k \delta_k + Q_k \delta_k \quad \tag{B.27}
Bk+1δk=Bkδk+Pkδk+Qkδk(B.27)
考虑使
P
k
P_k
Pk和
Q
k
Q_k
Qk满足:
P
k
δ
k
=
y
k
(B.28)
P_k \delta_k = y_k \quad \tag{B.28}
Pkδk=yk(B.28)
Q
k
δ
k
=
−
B
k
δ
k
(B.29)
Q_k \delta_k = -B_k \delta_k \quad \tag{B.29}
Qkδk=−Bkδk(B.29)
找出适合条件的
P
k
P_k
Pk和
Q
k
Q_k
Qk,得到BFGS算法矩阵
B
k
+
1
B_{k+1}
Bk+1的迭代公式:
B
k
+
1
=
B
k
+
y
k
y
k
T
y
k
T
δ
k
−
B
k
δ
k
δ
k
T
B
k
δ
k
T
B
k
δ
k
(B.30)
B_{k+1} = B_k + \frac{y_k y_k^T}{y_k^T \delta_k} - \frac{B_k \delta_k \delta_k^T B_k}{\delta_k^T B_k \delta_k} \quad \tag{B.30}
Bk+1=Bk+ykTδkykykT−δkTBkδkBkδkδkTBk(B.30)
如果初始矩阵
B
0
B_0
B0是正定的,则迭代过程中的每个矩阵
B
k
B_k
Bk都是正定的。
算法B.3(BFGS算法)
输入:目标函数
f
(
x
)
,
g
(
x
)
=
∇
f
(
x
)
f(x),g(x) = \nabla f(x)
f(x),g(x)=∇f(x),精度要求
ε
\varepsilon
ε;
输出:
f
(
x
)
f(x)
f(x)的极小点
x
∗
x^*
x∗。
(1)选定初始点
x
(
0
)
x^{(0)}
x(0),取
B
0
B_0
B0为正定对称矩阵,置
k
=
0
k=0
k=0。
(2)计算
g
k
=
g
(
x
(
k
)
)
g_k = g(x^{(k)})
gk=g(x(k))。若
∥
g
k
∥
<
ε
\lVert g_k \rVert < \varepsilon
∥gk∥<ε,则停止计算,得近似解
x
∗
=
x
(
k
)
x^* = x^{(k)}
x∗=x(k);否则转(3)。
(3)由
B
k
p
k
=
−
g
k
B_k p_k = -g_k
Bkpk=−gk求出
p
k
p_k
pk。
(4)一维搜索:求
λ
k
\lambda_k
λk使得
f
(
x
(
k
)
+
λ
k
p
k
)
=
min
λ
≥
0
f
(
x
(
k
)
+
λ
p
k
)
f(x^{(k)} + \lambda_k p_k) = \min_{\lambda \geq 0} f(x^{(k)} + \lambda p_k)
f(x(k)+λkpk)=λ≥0minf(x(k)+λpk)
(5)置
x
(
k
+
1
)
=
x
(
k
)
+
λ
k
p
k
x^{(k+1)} = x^{(k)} + \lambda_k p_k
x(k+1)=x(k)+λkpk。
(6)计算
g
k
+
1
=
g
(
x
(
k
+
1
)
)
g_{k+1} = g(x^{(k+1)})
gk+1=g(x(k+1)),若
∥
g
k
+
1
∥
<
ε
\lVert g_{k+1} \rVert < \varepsilon
∥gk+1∥<ε,则停止计算,得近似解
x
∗
=
x
(
k
+
1
)
x^* = x^{(k+1)}
x∗=x(k+1);否则,按式(B.30)算出
B
k
+
1
B_{k+1}
Bk+1。
(7)置
k
=
k
+
1
k = k + 1
k=k+1,转(3)。
Broyden 类算法(Broyden’s algorithm)
Sherman-Morrison 公式:假设
A
A
A是
n
n
n阶可逆矩阵,
u
,
v
u, v
u,v是
n
n
n维向量,且
A
+
u
v
T
A + uv^T
A+uvT也是可逆矩阵,则
(
A
+
u
v
T
)
−
1
=
A
−
1
−
A
−
1
u
v
T
A
−
1
1
+
v
T
A
−
1
u
(A + uv^T)^{-1} = A^{-1} - \frac{A^{-1}uv^TA^{-1}}{1 + v^TA^{-1}u}
(A+uvT)−1=A−1−1+vTA−1uA−1uvTA−1
可以从BFGS 算法矩阵
B
k
B_k
Bk的迭代公式(B.30) 得到BFGS 算法关于
G
k
G_k
Gk的迭代公式。事实上,若记
G
k
=
B
k
−
1
,
G
k
+
1
=
B
k
+
1
−
1
G_k = B_k^{-1}, G_{k+1} = B_{k+1}^{-1}
Gk=Bk−1,Gk+1=Bk+1−1,那么对式(B.30) 两次应用Sherman-Morrison 公式即得
G
k
+
1
=
(
I
−
δ
k
y
k
T
δ
k
T
y
k
)
G
k
(
I
−
δ
k
y
k
T
δ
k
T
y
k
)
T
+
δ
k
δ
k
T
δ
k
T
y
k
(B.31)
G_{k+1} = \Bigg(I - \frac{\delta_ky_k^T}{\delta_k^Ty_k} \Bigg)G_k\Bigg(I - \frac{\delta_ky_k^T}{\delta_k^Ty_k} \Bigg)^T + \frac{\delta_k\delta_k^T}{\delta_k^Ty_k} \quad \tag{B.31}
Gk+1=(I−δkTykδkykT)Gk(I−δkTykδkykT)T+δkTykδkδkT(B.31)
称为BFGS 算法关于
G
k
G_k
Gk的迭代公式。
由DFP 算法
G
k
G_k
Gk的迭代公式(B.23) 得到的
G
k
+
1
G_{k+1}
Gk+1记作
G
D
F
P
G^{DFP}
GDFP,由BFGS算法
G
k
G_k
Gk的迭代公式(B.31) 得到的
G
k
+
1
G_{k+1}
Gk+1记作
G
B
F
G
S
G^{BFGS}
GBFGS,它们都满足方程拟牛顿条件式,所以它们的线性组合
G
k
+
1
=
α
G
D
F
P
+
(
1
−
α
)
G
B
F
G
S
(B.32)
G_{k+1} = \alpha G^{DFP} + (1 - \alpha)G^{BFGS} \quad \tag{B.32}
Gk+1=αGDFP+(1−α)GBFGS(B.32)
也满足拟牛顿条件式,而且是正定的。其中
0
≤
α
≤
1
0 \leq \alpha \leq 1
0≤α≤1。这样就得到了一类拟牛顿法,称为Broyden 类算法。
数据来源:统计学习方法(第二版)