FTRL演算法在使用中需不需要通過Batch Model初始化?

德川在《關於點擊率模型,你知道這三點就夠了》提到:


三,應用Online的更新方式去更新模型,還是batch的方式。Online的方式對應的最優化演算法主要是minibatch
sgd,Offline的方式可以應用計算廣告書里說的LBFGS,Trust region這些。按我個人經驗,minibatch
sgd的更新方式對頭部的數據學習的會更快更充分,因此更善於fine tuning the head
part。而Offline的方式全局優化歷史數據,對於長尾稀疏特徵,就比sgd的方式要精細些了。如果業務場景時效性較強,更關注頭部,用一個
Online keep更新的模型就足夠了,比如新聞推薦的場景。但是如果業務場景有很多長尾流量,需要精細的預估,一個batch的Offline
model是必要的,為了業務的時效性考慮,可以用batch的模型結果去初始化Online的模型更新,定期的batch結合Online的delta
更新,比如搜索廣告的場景。

我現在是只用FTRL進行訓練,訓練上十天左右的數據之後在線上提供服務,我發現模型的效果在開始幾天都是不錯的,過一段時間後效果就下降了。

想問下大家在用FTRL的時候有沒有用Batch Model初始化。如果初始化,怎麼初始化的,因為FTRL不只有weight還有z, n這些值。


事先聲明:離題而答。

Online其實有兩種,一種廣義,也就是題目中說的「Online的方式更新」,意思就是新的數據來一次更新一次,用過的數據不再去用。從這個意義上講,所有的stochastic optimization演算法都可以直接遷移過來用。

狹義得說,Online其實是指一類能夠保證	ext{Regret}小的演算法,演算法包括RDA、AOGD、FOBOS,以及FTRL,簡要說明了一下,optimization演算法是為了保證N步迭代後	ext{Loss}=sum_{t=1}^N f_t(w_N) - sum_{t=1}^N f_t(w_*)儘可能小,而Online演算法是為了保證	ext{Regret}=sum_{t=1}^N f_t(w_t) - sum_{t=1}^N f_t(w_*)儘可能小。也就是說,optimization是為了在最後的解上損失上儘可能小,但是不在乎中間迭代過程中的解是否產生損失,而online則認為每一步的解都會產生損失,希望這個整體的損失小,online演算法為了	ext{Regret}小這個目的,往往設計成每次的更新與前幾步相似,而且步長還遞減(這在新樣本無窮無盡的情況下不是什麼好性質)。

個人愚見,我認為FTRL的理論意義(從同一個觀點理解了幾種不同的Online演算法,包括RDA、AOGD、FOBOS)是比較大的,理論上很有意思,實際中也已經有很多大廠在用,實際效果非常值得肯定。面對具體業務問題的時候,沒必要非得執著於只用時髦的演算法,「第三」 中所說online結合batch是比較符合業務實際的思路。

回到點擊率預估的問題上來,「Batch Model」初始化 或 用其他offline的優化演算法初始化,我認為是必須的,否則一開始的解會很爛。以及,無論你用batch還是online演算法,如果你發現「模型的效果在開始幾天都是不錯的,過一段時間後效果就下降了」,那你就應該調整參數了,而且不能指望演算法上線之後,可以永久運行下去,還是需要每隔一段時間就用重新訓練。


德川是我。。很少上知乎。

我文章里提到的用batch model去warm up是一個常見的做法,但是也不是說一定就需要,比如今日頭條據我了解就是一個一直online更新的模型:)。


batch+online 是比較好的選擇。

一直online的話要小心learning rate過度衰減的問題,畢竟業務數據的分布不是一成不變的,learning rate要有個保底的值。

還有某些特徵的出現是不連續的,一直online會帶來歷史知識過時失效的問題。比如新聞建模中,關鍵詞「本拉登」作為一個特徵,某一段時間很熱,做了大量的update;最近這兩天又火起來了,但是作為另一個話題出現,歷史上學習的權重就可能對預測結果造成很大的偏差。


Eta的解釋比較在理,FTRL確實是朝著 "regret optimization"這個方向的,包括原始的FOBOS演算法,裡面的lazy update性質的理論解釋,也是基於online 模式而不是batch 模式。

個人做過一些廣告數據的對比,用vw來對比bfgs、sgd、ftrl-proximal。其中1 pass ftrl得到的avg training loss 低於 10 pass sgd的avg traning loss。在ftrl上增加pass所得到的提升很有限,基本上1-2輪的訓練就能達到不錯的效果了。


推薦閱讀:

關於L2範數如何避免過擬合?
中國基層編作曲從業人員是否可能被人工智慧取代?
棋盤大小以及所用時長,對 AlphaGo 的獲勝概率有影響嗎?
對數據挖掘,機器學習感興趣。沒有演算法基礎影響大不大?

TAG:數據挖掘 | 互聯網廣告 | 機器學習 | 計算廣告學 |