两种基本框架
一般的,对于监督学习问题,在经过一系列分析和建模后,都将目标问题转化为一个如下形式的优化问题:
其中, f(x) 表征了模型刻画目标问题的准确程度; r(x) 表征了对于模型本身施加的某种约束。
不论 f(x) 和 r(x) 采取何种形式,最终都需要求解出 (1-1) 式的最大或最小值,而这就是所谓的优化方法。
Line Search (线搜索)
Line Search包括很多大家熟悉的优化方法,例如最速下降法(Steepest Descent)、牛顿法(Newton’s method)、拟牛顿法(Quasi-Newton)等等。该方法的基本思路如
(1-2)
式所示:
其中, pk 是当前的求解方向, αk 是沿该方向移动的步长。
该方法的过程为
Repeat
- 选择方向
pk
-
αk=argminL(xk+αpk)
-
xk+1=xk+αkpk
Until 收敛
Trust Region (信赖域)
与Line Search的想法相反,该方法先确定一个region,该region以
xk
为中心,以
δ
为半径。然后,在该region内选择某个步长
sk
以最小化
L
的某种近似模型
该方法的过程为
Repeat
- 选择
δ
- 选择
sk
以最小化
L
的某种近似模型
- 如果
L(xk+sk)−L(xk)m(xk+sk)−m(xk)>τ
,那么
xk+1=xk+sk
;否则,
δ←δ⋅γ
,
γ<1
Until 收敛
Trust Region方法不如Line Search方法常见,但liblinear中的l2-loss logistic regresssion 和 svm 的优化方法使用了该方法。
Line Search
方向计算
最速下降法(Steepest Descent)
在选择方向的方法中,最速下降法是最简单的。因为它以当前点的梯度方向作为下降方向,即:
其中, gk=−∇L(xk) 。
然后,计算最佳步长 α ,使得式(2-1)取得最小值。
牛顿法(Newton’s method)
令
Δxk=αpk
,则式(1-2)可改写为
利用泰勒展开,有
令(2-4)的值为0,有
在实际中,往往取 xk+1=xk−α(H−1kgk) ,以使得 L(xk+1) 比 L(xk) 充分小。
拟牛顿法(Quasi-Newton)
求解式(2-5)涉及到矩阵求逆。当优化问题所涉及的参数非常多时,求逆的过程将非常繁琐。因此可以考虑近似求解 H−1 。这就是所谓的拟牛顿法。
BFGS
对于
hk+1(⋅)
而言,应满足
因此, 根据式(2-4)有
令
则有
L-BFGS
在本算法中,不需要存储 H−1k ,而是保存 {sk−i|i=0,1,⋯} 和 {yk−i|i=0,1,⋯} 。
令
Vk=I−ρkyksTk
,则式(2-12)可写为:
令
H−10=I
,则有,
L-BFGS,即limited BFGS,使用最近的
m
轮迭代结果来近似
OWLQN
L-BFGS方法中,需要使用到 L(x) 的一阶导数。然而,在许多场景下无法求取目标函数的一阶导。例如, L(x) 中的 r(x) 采用L1正则化,即 r(x)=λ∑i|xi| 时,就无法直接计算其一阶导数。
OWLQN(Orthant-Wise Limited-memory Quasi-Newton)与LBFGS十分相似,所不同的只是在于计算方向 p 和步长 α 时充分考虑到了L1正则化导向稀疏的特点。其基本流程如下:
初始化
x0
,
S←∅
,
Y←∅
for
k=0,1,2.⋯
1.
vk=∇pseudoL(xk)
2.
pk=Hkvk
3.
αk=argminL(xk+αpk)
4.
xk+1=xk+αkpk
5. 更新
S
, 使得
6. 更新
Y
, 使得
相比于LBFGS,其中的第1、2、3、6有所不同。
需要指出,针对L1正则化有众多的优化方法,这里之所以选取OWLQN进行介绍是因为它本质是LBFGS的衍生方法。
步长计算
在已知搜索方向
pk
之后,需要求取最佳步长
αk
,使得
L(xk)
的值下降的最多,即:
回溯法
我们希望每次的步长 αk 都使得函数值 L(xk) 充分地下降,即
令
α0>0
ρ∈(0,1)
c∈(0,1)
for
k=0,1,2.⋯
1. if
L(xk+αkpk)>L(xk)+cαk∇L(xk)Tpk
, return
αk
2.
αk+1←ραk
4 Trust Region
以下以二次模型为近似模型,列出实现流程
初始化
x0
for
k=0,1,2.⋯
1.
g←∇L(xk)T
2.
H←∇2L(xk)
3. if
||g||>ϵ
, return
xk
4.
sk←argmin||sk||<δm(xk+sk)=L(xk)+gTsk+12sTkHsk
5.
pred←m(xk+sk)−m(x)
6.
ared←L(xk+sk)−L(x)
7. if ared/pred <
η1
then
δ←δγ1
// reject step, reduce
δ
8. else
xk+1←xk+sk
9. if ared/pred >
η2
then
δ←max{δ,γ2||s||}
// enlarge
δ
需要指出的是,上述流程的第4步被成为信赖域法的子问题(Trust Region Subproblems)。它本质是个带约束的优化问题。具体求解的方式有很多。其中,参考文献[1]使用了共轭梯度法,可供参考。
[1] Rong-En Fan, Kai-Wei Chang, Cho-Jui Hsieh, Xiang-Rui Wang, and Chih-Jen Lin. 2008. LIBLINEAR: A Library for Large Linear Classification. J. Mach. Learn. Res. 9 (June 2008), 1871-1874.