机器学习之在线学习算法FTRL

本文介绍了FTRL算法在处理大规模稀疏数据集时的优势,尤其是在在线学习和CTR预测中。FTRL算法结合了RDA和FOBOS的优点,在保证模型精度的同时能够产生稀疏解。文章还对比了在线梯度下降等方法,并详细解释了FTRL算法的数学原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法每次迭代对全体训练数据集进行计算,无法有效地处理超大规模的数据集和在线数据流。google提出的FTRL(Follow-the-regularized-Leader)算法,在处理诸如逻辑回归之类的带非光滑正则化项(例如1范数,做模型复杂度控制和稀疏化)的凸优化问题上性能非常出色。

对于ctr预估,输入的特征x往往具有上百亿维度,但是由于是稀疏的,每个样本可能只有几百个非零值。这使得在大数据下,可以的高效的使用流式样本进行模型的流式训练<每个样本只用一次>。从LR模型说起,对于label为{0,1}的情况,LR的loss函数如下:

Lt(wt)=ytlogpt(1yt)log(1pt)Lt(wt)=−ytlog⁡pt−(1−yt)log(1−pt)

Loss关于参数w的导数(ptyt)xt,pt=σ(wtxt)(pt−yt)xt,pt=σ(wtxt),这就是用于参数更新的梯度值。在线梯度下降(OGD)或随机梯度下降(SGD)是解决这类问题的非常高效、高精度的且省计算资源的方法。但实际应用中,考虑模型的最终大小<参数空间,非0权重w决定了内存的使用量。而简单的在线梯度下降并很难产生真正的稀疏解。

有如下几个途径使得模型产生稀疏性:

  1. 简单的假如L1L1范数,但是也有局限性,因为运算时是浮点运算,训练出来的权重w很难出现绝对的零值。
  2. 在1范数的基础上作出截断。这个很好理解,设置一个阀值,做截断保证稀疏。结合L1每在线训练k个数据截断一次。但是问题是,可以丢弃本身权重就较小的特征(如刚开始训练的截断或训练数据中包含该特征的样本数本来就少),破坏了在线训练算法的理论完备性。
  3. 黑盒方法,出掉一些特征,然后重新训练看被消除的特征是否有效,这样需要算法在数据上跑很多次,不实用。
  4. FOBOS和RDA算法:前者是梯度下降类方法,相对OGD可以产生更好的稀疏特征,精度比较好;后者可以在精度与稀疏性之间更好的平衡。

FTRL

FTRL可以看作RDA和FOBOS的混合,但在L1范数或者其他非光滑的正则项下,FTRL比前两者更加有效。下面我们详细介绍一下TFRL。

我们关注梯度训练模块,对于一组梯度gtdgt∈Rd, t 表示更新次数,OGD对于参数的更新方式是:wt+1=wtαtgtwt+1=wt−αtgt。这里αα是递减的学习速度。FTRL采用如下的更新方式来替换上面的形式:

wt+1=argminw(g1:tw+12s=1tσswws22+λw1)wt+1=argminw(g1:tw+12∑s=1tσs‖w−ws‖22+λ‖w‖1)

这里g1:t=ts=1gs,σ1:t=1αtg1:t=∑s=1tgs,σ1:t=1αt, 这个式子:第一项是梯度更新,第二项保证泛化精度,第三项产生稀疏解。可以改写成:
(g1:ts=1tσsws)w+1αtw22+λ1w1+C(g1:t−∑s=1tσsws)w+1αt‖w‖22+λ1‖w‖1+C

待续~~~,理论没搞太明白。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值