轉載請注明本文鏈接:http://www.cnblogs.com/EE-NovRain/p/3810737.html
現在做在線學習和CTR常常會用到邏輯回歸( Logistic Regression),而傳統的批量(batch)算法無法有效地處理超大規模的數據集和在線數據流,google先后三年時間(2010年-2013年)從理論研究到實際工程化實現的FTRL(Follow-the-regularized-Leader)算法,在處理諸如邏輯回歸之類的帶非光滑正則化項(例如1范數,做模型復雜度控制和稀疏化)的凸優化問題上性能非常出色,據聞國內各大互聯網公司都第一時間應用到了實際產品中,我們的系統也使用了該算法。這里對FTRL相關發展背景和工程實現的一些指導點做一些介紹,凸優化的理論細節不做詳細介紹,感興趣可以去查閱相應paper,相關paper列表會在文后附上。機器學習並非本人在校時的專業方向,不過在校期間積累的基礎不算太差,而且很多東西也是相通的,鑽研一下基本意思都還能搞明白。當然,有不准確的地方歡迎大家討論指正。
本文主要會分三個部分介紹,如果對理論產生背景不感興趣的話,可以直接看第3部分的工程實現(這一部分google13年那篇工程化的paper介紹得很詳細):
- 相關背景:包括通用性的問題描述、批量算法、傳統在線學習算法等
- 簡單介紹與FTRL關系比較密切的Truncated Gradient、FOBOS以及RDA(Regularized Dual Averaging)等算法
- FTRL理論公式以及工程實現(對前因后果和理論方面不感興趣的可以直接看這一小節的工程實現部分)
一、相關背景
【問題描述】
對於loss函數+正則化的結構風險最小化的優化問題(邏輯回歸也是這種形式)有兩種等價的描述形式,以1范數為例,分別是:
a、無約束優化形式的soft regularization formulation:
b、帶約束項的凸優化問題convex constraint formulation:
當合理地選擇g時,二者是等價的。這里提這兩種形式的問題描述,原因在於引出下面無約束優化和帶約束優化問題的不同算法,對於不同的描述形式,會有一系列相關算法。
【批量(batch)算法】
批量算法中每次迭代對全體訓練數據集進行計算(例如計算全局梯度),優點是精度和收斂還可以,缺點是無法有效處理大數據集(此時全局梯度計算代價太大),且沒法應用於數據流做在線學習。這里分無約束優化形式和約束優化(與上面問題描述可以對應起來)兩方面簡單介紹一下一些傳統批量算法。
a、無約束優化形式:1、全局梯度下降,很常用的算法,就不細說了,每一步求一個目標函數的全局梯度,用非增學習率進行迭代;2、牛頓法(切線近似)、LBFGS(割線擬牛頓,用之前迭代結果近似Hessian黑塞矩陣的逆矩陣,BFGS似乎是幾個人名的首字母的簡稱)等方法。牛頓和擬牛頓等方法一般對於光滑的正則約束項(例如2范數)效果很好,據說是求解2范數約束的邏輯回歸類問題最好的方法,應用也比較廣,但是當目標函數帶L1非光滑、帶不可微點的約束項后,牛頓類方法比較無力,理論上需要做修改。感興趣的可以去查查無約束優化的相關數值計算的書,我也沒有更深入研究相關細節,這里不做重點關注。
b、不等式約束凸優化形式:1、傳統的不等式約束優化算法內點法等;2、投影梯度下降(約束優化表示下),gt是subgradient,直觀含義是每步迭代后,迭代結果可能位於約束集合之外,然后取該迭代結果在約束凸集合上的投影作為新的迭代結果(第二個公式中那個符號標識向X的投影):
【在線算法】
如上所述,批量算法有自身的局限性,而在線學習算法的特點是:每來一個訓練樣本,就用該樣本產生的loss和梯度對模型迭代一次,一個一個數據地進行訓練,因此可以處理大數據量訓練和在線訓練。常用的有在線梯度下降(OGD)和隨機梯度下降(SGD)等,本質思想是對上面【問題描述】中的未加和的單個數據的loss函數 L(w,zi)做梯度下降,因為每一步的方向並不是全局最優的,所以整體呈現出來的會是一個看似隨機的下降路線。典型迭代公式如下:
這里使用混合正則化項:,例如可能是1范數與2范數強凸項的混合
(后面會看到其實很多都是這種混合正則化的格式,而且是有一定直觀含義的)。迭代公式中:gt是loss函數(單點的loss,未加和)的subgradient,與gt相加的那一項是混合正則化項中的第二項的梯度,投影集合C是約束空間(例如可能是1范數的約束空間),跟上面介紹的投影梯度下降類似的做法。
梯度下降類的方法的優點是精度確實不錯,但是不足相關paper主要提到兩點:
1、簡單的在線梯度下降很難產生真正稀疏的解,稀疏性在機器學習中是很看重的事情,尤其我們做工程應用,稀疏的特征會大大減少predict時的內存和復雜度。這一點其實很容易理解,說白了,即便加入L1范數(L1范數能引入稀疏解的簡單示例可以產看PRML那本書的第二章,我前面一篇blog的ppt里也大概提了),因為是浮點運算,訓練出的w向量也很難出現絕對的零。到這里,大家可能會想說,那還不容易,當計算出的w對應維度的值很小時,我們就強制置為零不就稀疏了么。對的,其實不少人就是這么做的,后面的Truncated Gradient和FOBOS都是類似思想的應用;
2、對於不可微點的迭代會存在一些問題,具體有什么問題,有一篇paper是這么說的:the iterates of the subgradient method are very rarely at the points of non-differentiability。我前后看了半天也沒看明白,有熟悉的同學可以指導一下。
二、Truncated Gradient、FOBOS以及RDA(Regularized Dual Averaging)
上面提到了,稀疏性在機器學習中是很重要的一件事情,下面給出常見的三種做稀疏解的途徑:
1)、簡單加入L1范數




下面會提一下FOBOS(Forward-Backward Splitting method ,其實應該叫FOBAS的,歷史原因)以及RDA,因為后面的FTRL其實相當於綜合了這兩種算法的優點:
a、FOBOS,google和伯克利09年的工作:
b、RDA(Regularized dual averaging),微軟10年的工作,更加理論性一些,這里就直接略過去了,僅對其特點做一個簡單介紹:
ok,背景和一些鋪墊終於完成了,下面重點進入FTRL的部分。。。
三、FTRL (Follow-the-regularized-Leader)
【發展歷程】
FTRL的理論推進和工程應用首先要感謝這個人:H. Brendan McMahan, google這哥們兒護了三年的坑,直到13年工程性paper出來。發展歷程和基本說明如下:
–10年理論性paper,但未顯式地支持正則化項迭代;11年證明regret bound以及引入通用的正則化項;11年另一篇的paper揭示OGD、FOBOS、RDA等算法與FTRL關系;13年的paper給出了工程性實現,並且附帶了詳細的偽代碼,開始被大規模應用。



- Predict時的memory saving:
- Training時的memory saving:
- 在線丟棄訓練數據中很少出現的特征(probabilistic feature inclusion),但是對於online set,對全數據進行pre-process查看哪些特征出現地很少、或者哪些特征無用,是代價很大的事情,所以要想訓練的時候就做稀疏化,就要想一些在線的方法(FTRL分開更新的w各維度,每一維不同的步長,per-coordinate)
1)Poisson Inclusion:對某一維度特征所來的訓練樣本,以p的概率接受並更新模型;
2. 浮點數重新編碼


[1] J. Langford, L. Li, and T. Zhang. Sparse online learning via truncated gradient.JMLR, 10, 2009. (截斷梯度的paper)
[2] H. B. McMahan. Follow-the-regularized-leader and mirror descent: Equivalence theorems and L1 regularization. In AISTATS, 2011 (FOBOS、RDA、FTRL等各種方法對比的paper)
[3] L. Xiao. Dual averaging method for regularized stochastic learning and online optimization. In NIPS, 2009 (RDA方法)
[4] J. Duchi and Y. Singer. Efficient learning using forward-backward splitting. In Advances in Neural Information Processing Systems 22, pages 495{503. 2009. (FOBOS方法)
[5] 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, Proceedings of the 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD) (2013) (這篇是那篇工程性的paper)
[6] H. Brendan McMahan. A unied analysis of regular-ized dual averaging and composite mirror descent with implicit updates. Submitted, 2011 (FTRL理論發展,regret bound和加入通用正則化項)
[7] H. Brendan McMahan and Matthew Streeter. Adap-tive bound optimization for online convex optimiza-tion. InCOLT, 2010 (開始的那篇理論性paper)
后面附上我在組里分享時做的ppt,感興趣的可以看看:http://pan.baidu.com/s/1eQvfo6e