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

专注在线学习的平台(在线学习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

    推荐阅读
  • 供电运维队长职责(奋进供电人杨晶晶)

    2013年入职南方电网深圳供电局以来,她从事新闻宣传工作已经9个年头。从小就有着“新闻梦”的杨晶晶,以笔为媒,做深圳电网与公众间的“桥梁”“窗口”。打开杨晶晶的电脑文件夹,她“码”下的每一篇稿件按“年度-季度”分类存档。自2018年来到深圳供电局新闻中心以来,她累计写稿超过了36万字。杨晶晶记得,2020年,新冠肺炎疫情突然袭来,她因居家办公无法到现场采访。

  • 中秋月圆夜难眠(中秋月圆之夜有荞麦)

    众所周知,荞麦是一种健康的食物。赤峰荞麦文化协会成立于2017年8月3日,是以发掘荞麦文化产业为宗旨,不断的创新研发荞麦文化及产品。近期还研发了荞麦壳床垫,一面使用羊毛毡垫,另一面使用荞麦壳填充。荞麦全身都是宝,一方水土养一方荞麦。将会有更多的荞麦品牌相继推出,将赤峰荞麦这张名片推向全国!

  • 早餐什么时候吃最好(吃早餐的最佳时间是几点)

    早餐最好在早上7点后吃。医学专家指出,人在睡眠时,绝大部分器官都得到了充分休息,而消化器官却仍在消化吸收晚餐存留在胃肠道中的食物,到早晨才渐渐进入休息状态。一旦吃早餐太早,势必会干扰胃肠的休息,使消化系统长期处于疲劳应战的状态,扰乱肠胃的蠕动节奏。另外,早餐与午餐以间隔4至5小时左右为好,也就是说早餐7至8点之间为好,如果早餐过早,那么数量应该相应增加或者将午餐相应提前。

  • 死亡笔记中硫克最后在笔记本上写夜神月的名字的真正原因终于揭晓(死亡笔记中硫克最后在笔记本上写夜神月的名字的真正原因终于揭晓)

    死亡笔记中硫克最后在笔记本上写夜神月的名字的真正原因终于揭晓?夜神月被捕,肯定会被判死刑,寿命本来就已经到尽头了,夜神月让硫克用笔记杀死其他人,硫克如果照办,就等于是帮助月延长了生命,硫克就会死。另外,死亡笔记有规则,当死亡笔记在人间的第一个拥有者死亡时,死神必须要在自己的那本笔记上写上此拥有者的名字,相当于一个契约,拿到笔记本成为拥有者契约开始,最后第一个拥有者死亡时,死神写上名字契约结束。

  • 玻璃钢与碳钢哪个更好(林森为大家讲述玻璃钢是玻璃)

    玻璃钢也称作SMC,即纤维强化塑料,一般指用玻璃纤维增强不饱和聚脂、环氧树脂与酚醛树脂基体。以玻璃纤维或其制品作增强材料的增强塑料,称为玻璃纤维增强塑料,或称玻璃钢。无机玻璃钢由于所使用的树脂品种不同,因此有聚酯玻璃钢、环氧玻璃钢、酚醛玻璃钢之称。基体相对于纤维来说,强度、模量都要低很多,但可以经受住大的应变,往往具有粘弹性和弹塑性,是韧性材料。

  • 主动脉硬化是怎么回事(主动脉硬化是怎么回事怎么治疗)

    动脉硬化是随着年龄增长而出现的血管疾病,其规律通常是在青少年时期发生,至中老年时期加重、发病。引起主动脉硬化的病因中最重要的是高血压、高脂血症、抽烟。因此说服患者耐心接受长期的防治措施至关重要。若血脂持续增高,应食用低胆固醇、低动物性脂肪食物,如:各种瘦肉,鸡、鸭、鱼肉,蛋白,豆制品等。参加一定的体力劳动和体育活动,对预防肥胖、锻炼循环系统的功能和调整血脂代谢均有禆益,是预防本病的一项积极措施。

  • 失业金领取条件及标准(失业金领取条件及标准是什么)

    我们一起去了解并探讨一下这个问题吧!失业金领取条件及标准失业保险金领取条件有:具备下列条件的失业人员,可以领取失业保险金。按照规定参加失业保险,所在单位和本人已按照规定履行缴费义务满1年的;非因本人意愿中断就业的;已依法定程序办理失业登记的;有求职要求,愿意接受职业培训、职业介绍的。

  • 如何做爽口萝卜(爽口萝卜制作步骤)

    如何做爽口萝卜材料:白萝卜600g,白醋40,盐10g,糖50g,小米椒5个。米醋和糖的比例可以按自己对酸甜的喜好来配比调整。撒上10g盐搅拌均匀,腌制大约半小时,使得白萝卜软化脱水去辛辣。加入小米椒、糖、白醋。萝卜倒进密封的保鲜盒或玻璃罐。放进冰箱冷藏保存,腌几个小时就可以吃了,隔天后的白萝卜更好吃。每次吃的时候取出一部分,然后放回冰箱,随着腌制时间延长,吃到最后越来越好吃。

  • 酸汤肥牛金针菇的做法(金汤肥牛)

    金汤肥牛酸辣爽口,非常开胃,将肥牛煮在酸爽辛辣的金汤里,用金针菇做配菜非常适合。

  • 出去游玩是清明节的习俗吗(清明节古人玩什么吃什么)

    清明,不仅是季春三月的一个节气,还是传统民俗文化中一个重要节日。清明是扫墓节,因为融合了寒食节。古代寒食节在冬至后一百零五天,恰与汉代以后出现的清明节气贴近。清明扫墓、缅怀先人遂成风俗沿袭至今。清明又是踏青节,因为合并了上巳节。魏晋以后,将上巳节定为三月初三。元朝宫中更是盛行,每逢清明,宫女们穿上“蹴秋千之服”,双双对蹴。秋千是女人和儿童玩的,成年男子则以蹴鞠为戏。佳节有佳肴,清明要吃桃花饭。