牛顿法
设f(x)是二次可微实函数, 那么它的二阶泰勒多项式为
ϕ(x)=f(x0)+f′(x0)(x−x0)+12f′′(x0)(x−x0)2
ϕ
(
x
)
=
f
(
x
0
)
+
f
′
(
x
0
)
(
x
−
x
0
)
+
1
2
f
″
(
x
0
)
(
x
−
x
0
)
2
那么把x换成向量, 则有
ϕ(x)=f(x0)+∇f(x0)(x−x0)+12(x−x0)T∇2f(x0)(x−x0)
ϕ
(
x
)
=
f
(
x
0
)
+
∇
f
(
x
0
)
(
x
−
x
0
)
+
1
2
(
x
−
x
0
)
T
∇
2
f
(
x
0
)
(
x
−
x
0
)
其中 ∇2f(x0) ∇ 2 f ( x 0 ) 是 f(x) f ( x ) 在 x0 x 0 处的hesse矩阵.
为求 ϕ(x) ϕ ( x ) 的平稳点, 令 ∇ϕ(x)=0 ∇ ϕ ( x ) = 0 . 则有
∇f(x0)+∇2f(x0)(x−x0)=0
∇
f
(
x
0
)
+
∇
2
f
(
x
0
)
(
x
−
x
0
)
=
0
假设hesse矩阵可逆, 则由上式得到 牛顿法迭代公式:
x(k+1)=x(k)−∇2f(x(k))−1f(x(k))(1.4)
(1.4)
x
(
k
+
1
)
=
x
(
k
)
−
∇
2
f
(
x
(
k
)
)
−
1
f
(
x
(
k
)
)
其中 ∇2f(x(k))−1 ∇ 2 f ( x ( k ) ) − 1 是hesse矩阵的逆矩阵.
牛顿法至少2级收敛, 收敛速率快于梯度下降法. 特别地, 对于二次凸函数, 用牛顿法经历一次迭代即达极小点.
值得注意, 当初始点远离极小点时, 牛顿法可能不收敛, 因为牛顿方向不一定是下降方向, 经迭代, 目标函数值可能上升.
针对这一问题进行修正, 人们提出了 阻尼牛顿法.
阻尼牛顿法
与原始牛顿法的区别在于: 增加了沿牛顿方向的一维搜索.
拟牛顿法
牛顿法需要计算二阶偏导, 而且目标函数的Hesse矩阵可能非正定. 为克服这些问题, 人们提出了拟牛顿法, 基本思想是用不含二阶导数的矩阵A来近似原Hesse矩阵的逆矩阵
H−1
H
−
1
.
根据得到近似矩阵A的方法的不同, 拟牛顿法也有不同的变体.
OWL-QN
OWL-QN(orthant-wise Limited-memory Quasi-Newton)
微软提出的算法,该算法是基于L-BFGS算法的可用于求解L1正则的算法。简单来讲,OWL-QN算法是指假定变量的象限确定的条件下使用L-BFGS算法来更新,同时,使得更新前后变量在同一个象限中(使用映射来满足条件)。