FTRL算法的理论分析与工程化实现
FTRL算法本质上是针对梯度下降类算法的参数更新过程进行优化,在FTRL之前还有FOBOS和RDA算法。本文以逻辑回归算法(LR)为例,深入阐述一下FOBOS,RDA,FTRL算法。
关于FTRL算法的发展历程可以参考《各大公司广泛使用的在线学习算法FTRL详解》一文;本文关于逻辑回归算法推导的部分主要参考《LR+FTRL算法原理以及工程化实现》,原文讲的很好,但是一些细节表述有些许不正确,本文做了校正;本文关于FOBOS,RDA,FTRL算法部分的阐述是知乎作者张戎博文《FOLLOW THE REGULARIZED LEADER (FTRL) 算法总结》的精炼版。
1. 逻辑回归算法推导
逻辑回归模型是一种分类模型,由条件概率分布P(Y|X)表示,形式为参数化的logistic分布,如下所示。
P(Y=1|x)=exp(w⋅x+b)1+exp(w⋅x+b)
P(Y=0|x)=11+exp(w⋅x+b)
有时为了方便,将权重w和输入向量x进行扩充,即w=(w(1),w(2),…,w(n),b)T,x=(x(1),x(2),…,x(n),1)T。扩充后如下所示:
P(Y=1|x)=exp(w⋅x)1+exp(w⋅x)
P(Y=0|x)=11+exp(w⋅x)
在学习LR模型时通常使用极大似然法估计模型参数,从而得到LR模型。设
P(Y=1|x)=π(x)
P(Y=0|x)=1−π(x)
似然函数为
N∏i=1[π(xi)]yi[1−π(xi)]1−yi
对数似然函数为:
L(w)=−N∑i=1[yilogπ(xi)+(1−yi)log(1−π(xi))]=−N∑i=1[yi(w⋅xi)−log(1+exp(w⋅xi))]
对L(w)求极大值,得到w的估计值。这样,问题就变成了以对数似然函数为目标函数的最优化问题。可以看出,L(w)函数是一个高阶可导连续凸函数,可以使用梯度下降法、拟牛顿法求解。
在实际应用中,通常是以最小化损失函数为目标,这里为描述方便,取L(x)=−L(x),转为求L(x)的极小值。
以梯度下降法为例:计算L(w)的梯度为:
∂L(w)∂w=N∑i=1[(π(xi)−yi)⋅xi]
第j个参数的梯度为:
gj=∂L(w)∂w=N∑i=1[(π(xi)−yi)⋅xji]
样本第j个参数的更新方式为:
$$
\begin{aligned}
w^{k+1}j &= w^k_j-\alpha\cdot g_i \\
&= w^k_j-\alpha\cdot \sum^N{i=1}(\pi(x_i)-y_i)\cdot x^j_i\\
\end{aligned}
$$
上述推导基于梯度下降法,当样本量很大的时候,通常使用随机梯度下降法。
FOBOS, RDA, FTRL算法都是针对梯度下降类算法的参数更新过程进行的优化。
2. FOBOS(Forward Backward Splitting)
FOBOS又叫前向后向切分算法,在该算法中,权重的更新主要分为两个步骤:
W(t+0.5)=Wt−ηtG(t),
W(t+1)=argminW{12||W−W(t+0.5)||22+η(t+0.5)Ψ(W)}
第一个步骤是一个标准的梯度下降,第二个步骤是对第一个步骤的结果进行局部调整。将两个式子合并之后如下:
W(t+1)=argminW{12||W−Wt+ηtG(t)||22+η(t+0.5)Ψ(W)}
假设F(w)=12||W−Wt+ηtG(t)||22+η(t+0.5)Ψ(W),如果W(t+1)存在一个最优解,则必有F(W)导数为0:
0∈∂F(W)=W−Wt+ηtG(t)+η(t+0.5)∂Ψ(W)
因为W(t+1)=argminWF(W),则可以得到权重更新的另外一种形式:
W(t+1)=Wt−ηtG(t)−η(t+0.5)∂Ψ(W(t+1))
从上面公式可以看出,更新后的W(t+1)不仅和W(t)有关,还和自己的Ψ(W(t+1))有关。Ψ(W(t+1))是权重的惩罚项。
3. RDA(Regularized Dual Averaging Algorithm)
RDA又叫正则对偶平均算法,特征权重的更新策略是:
W(t+1)=argminW{1tt∑r=1G(r)⋅W+Ψ(W)+β(t)th(W)}
其中,G(t)⋅W指的是向量G(t)和W的内积,Ψ(W)是正则项,h(W)是一个严格凸函数,β(t)|t≥1是一个非负递增序列。
解释:
- 1t∑tr=1G(r)⋅W包括了之前所有梯度的平均值;
- 正则项Ψ(W);
- 额外项β(t)th(W)。
4. FTRL(FOLLOW THE REGULARIZED LEADER)
FTRL 算法综合考虑了 FOBOS 和 RDA 对于梯度和正则项的优势和不足,其特征权重的更新公式是:
$$
W^{(t+1)}=argmin_W \lbrace G^{(1:t)}\cdot W+ \lambda_1||W||1+\frac{\lambda_2}{2}||W||^2_2+\frac{1}{2}\sum^t{s=1}\sigma^{(s)}||W-W^{(s)}||^2_2 \rbrace
$$
其中,G(1:t)=∑ts=1G(s)。
未完待续。