1. 程式人生 > >推薦系統及廣告系統相關演算法綜述

推薦系統及廣告系統相關演算法綜述

文章目錄

目前,推薦系統領域主流的演算法主要包括:

  1. ftrl, 2013年, Google公司, 《Ad click prediction: a view from the trenches》

線上學習 ftrl

傳統的批量演算法的每次迭代是對全體訓練資料集進行計算(例如計算全域性梯度),優點是精度和收斂還可以,缺點是無法有效處理大資料集(此時全域性梯度計算代價太大),且沒法應用於資料流做線上學習。

而線上學習演算法的特點是:每來一個訓練樣本,就用該樣本產生的loss和梯度對模型迭代一次,一個一個數據地進行訓練,因此可以處理大資料量訓練和線上訓練。準確地說,Online Learning並不是一種模型,而是一種模型的訓練方法,Online Learning能夠根據線上反饋資料,實時快速地進行模型調整,使得模型及時反映線上的變化,提高線上預測的準確率。

Online Learning的流程包括:將模型的預測結果展現給使用者,然後收集使用者的反饋資料,再用來訓練模型,形成閉環的系統。如下圖所示:

CTR預測演算法

這篇論文提出的基於FTRL的線上CTR預測演算法,就是一種Online Learning演算法。

即,針對每一個訓練樣本,首先通過一種方式進行預測,然後再利用一種損失函式進行誤差評估,最後再通過所評估的誤差值對引數進行更新迭代。直到所有樣本全部遍歷完,則結束。

那麼,如何選擇模型預測方法、評估指標以及模型更新公式就是該演算法的重點所在。下面將介紹論文中這三部分內容:

1.預測方法:在每一輪 t t 中,針對特徵樣本 x

t R d {x}_{t}\in {R}^{d} ,以及迭代後(第一此則是給定初值)的模型引數 w t w_t ,我們可以預測該樣本的標記值: p t = σ ( w t , x t ) {p}_{t}=\sigma({w}_{t},{x}_{t}) ,其中 σ ( a ) = 1 1 + e x p ( a ) \sigma(a)=\frac{1}{1+exp(-a)} 是一個sigmoid函式。

2.損失函式:對一個特徵樣本 x t x_t ,對應的標記為 y t 0 , 1 y_t \in 0, 1 , 則通過logistic loss 來作為損失函式,即: l t ( w t ) = y t l o g p t ( 1 y t ) l o g ( 1 p t ) {\mathit{l}}_{t}({w}_{t})= -{y}_{t}log{p}_{t}-(1-{y}_{t})log(1-{p}_{t})

3.迭代公式: 目的是使得損失函式儘可能小,即可以採用極大似然估計來求解引數。首先求梯度:

g t = d l t ( w ) d w = ( σ ( w x t ) y t ) x t = ( p t y t ) x t {g}_{t}=\frac{d\mathit{l}_{t}(w)}{dw}=(\sigma(w*{x}_{t})-{y}_{t}){x}_{t}=({p}_{t}-{y}_{t}){x}_{t}

暫時看不懂了
基於FTRL的線上CTR預測演算法
https://blog.csdn.net/yz930618/article/details/75270869

ftrl References

@默一鳴 標註了一下各篇paper的主要內容,感興趣的可以有選擇性地看一下,如果只關注工程實現,看標紅的那篇就ok了:
[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)

embedding

https://www.cntk.ai/pythondocs/layerref.html#embedding

embedding層,是一種用連續值向量來表示離散值或者word的方法,與one-hot相比,推薦系統中embedding層減少了特徵的維度。在cntk中,embedding vector用行向量的方式來表示,將一個word對映到它的embedding只需要向量相乘(選取索引對應的embedding行)。

梯度: embedding矩陣的梯度矩陣也是隻在非0值的地方存在梯度,每次更新只要更新存在值的embedding層就行了(和推薦系統好像有點不同)

word2vec中的bp
http://www.claudiobellei.com/2018/01/06/backprop-word2vec/