这篇笔记主要参考冯杨的五篇博客:在线最优化求解(Online Optimization)。因为对于在线学习方法,稀疏性问题需要特别关注:每次在线学习一个新 instance 的时候,优化方向并不一定是全局最优,不容易产生稀疏解,而简单截断又可能将从全局看不该稀疏掉的特征变为零。所以这里以 L1 正则为基础,比较几种在线学习算法。
0,预备
每个 instance 由特征向量和预测目标组成:
(x,y)
。其中
x∈RN,y∈{0,1}
。第
t
个新样本标记为
模型预测值:
经验损失函数采用交叉熵的形式:
经验损失对权重的梯度,后面用
g
表示:
1,L1 正则
基本的 L1 正则逻辑回归方法,在经验损失函数中直接加入 L1 正则项
ℓ(w)=ℓ0(w)+λ|w|
,然后直接优化。在某一方向上的梯度为:
迭代方式:
1.1 截断方式:
简单截断法:
从上面的更新公式可以看出,L1 正则的作用是,如果 wti>0 ,将 w 在 沿梯度下降方向移动后,再减去一个常数; 如果wti<0 ,则是加上一个常数。总之使其向 0 靠拢。下面就是一种简单的截断方法,使得如果经过 L1 正则修正后越过 0,则直接置为 0,从而实现有效稀疏性。
wt+1i=T0(wti−ηgti, ηλ)T0(x,y)={0,xif |x|≤yotherwise截断梯度法(TG)
相比上面方法不那么粗暴,在两端接近被截断的小范围 θ 内,向横轴移动一段,使其近 0 端达到 0。当 θ=ηλ 时,与上面的简单截断法相同。
wt+1i=T1(wti−ηgti, η λ, θ)T1(x,y,z)=⎧⎩⎨0,x−y,xif |x|≤yif |x|∈(y,z)if |x|>z
这两种截断方法在更新时都会取窗口
k
,每
2,L1-FOBOS
(2.1) 优化目标
Forward-Backward Splitting,是由 John Duchi 和 Yoram Singer 提出的。
FOBOS 中模型的更新分为如下两步,优先沿经验损失减小的方向优化,然后在尽量与上一步结果偏离不太远的情况下,最小化正则项 Ψ(w) 。这样不需要设定截断规则,就能得到类似的结果。
把第一个式子代入第二个,由极小值时梯度为零易得:
可以看出,这里与直接的 L1 正则损失的唯一区别是,这里有两个 η ,而在前面这两个 η 是相等的。
(2.2) L1 正则下的求解
L1-FOBOS 就是在上面取 L1 正则 Ψ(w)=λ |w| 。引入记号 v=w−ηg ,以及 λ~=ηt+12λ ,则前面的优化问题重新写为分量形式:
假设最优解是 w∗i ,后面省去下标 i ,
w∗v≥0
证明:
因为 w∗ 是最优解,所以有
12(w∗−v)2+λ~|w∗|≥12v2当 w∗=0 时取等号。从而得到
w∗v≥w∗2+λ~|w∗|≥0当 v≥0 时:
则 w∗≥0 ,引入拉格朗日乘子 β>0 和约束条件 βw∗=0 ,优化目标
12(w∗−v)2+λ~w∗−βw∗易得极小值时的解 w∗=v−λ~+β 。- w∗>0 , 此时有 β=0 , v>λ~ , w∗=v−λ~
- w∗=0 ,则有 v−λ~+β=0 , β≥0 ,所以 v≤λ~
综合结果
w∗=max(0,v−λ~)当 v<0 时:
类似上面的方法,得到
w∗=−max(0,−v−λ~)综合以上结果,可得:
wt+1=sgn(vi)max(0,|vi|−λ~)=⎧⎩⎨⎪⎪0,vi−λ~,vi+λ~,if |vi|≤λ~if vi>λ~if vi<−λ~3. L1-RDA
RDA(Regularized Dual Averaging),由微软的 Lin Xiao 在 2010 年提出。优化目标是最小化 {12g1:t⋅w+Ψ(w)+βtth(w)} ,其中 g1:t=∑ts=1gs , Ψ(w) 是正则项, βt 是非负非自减序列, h(w) 是辅助的严格凸函数。
L1-RDA 具体的更新策略如下:
wt+1=argminw{12g1:t⋅w+λ|w|1+γ2t√∥w∥22}其中 λ>0 , γ>0 。为求解方便,令 g¯ti=12g1:ti , 写出最小化问题的分量形式:
minwi{g¯tiwi+λ|wi|+γ2t√w2i}求上式梯度,并直接令梯度为零来寻找最优解 w∗i :
g¯ti+λξ+γt√w∗i=0其中 ξ=∂∣∣w∗i∣∣ 是正则项在最优点的次梯度,满足:
ξ=⎧⎩⎨⎪⎪1,−1,(−1,1)if w∗i>0if w∗i<0if w∗i=0分情况分析:
1. ∣∣g¯ti∣∣<λ ,- w∗i=0 , 则有 ξ=−gλ∈(−1,0] , 满足条件。
- w∗i>0 , 则 ξ=1 , g+λξ+γt√w∗i>g+λ≥0 ,条件相斥。
-
w∗i<0
,则
ξ=−1
,
g−λ+γt√w∗i<0
,也不满足
所以此时 w∗i=0
2 . g¯ti>λ
- w∗i=0 ,则有 ξ=−gλ∈(−∞,0) , 不满足
- w∗i>0 , 则有 ξ=1 , g+λξ+γt√w∗i=−t√γg+λ≥0 ,不满足
-
w∗i<0
,则有
ξ=−1
,
w∗i=−t√γ(g−λ)<0
,满足条件
所以此时 w∗i=−t√γ(g¯∗i−λ)
3 . g¯ti<−λ
- w∗i=0 ,则有 ξ=−gλ∈(1,+∞) , 不满足
- w∗i>0 , 则有 ξ=1 , w∗i=−t√γ(g+λ)>0 ,与假设一致
-
w∗i<0
,则有
ξ=−1
,
w∗i=−t√γ(g−λ)>0
,与假设矛盾
所以此时 w∗i=−t√γ(g¯ti+λ)
综上可得更新方式:
wt+1i={0,−t√γ(g¯ti−λ sgn(g¯ti))if ∣∣g¯ti∣∣<λif ∣∣g¯ti∣∣>λ总结,RDA 主要计算每一维的累积平均梯度,与 λ 相比来做截断,更新权重。更新的幅度与迭代次数 t 直接相关,但在模型的构建中,并不需要指定学习步长。
Algorithms
- input
λ , γ - initial w∈RN , g∈RN
- for
t=1,2,3,⋯
, do
g←t−1tg+1t∇ℓ(w)
refresh w by
wi={0,if |gi|<λ −t√γ(gi−λ sgn(gi))if |gi|>λ - end
- return w
4,FTRL
L1-FOBOS 的优化目标分量形式可写为:
minw{12(wi−wti−ηtgti)2+ηtλ|wi|}=minw{12(wi−wti)2+wiηtgti+ηtλ|wi|+const}=minw{12ηt(wi−wti)2+wigti+λ|wi|}由此重新写出更新公式:
wt+1=argminw{gt⋅w+λ∥w∥1+12ηt∥w−wt∥22}
而 L1-RDA 的更新策略可以写为:
wt+1=argminw{g1:t⋅w+λ∥w∥1+12ηt∥w−0∥22}引入替代“更新步长“的量 σs=1ηs−1ηs−1 ,则有 σ1:t≡∑ts=1σs=1ηt 。上面两种模型,L1_FOBOS 和 L1-RDA 的更新策略重新写为:
wt+1=wt+1=argminw{gt⋅w+λ∥w∥1+12σ1:t∥w−wt∥22}argminw{g1:t⋅w+λ∥w∥1+12σ1:t∥w−0∥22}其区别于相似之处非常明显。FTRL结合两种特点,更新策略为:
wt+1=argminw{g1:t⋅w+λ1∥w∥1+12λ2∥w∥22+12∑s=0tσs∥w−ws∥22}为了求解,将上式整理为:
wt+1==argminw{(g1:t−∑s=1tσsws)⋅w+λ1∥w∥1+12(λ2+σ1:t)∥w∥22+const}argminw{zt⋅w+λ1∥w∥1+12(λ2+σ1:t)∥w∥22}其中已引入 zt≡∑ts=1(gs−σsws) 。
类似于之前的方法,首先将上式写成分量形式 minw{zti wi+λ1|wi|+12(λ2+σ1:t)w2i} ,分析即可得到结果:
wt+1t={0,−1λ2+σ1:t(zti−λ1 sgn(zti)),if |zi|<λ1if |zi|>λ1建议的学习步长的取值方式为:
σ1:ti=1ηti=β+∑ts=1(gsi)2−−−−−−−−−√α即不同特征的权重的更新步长也不相同。Algorithm
input α , β , λ1 , λ2
initialize w∈RN , z=0⃗ ∈RN , n=0⃗ ∈RN
for t=1,2,3,... , do
g=∇ℓ(w;xt,yt)
for i=1,2,3,...,N , do
σi=1α(ni+g2i−−−−−−√−ni−−√)
zi←zi+(gi−σiwti)
ni←ni+g2i
wi={0,if |zi|≤λ1 −(β+ni√α+λ2)−1(zi−sgn(zi)λ1)otherwise
end for
end for