大家好,欢迎来到IT知识分享网。
背景
Online Learning是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果。本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:FTRL(Follow The Regularized Leader)[1]和BPR(Bayesian Probit Regression)[2],以及Online Learning在美团移动端推荐重排序的应用。
什么是在线学习(Online Learning)
准确地说,Online Learning并不是一种模型,而是一种模型的训练方法,Online Learning能够根据线上反馈数据,实时快速地进行模型调整,使得模型及时反映线上的变化,提高线上预测的准确率。Online Learning的流程包括:将模型的预测结果展现给用户,然后收集用户的反馈数据,再用来训练模型,形成闭环的系统。如下图所示:
Online Learning有点像自动控制系统,但又不尽相同,二者的区别是:Online Learning的优化目标是整体的损失函数最小化,而自动控制系统要求最终结果与期望值的偏差最小。
传统的训练方法,模型上线后,更新的周期会比较长(一般是一天,效率高的时候为一小时),这种模型上线后,一般是静态的(一段时间内不会改变),不会与线上的状况有任何互动,假设预测错了,只能在下一次更新的时候完成更正。Online Learning训练方法不同,会根据线上预测的结果动态调整模型。如果模型预测错误,会及时做出修正。因此,Online Learning能够更加及时地反映线上变化。
Online Learning的优化目标
如上图所示,Online Learning训练过程也需要优化一个目标函数(红框标注的),但是和其他的训练方法不同,Online Learning要求快速求出目标函数的最优解,最好是能有解析解。
怎样实现Online Learning
前面说到Online Learning要求快速求出目标函数的最优解。要满足这个要求,一般的做法有两种:Bayesian Online Learning和Follow The Regularized Leader。下面就详细介绍这两种做法的思路。
Bayesian Online Learning
贝叶斯方法能够比较自然地导出Online Learning的训练方法:给定参数先验,根据反馈计算后验,将其作为下一次预测的先验,然后再根据反馈计算后验,如此进行下去,就是一个Online Learning的过程,如下图所示。
举个例子, 我们做一个抛硬币实验,估算硬币正面的概率

对于观测值
对于观测值
按照上面的Bayesian Online Learning流程,我们可以得到估算
初始化
for i = 0 … n如果
是正面
如果 YiYi是反面
最终: 

假设抛了


和最大化似然函数:
得到的解是一样的。
上面的例子是针对离散分布的,我们可以再看一个连续分布的例子。
有一种测量仪器,测量的方差


仪器的方差是
观测到 

假设参数 
观测到
可以得到以下的Online Learning算法:
初始化
for i = 0 … n观测值为
更新
![]()
![]()
上面的两个结果都是后验跟先验是同一分布的(一般取共轭先验,就会有这样的效果),这个后验很自然的作为后面参数估计的先验。假设后验分布和先验不一样,我们该怎么办呢?
举个例子:假设上面的测量仪器只能观测到



此时,我们仍然可以计算后验分布:

可以求得:
观测到
可以求得:
两者综合起来,可以求得:
其中:
有了后验我们可以得到Online Bayesian Learning流程:
初始化
for i = 0 … n观测值为
更新
Bayesian Online Learning最常见的应用就是BPR(Bayesian Probit Regression)。
BPR



已知

上面这个结论的具体的推导过程可以参考[3]的4.4节,这里我们直接拿来用。
我们可以假设特征权重 
:




根据上面的式子可以得出:
由于我们只能观测到



对于观测值,我们可以先用KL距离近似
有了
可以求得:
Online Bayesian Probit Regression 训练流程如下:
初始化
for i = 1 … n
FTRL
除了Online Bayesian Learning,还有一种做法就是FTRL(Follow The Regularized Leader)。FTRL的网上资料很多,但是大部分介绍怎么样产生稀疏化解,而往往忽略了FTRL的基本原理。顾名思义,FTRL和稀疏化并没有关系,它只是一种做Online Learning的思想。
先说说FTL(Follow The Leader)算法,FTL思想就是每次找到让之前所有损失函数之和最小的参数。流程如下:
初始化
for t = 1 … n损失函数
更新
FTRL算法就是在FTL的优化目标的基础上,加入了正规化,防止过拟合:
其中,
FTRL算法的损失函数,一般也不是能够很快求解的,这种情况下,一般需要找一个代理的损失函数。
代理损失函数需要满足几个要求:
- 代理损失函数比较容易求解,最好是有解析解
- 优化代理损失函数求的解,和优化原函数得到的解差距不能太大
为了衡量条件2中的两个解的差距,这里需要引入regret的概念。
假设每一步用的代理函数是
每次取
其中
随着训练样本的增多,这两个优化目标优化出的参数的实际损失值差距越来越小。
代理函数 
如果
其中



为了产生稀疏的效果,我们也可以加入L1正规化:
只要
上面的式子我们可以得出
wt+1,i={0−ηt(zt,i−sgn(zt,i)λ1))|zt,i|<λ1otherwisewt+1,i={0|zt,i|<λ1−ηt(zt,i−sgn(zt,i)λ1))otherwise
其中
可以得到FTRL的更新流程如下:
输入
初始化
for t = 1 … T计算
![]()
更新
Online Learning实践
前面讲了Online Learning的基本原理,这里以移动端推荐重排序为例,介绍一下Online Learning在实际中的应用。
推荐重排序介绍
目前的推荐系统,主要采用了两层架构,首先是触发层,会根据上下文条件和用户的历史行为,触发用户可能感兴趣的item,然后由排序模型对触发的item排序,如下图所示:
推荐重排序既能融合不同触发策略,又能较大幅度提高推荐效果(我们这里主要是下单率)。在移动端,屏幕更加小,用户每次看到的item数目更加少,排序的作用更加突出。
美团重排序Online Learning架构
美团Online Learning架构如下图所示:
线上的展示日志,点击日志和下单日志会写入不同的Kafka流。读取Kafka流,以HBase为中间缓存,完成label match(下单和点击对映到相应的展示日志),在做label match的过成中,会对把同一个session的日志放在一起,方便后面做skip above:
训练数据生成
移动端推荐的数据跟PC端不同,移动端一次会加载很多item,但是无法保证这些item会被用户看到。为了保证数据的准确性,我们采用了skip above的办法,如下图所示:
假设用户点击了第i个位置,我们保留从第1条到第i+2条数据作为训练数据,其他的丢弃。这样能够最大程度的保证训练样本中的数据是被用户看到的。
特征
用的特征如下图所示:
算法选择
我们尝试了FTRL和BPR效果,线下实验效果如下表:
| 算法 | AUC | 模型参数个数 |
|---|---|---|
| FTRL | 0.8432 | 200W |
| BPR | 0.8441 | 1500W |
BPR的效果略好,但是我们线上选用了FTRL模型,主要原因是FTRL能够产生稀疏化的效果,训练出的模型会比较小。
模型训练
训练算法不断地从HBase中读取数据,完成模型地训练,训练模型放在Medis(美团内部地Redis)中,线上会用Medis中的模型预测下单率,根据预测的下单率,完成排序。
线上效果
上线后,最终的效果如下图所示,和base算法相比,下单率提高了5%。
参考资料
- [1] McMahan H B, Holt G, Sculley D, et al. Ad Click Prediction: a View from the Trenches. Proceedings of the 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD). 2013.
- [2] Graepel T, Candela J Q, Borchert T,et al. Web-Scale Bayesian Click-Through Rate Prediction for Sponsored Search Advertising in Microsoft’s Bing Search Engine. Proceedings of the 27th International Conference on Machine Learning ICML. 2010.
- [3] Murphy K P. Machine Learning: A Probabilistic Perspective. The MIT Press. 2012.
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135684.html











![在线学习算法(Online Learning)理论与实践插图39 \mathrm{log}\left[ p\left(\mu \mid \alpha,\beta \right) \cdot p \left( Y = 1 \mid \mu \right)^{H} \cdot p \left( Y = 0 \mid \mu \right)^{T} \right]](https://i-blog.csdnimg.cn/blog_migrate/16d69995166b69e788c4ebb99e1eda99.gif)
























![在线学习算法(Online Learning)理论与实践插图117 \mu = \left[ \mu_1,\mu_2,...,\mu_D\right]^{\mathrm{T}}](https://i-blog.csdnimg.cn/blog_migrate/66f61b77bbc27510aeb92b9abceb8cac.gif%20%3D%20%5Cleft%5B%20%5Cmu_1%2C%5Cmu_2%2C...%2C%5Cmu_D%5Cright%5D%5E%7B%5Cmathrm%7BT%7D%7D)
![在线学习算法(Online Learning)理论与实践插图119 \Sigma = \left[ \begin{matrix} \sigma_1^{2} & 0 & \ldots & 0 \\\newline 0 & \sigma_2^{2} & \ldots & 0\\ \newline \vdots &\vdots & \ddots & \vdots \\\newline 0 & 0 & \ldots & \sigma_D^{2} \newline \end{matrix} \right]](https://i-blog.csdnimg.cn/blog_migrate/638e39784e61319801b9462e2ac7354f.gif)








![在线学习算法(Online Learning)理论与实践插图141 \tilde \sigma_{d} = \sigma_{d} \cdot \left[ 1 - x_{i,d} \cdot \frac{\sigma_{d}^{2}}{x^T\Sigma x +\beta^2} \omega\left(Y_{i} \cdot \frac{x^T\mu}{\sqrt{x^T\Sigma x +\beta^2}} \right) \right]](https://i-blog.csdnimg.cn/blog_migrate/c7f8c68c9693e5c230f219007385ea97.gif)



















