文学起点网
当前位置: 首页 文学百科

专注在线学习的平台(在线学习OnlineLearning)

时间:2023-05-23 作者: 小编 阅读量: 3 栏目名: 文学百科

前言这几年在工业界,FTRL基本等价于在线学习。据了解,当时淘宝某个主场景的实验结论和我们一致。最近开始重新实验FTRL。从实践的情况来看,先不论线上的收益,仅当FTRL训练的更快,使用的资源更少,就足以吸引各大公司使用。如果能够从batch转换到onlinelearning,有明显的经济收益。而Regret是每t个样本来,更新w后得到Wt,追求累计regret最小,有点贪心的思想。上面的公式分位三个部分:1代表梯度或累积梯度,RDA区别于FOBOS是考虑累计梯度。

前言

这几年在工业界,FTRL基本等价于在线学习。2013年google的论文:Ad Click Prediction:a View from the Trenches,给出了FTRL的工程实现,15年的时候,国内开始比较火,我们组也是那个时候尝试了一把,后来16年又搞了一次,没有什么明显的收益,只是在大促的时候会有些变化。据了解,当时淘宝某个主场景的实验结论和我们一致。当时大家追求快糙猛以及各种其他原因,一看没有收益,就没有继续。最近随着我们在大规模离散化特征上的实践,发现当时的思路有些问题,当时的使用的特征,随时间发生分布变化的概率小,没有必要用ftrl。最近开始重新实验FTRL(交了一笔学费)。从实践的情况来看,先不论线上的收益,仅当FTRL训练的更快,使用的资源更少,就足以吸引各大公司使用。

FTRL的代码实现非常简单,腾讯的开源PS angel上已经支持,摘抄一段:

FTRL是一种在线学习的常见优化算法,方便实用,而且效果很好,常用于更新在线的CTR预估模型。之前的传统实现多见于Storm。但是实际应用中,数据集的维度往往很大,且模型稀疏性,这种Case下,用Spark Streaming结合Angel,其实会有更好的效果,而且代码很少,性能稳健。

一直以来,只是知道FTRL怎么用,而不了解是怎么来的。最近抽了一段时间,翻阅了H.Brendan McMahan的三篇论文,并看了一些网上的资料,有了大致的认知,由于这方面好的资料不少,本文从初学者的角度去做一份导读,解释一些背景知识和概念,希望能帮助到大家。在线学习里有不少是最优化的知识,比如证明regret bounds,但我毕竟在工业界,更关心这些算法是怎么做迭代的,即权重W是怎么更新的。由于在线写公式太繁琐了,且参考文献里面的推导很详细,本文尽量少用公式。

背景知识在线学习解决什么问题

wiki上对online learning的定义如下:

In computer science, online machine learning is a method of machine learning in which data becomes available in a sequential order and is used to update our best predictor for future data at each step, as opposed to batch learning techniques which generate the best predictor by learning on the entire training data set at once.

在工业界,不单参与训练的数据量大,模型特征量的规模也大。比如点击率预估,往往特征规模会在亿级别,训练数据很容易过TB,对资源的压力很大。Spark集群的一台高性能的服务器是很贵,有钱的大厂当然可以堆机器去搞,大部分公司还是要掂量下。另外,类似电商这种业务,会有许多场景的需要单独做模型。如果能够从batch转换到online learning,有明显的经济收益。

online learning是基于stream的data,无法直接对目标优化,普遍会选择regret作为优化目标。看下二者的公式,

公式(1)

公式(2)

直观理解二者的区别,Loss是在一次batch计算完,得到了新的Wn,然后计算loss,追求loss最小。而Regret是每t个样本来,更新w后得到Wt,追求累计regret最小,有点贪心的思想。

看似不相干的重要特性:稀疏解

在Online learning的场景,直观上,batch的梯度下降用不了,我们能不能用mini-batch或者SGD(Stochastic Gradient Descent。特别是SGD,先来看下SGD的weight更新公式:

公式(3)

天然符合online learning的需求,online gradient descent就是这个思路。但这里有个严峻的问题,SGD不能带来稀疏解。就算增加L1正则,在batch的时候可以得到稀疏解,但在online的时候却不行。前面提到过,类似ctr预估的模型的特征空间在亿级别,好的公司在百亿级别,不能训练出稀疏解即代表没有办法实际使用模型。网上关于这个SGD不能给出稀疏解有很多解释,比如认为由于浮点数计算,难以真正变成0. 个人更倾向于这个解释:

不同于 Batch,Online 中每次的更新并不是沿着全局梯度进行下降,而是沿着某个样本的产生的梯度方向进行下降,整个寻优过程变得像是一个“随机” 查找的过程(SGD 中 Stochastic 的来历),这样 Online 最优化求解即使采用 L1 正则化的方式, 也很难产生稀疏解。

非常正经的导读在线学习算法概述

学术界和工业界都在研究能学习出高精度且稀疏的模型。先从最简单的想法开始,既然SGD不能直接得到稀疏解,我们可以将小于一定阈值的weight置为0,但由于online是一个样本过来就训练,那么就有可能因为训练不充分导致了weight小,这样简单截断损失很大。随后FOBOS、RDA、FTRL等算法提出,其中RDA是微软10年的工作,FTRL是google的H. Brendan McMahan 3年的工作,FTRL结合了FOBOS高精度以及RDA较好的稀疏性的特点。一开始接触这块,很容易陷入到公式细节中,无法建立大局观,重点理解下面两句话中的观点,可免于在公式的推导中迷失:

优化相关的一些背景知识拉格朗日乘子和KKT条件

这块在公式推导里会用到,简单来讲Online场景面对的目标函数,很多时候是带约束条件的。举个简单的例子讲,LR的交叉熵loss函数,在没有加正则前,是无约束的优化问题,加了正则并限制正则的大小,则变成了一个有约束的问题。具体可以分为三种,无约束优化问题、有等式约束优化问题以及不等式约束的优化问题,其中等式约束的优化问题和不等式约束问题分别可以通过拉格朗日乘子和KKT条件来转换为无约束问题。细节可以参考后面提到的几篇文章。

次梯度

上面章节提到了怎么处理L1是关键,而L1正则化在0处不可导, L1本身都是凸函数,因此可以采用次梯度代替其梯度。其中次梯度(subgradient)一般是个集合,[左导数,右导数],举个例子,y=|x|,次梯度的集合为[-1,1]。

好文筛选

从SGD到TG、FOBOS到FTRL的原理

首推这篇[1]

写的很详细,是不可多得的优质中文资料,介绍了TG、FOBOS、RDA以及FTRL的算法原理,并有详细的推导,里面有一些符号错误,但不影响理解,以模型参数迭代更新的方式为主线,记住前文提到的两个核心问题,读起来事半功倍,强烈建议读下原文,本文不再赘述。

FOBOS/RDA/FTRL统一形式下的对比分析

H.Brendan McMahan在论文Follow-the-regularized-leader and mirror descent: Equivalence theorems and L1 regularization里从形式上统一了几种算法,然后做了对比分析,其中FOBOS被改写为累计梯度的形式。上面的公式分位三个部分:

  • 1代表梯度或累积梯度,RDA区别于FOBOS是考虑累计梯度。
  • 2代表正则项
  • 3代表限制了x的变化不能离过去太远或者离0点太远。
  • 其中x可以理解成模型的weight。这篇论文也写的比较容易懂,建议读下。
FTRL的工程细节

主要是几个方面:

  1. 由于长尾,大部分特征是稀疏的,且频次很低,online的场景无法用batch的方式去统计特征频次。论文提了两个方案,以泊松概率p决定特征是否更新和建立Bloom Filter Inclusion。我看大部分实现都是用Bloom Filter。
  2. 对浮点数重编码,变的更小。
  3. Training Many Similar Models
  4. A Single Value Structure
  5. 用计数去替换学习率的计算中的累计梯度,可以又快又省。
  6. 对负样本重采样。但会改变数据分布,所以可以给重采样的样本加上权重。

具体细节可以看这篇文章:[2]

,讲的很好,细节不再赘述。也可以直接看原论文:Ad Click Prediction:a View from the Trenches,这部分讲的通俗易懂。

PS:里面关于Training Many Similar Models和A Single Value Structure两部分,不是很理解它的业务场景。还请有了解的小伙伴分享下。

FTRL和SGD的关系

有一篇文章提到FTRL和上面公式是等价的,角度不一样,比较有意思,参考:[3]

可以加深对于FTRL公式的理解:

引用一段原文:

由此可以更好的体会下公式为啥长这样子,其左边两项承担了SGD算法的功能,而最右边的一项承担的是得到稀疏模型的功能。因为有这样的一种数学含义在背后,所以才好放心的下结论说,FTRL算法融合了RDA算法能产生稀疏模型的特性和SGD算法能产生更有效模型的特性,也就是说能学习出有效的且稀疏的模型。

总结

炒了个冷饭,已经没有什么可写的了,因此做个导读给大家。头条不让放链接,大家可以去看我的专栏,图片的水印。

参考文献:

[1] 在线最优解

[2] 各大公司广泛使用的在线学习算法FTRL详解

[3] understanding-FTRL-algorithm

[4] Subgradient. wiki

[5] H. Brendan McMahan & M Streter. Adaptive Bound Optimization for Online Convex Optimization. In COLT,

2010

[6] H. Brendan McMahan. Follow-the-Regularized-Leader and Mirror Descent: Equivalence Theorems and L1

Regularization. In AISTATS, 2011

[7] H. Brendan McMahan, Gary Holt, D. Sculley, Michael Young, Dietmar Ebner, Julian Grady, Lan Nie, Todd

Phillips, Eugene Davydov, Daniel Golovin, Sharat Chikkerur, Dan Liu, Martin Wattenberg, Arnar Mar Hrafnkelsson, Tom Boulos, Jeremy Kubica, Ad Click Prediction: a View from the Trenches. In ACM SIGKDD, 2013

[8] Ad Click Prediction:a View from the Trenches

    推荐阅读
  • 卖火柴的小女孩主要讲了什么(卖火柴的小女孩讲述的是什么)

    卖火柴的小女孩主要讲了什么它讲述的是一个在圣诞夜卖火柴的小女孩的悲惨命运。因为没有卖掉一根火柴,小女孩一天没有吃东西。创作背景:1845年10月,安徒生再次访问意大利。在圣诞节即将到来的时候,格洛斯顿城的朋友们再三邀请安徒生去那里过圣诞节。安徒生兴冲冲地坐上了去格洛斯顿的马车。安徒生的马车在格洛斯顿的街道上缓缓前进,他要体会一下城市里的圣诞节气氛。安徒生回去以后就写了《卖火柴的小女孩》。

  • 芹菜炒木耳大白菜(钙含量是牛奶的3倍)

    韭菜炒豆芽的做法,就是这么简单,掌握好技巧,口感能提升不少,如果你认为韭菜炒豆芽的做法还不错,欢迎收藏起来学着做,或者是分享给更多的人学习!

  • 雅典为什么会繁华(同属希腊地区的雅典和斯巴达)

    古希腊城邦奴隶制得到如此广泛推行为日后城邦时代社会经济的发展以及各行各业的繁荣提供了重要条件。这也使得希腊城邦的奴隶制经济得到了空前规模的发展,尤其是在以雅典和斯巴达两大城邦的代表下,古希腊城邦时代迎来了其奴隶制社会经济发展的黄金时代。雅典型的奴隶制经济代表着古希腊城邦时代奴隶制社会发展的整体面貌,而斯巴达型的奴隶制经济只是局限于那些经济较为落后的城邦当中。

  • 电饭锅腊肠饭做法(电饭锅腊肠饭最简单的做法介绍)

    下面希望有你要的答案,我们一起来看看吧!电饭锅腊肠饭做法主料是腊肠、米,辅料是胡萝卜、玉米、葱、盐、鸡粉。先把材料准备好,大米洗净,腊肠切丁,玉米粒胡萝卜切丁,备用。电饭锅内放少许油,依照顺序放入胡萝卜,玉米腊肠,加入盐,鸡粉,酱油翻炒片刻,接着放入米,水量和平常一样,按下开关煮饭就可以了。开关跳了后,撒上些香葱,加入些酱油调味拌匀即可出锅。

  • 地笼放什么饵料(地笼的介绍)

    下面内容希望能帮助到你,我们来一起看看吧!地笼放什么饵料地笼里面放的饵料比较好的:大骨头稍微有一点点肉屑。还有红虫但数量要多一些。还可以鸡鸭骨头等等腥味越大越好。地笼是中原地区的业余或专业捕鳝或泥鳅,河虾小鱼等的工具。地笼的长度可依据养殖水面的长度、宽度而定,一般为15节左右,总长约7~8米。材质为塑料纤维。地笼有很多入口,但内部构造比较复杂,鱼类进去后就很难出来。

  • 卡路里最低的食物排行(卡路里最低的食物有哪些)

    卡路里最低的食物排行芝麻菜。芝麻菜在日常生活中是比较常见,不仅含有低热量低脂肪和低胆固醇,而且高纤维和大量的维生素A,K,C以及其它丰富的营养。西兰花低热量、丰富维生素、大量矿物质及抗氧化剂,可降低各种癌变的发生率。绿豆芽热量较低,水分和膳食纤维较高。西红柿果实营养丰富,具特殊风味。

  • 新买的内衣有很大的味道怎么回事 新买的内衣有很大的味道怎么回事呀

    不少女性朋友可能有这样的困扰,新买的内衣挂在内衣店里没有异味,可是拿回家洗一遍之后却散发出很大的味道。内衣长期挤压产生味道新买的内衣从生产到购买经过了较长的时间,而在此期间内衣被长时间闷在包装袋里面或者是长时间受到挤压,这也容易使内衣在包装袋中产生很大的味道。

  • 修车最容易被更换的零件(更换下来的旧件哪些可以卖掉)

    可以最大程度上降低我们的损失呢?第4个零部件就是发动机以及空调压缩机了,相信我们都应该知道,车辆当中最为贵重的零部件就是发电机,所以如果我们的车辆出现问题时,发电机也能够卖到一个非常好的价钱。但前提是一定要经过维修之后还可以再次使用的,才能够进行售卖,如果没有维修价值了的话,也只能够是当废铁卖掉。

  • 孕妇晚期腰痛可以按摩吗(孕妇腰酸可以按摩缓解吗)

    孕妇腰酸可以按摩缓解吗孕期随着腹中胎儿越长越大,身体会变得笨重,由于重心前移,增大的子宫压迫脊柱导致背部肌肉紧张,可能就会引起腰酸背痛,这主要是一个生理性的表现怀孕期间运动量太少,体重明显的增加,怀孕的时候身体里面的激素水。

  • qq隐藏图标的方法(操作步骤)

    qq隐藏图标的方法我们打开QQ软件,输入账号密码登录,进入主界面后,点击个人头像,鼠标移到头像上,会出现浮动框,能看到当前使用的应用图标。确定上述操作后,重新查看自己的个人资料,图标已经隐藏成功,操作完以上步骤后,你的QQ好友就看不到你的手机QQ图标了。我们还可以打开QQ,点击最左侧的选项之后选择设置选项,在系统设置中点击登录选项,在主面板中选择在任务栏通知区域显示QQ图标的对勾去掉即可。