Online Learning算法理论与实践
Online Learning是工業(yè)界比較常用的機器學習算法,在很多場景下都能有很好的效果。本文主要介紹Online Learning的基本原理和兩種常用的Online Learning算法:FTRL(Follow The Regularized Leader)[1]和BPR(Bayesian Probit Regression)[2],以及Online Learning在美團移動端推薦重排序的應用。
?
什么是Online Learning
????? 準確地說,Online Learning并不是一種模型,而是一種模型的訓練方法,Online Learning能夠根據(jù)線上反饋數(shù)據(jù),實時快速地進行模型調(diào)整,使得模型及時反映線上的變化,提高線上預測的準確率。Online Learning的流程包括:將模型的預測結(jié)果展現(xiàn)給用戶,然后收集用戶的反饋數(shù)據(jù),再用來訓練模型,形成閉環(huán)的系統(tǒng)。如下圖所示:
Online Learning有點像自動控制系統(tǒng),但又不盡相同,二者的區(qū)別是:Online Learning的優(yōu)化目標是整體的損失函數(shù)最小化,而自動控制系統(tǒng)要求最終結(jié)果與期望值的偏差最小。
傳統(tǒng)的訓練方法,模型上線后,更新的周期會比較長(一般是一天,效率高的時候為一小時),這種模型上線后,一般是靜態(tài)的(一段時間內(nèi)不會改變),不會與線上的狀況有任何互動,假設預測錯了,只能在下一次更新的時候完成更正。Online Learning訓練方法不同,會根據(jù)線上預測的結(jié)果動態(tài)調(diào)整模型。如果模型預測錯誤,會及時做出修正。因此,Online Learning能夠更加及時地反映線上變化。
Online Learning的優(yōu)化目標
如上圖所示,Online Learning訓練過程也需要優(yōu)化一個目標函數(shù)(紅框標注的),但是和其他的訓練方法不同,Online Learning要求快速求出目標函數(shù)的最優(yōu)解,最好是能有解析解。
?
怎樣實現(xiàn)Online Learning
????? 前面說到Online Learning要求快速求出目標函數(shù)的最優(yōu)解。要滿足這個要求,一般的做法有兩種:Bayesian Online Learning和Follow The Regularized Leader。下面就詳細介紹這兩種做法的思路。
Bayesian Online Learning
貝葉斯方法能夠比較自然地導出Online Learning的訓練方法:給定參數(shù)先驗,根據(jù)反饋計算后驗,將其作為下一次預測的先驗,然后再根據(jù)反饋計算后驗,如此進行下去,就是一個Online Learning的過程,如下圖所示。
舉個例子, 我們做一個拋硬幣實驗,估算硬幣正面的概率。我們假設的先驗滿足
對于觀測值,代表是正面,我們可以算的后驗:
對于觀測值,代表是反面,我們可以算的后驗:
?
按照上面的Bayesian Online Learning流程,我們可以得到估算的Online Learning算法:
最終:?,可以取的期望,
假設拋了次硬幣,正面出現(xiàn)次,反面出現(xiàn)次,按照上面的算法,可以算得:
和最大化似然函數(shù):
得到的解是一樣的。
上面的例子是針對離散分布的,我們可以再看一個連續(xù)分布的例子。
有一種測量儀器,測量的方差是已知的, 測量結(jié)果為:, 求真實值的分布。
儀器的方差是, 所以觀測值Y滿足高斯分布:
觀測到?, 估計參數(shù)?。
假設參數(shù)?滿足高斯分布:
觀測到, 可以計算的后驗:
可以得到以下的Online Learning算法:
上面的兩個結(jié)果都是后驗跟先驗是同一分布的(一般取共軛先驗,就會有這樣的效果),這個后驗很自然的作為后面參數(shù)估計的先驗。假設后驗分布和先驗不一樣,我們該怎么辦呢?
舉個例子:假設上面的測量儀器只能觀測到,是大于0,還是小于0,即,,代表觀測值小于0,代表觀測值大于0。
此時,我們?nèi)匀豢梢杂嬎愫篁灧植?#xff1a;
但是后驗分布顯然不是高斯分布(是截斷高斯分布),這種情況下,我們可以用和上面分布KL距離最近的高斯分布代替。
觀測到
可以求得:
?
觀測到
可以求得:
?
兩者綜合起來,可以求得:
其中:
?
有了后驗我們可以得到Online Bayesian Learning流程:
Bayesian Online Learning最常見的應用就是BPR(Bayesian Probit Regression)。
BPR
在看Online BPR前,我們先了解以下Linear Gaussian System(具體可以參考[3]的4.4節(jié))。
是滿足多維高斯分布:
是通過線性變換加入隨機擾動得到的變量:
已知,我們可以得到的分布:
上面這個結(jié)論的具體的推導過程可以參考[3]的4.4節(jié),這里我們直接拿來用。
我們可以假設特征權(quán)重?滿足獨立高斯分布,即
:
?
是一維變量,是與特征向量的內(nèi)積,加入方差為的擾動:
根據(jù)上面的式子可以得出:
由于我們只能觀測到,是大于0,還是小于0,即,,代表觀測值小于0,代表觀測值大于0。
對于觀測值,我們可以先用KL距離近似的分布,我們可以算出后驗:
有了的近似分布,我們可以計算出后驗:
可以求得:
?
Online Bayesian Probit Regression 訓練流程如下:
FTRL
除了Online Bayesian Learning,還有一種做法就是FTRL(Follow The Regularized Leader)。
FTRL的網(wǎng)上資料很多,但是大部分介紹怎么樣產(chǎn)生稀疏化解,而往往忽略了FTRL的基本原理。顧名思義,FTRL和稀疏化并沒有關系,它只是一種做Online Learning的思想。
先說說FTL(Follow The Leader)算法,FTL思想就是每次找到讓之前所有損失函數(shù)之和最小的參數(shù)。流程如下:
FTRL算法就是在FTL的優(yōu)化目標的基礎上,加入了正規(guī)化,防止過擬合:
其中,是正規(guī)化項。
FTRL算法的損失函數(shù),一般也不是能夠很快求解的,這種情況下,一般需要找一個代理的損失函數(shù)。
代理損失函數(shù)需要滿足幾個要求:
為了衡量條件2中的兩個解的差距,這里需要引入regret的概念。
假設每一步用的代理函數(shù)是
每次取
?
其中,是原函數(shù)的最優(yōu)解。就是我們每次代理函數(shù)求出解,離真正損失函數(shù)求出解的損失差距。當然這個損失必須滿足一定的條件,Online Learning才可以有效,就是:
隨著訓練樣本的增多,這兩個優(yōu)化目標優(yōu)化出的參數(shù)的實際損失值差距越來越小。
代理函數(shù)?應該該怎么選呢?
如果是凸函數(shù),我們可以用下面的代理損失函數(shù):
其中是次梯度(如果是可導的,次梯度就是梯度)。滿足:
為了產(chǎn)生稀疏的效果,我們也可以加入l1正規(guī)化:
只要是凸函數(shù),上面的代理函數(shù)一定滿足:
上面的式子我們可以得出?的解析解:
其中
可以得到FTRL的更新流程如下:
?
Online Learning實踐
????? 前面講了Online Learning的基本原理,這里以移動端推薦重排序為例,介紹一下Online Learning在實際中的應用。
推薦重排序介紹
目前的推薦系統(tǒng),主要采用了兩層架構(gòu),首先是觸發(fā)層,會根據(jù)上下文條件和用戶的歷史行為,觸發(fā)用戶可能感興趣的item,然后由排序模型對觸發(fā)的item排序,如下圖所示:
推薦重排序既能融合不同觸發(fā)策略,又能較大幅度提高推薦效果(我們這里主要是下單率)。在移動端,屏幕更加小,用戶每次看到的item數(shù)目更加少,排序的作用更加突出。
美團重排序Online Learning架構(gòu)
美團Online Learning架構(gòu)如下圖所示:
線上的展示日志,點擊日志和下單日志會寫入不同的Kafka流。讀取Kafka流,以HBase為中間緩存,完成label match(下單和點擊對映到相應的展示日志),在做label match的過成中,會對把同一個session的日志放在一起,方便后面做skip above:
訓練數(shù)據(jù)生成
移動端推薦的數(shù)據(jù)跟PC端不同,移動端一次會加載很多item,但是無法保證這些item會被用戶看到。為了保證數(shù)據(jù)的準確性,我們采用了skip above的辦法,如下圖所示:
假設用戶點擊了第i個位置,我們保留從第1條到第i+2條數(shù)據(jù)作為訓練數(shù)據(jù),其他的丟棄。這樣能夠最大程度的保證訓練樣本中的數(shù)據(jù)是被用戶看到的。
特征
用的特征如下圖所示:
算法選擇
我們嘗試了FTRL和BPR效果,線下實驗效果如下表:
BPR的效果略好,但是我們線上選用了FTRL模型,主要原因是FTRL能夠產(chǎn)生稀疏化的效果,訓練出的模型會比較小。
模型訓練
訓練算法不斷地從HBase中讀取數(shù)據(jù),完成模型地訓練,訓練模型放在Medis(美團內(nèi)部地Redis)中,線上會用Medis中的模型預測下單率,根據(jù)預測的下單率,完成排序。
線上效果
上線后,最終的效果如下圖所示,和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.
原文鏈接:http://tech.meituan.com/online-learning.html
總結(jié)
以上是生活随笔為你收集整理的Online Learning算法理论与实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spark 应用程序性能优化:12 个优
- 下一篇: 分类器模型评价指标