FM做feature embedding表示以及CTR loss function

FM算法是CTR預估中的經典算法,其優勢是能夠自動學習出交叉特徵.因爲這種特性,FM在CTR預估上的效果會遠超LR.


說明:通過FM的公式可以看出,FM自動學習交叉是通過學習到每個特徵xi的向量表示vi得到的.比如說,對於field A,其特徵有100w種取值,如果使用one-hot編碼。那麼,每個特徵需要使用100w維特徵表示.使用了FM算法學習之後,比如說使用vi的特徵維度是10維.那麼,每個特徵就可以使用10維的向量表示.這個跟word embedding的思想是一致的.所以說,FM是embedding的一種方式.

我們需要將非常大的特徵向量嵌入到低維向量空間中來減小模型複雜度,而FM(Factorisation machine)無疑是被業內公認爲最有效的embedding model.第一部分仍然爲Logistic Regression,第二部分是通過兩兩向量之間的點積來判斷特徵向量之間和目標變量之間的關係。比如上述的迪斯尼廣告,occupation=Student和City=Shanghai這兩個向量之間的角度應該小於90,它們之間的點積應該大於0,說明和迪斯尼廣告的點擊率是正相關的。這種算法在推薦系統領域應用比較廣泛。

那我們就基於這個模型來考慮神經網絡模型,其實這個模型本質上就是一個三層網絡:

 它在第二層對向量做了乘積處理(比如上圖藍色節點直接爲兩個向量乘積,其連接邊上沒有參數需要學習),每個field都

只會被映射到一個 low-dimensional vector,field和field之間沒有相互影響,那麼第一層就被大量降維,之後就可以在此基礎上應

用神經網絡模型。

使用了FM提取出每個特徵的embedding表示。

 Factorization Machine: Objective and Loss

FM margin的二階項

\begin{split}~~~~~~~~~~~~~~~~~~~~ \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}\langle v_i, v_j \rangle x_ix_j &= \frac12\left( \sum_{i=1}^{n}\sum_{j=1}^{n}\langle v_i, v_j \rangle x_ix_j - \sum_{i=1}^{n}\langle v_i, v_j \rangle x_ix_j \right) &\#三角陣= 0.5* (矩陣 - 對角陣)\\ &= \frac12\left( \sum_{i=1}^{n} \sum_{j=1}^{n} \sum_{l=1}^k v_{il} v_{jl} x_ix_j - \sum_{i=1}^n \sum_{l=1}^k v_{il}^2 x_i^2 \right) &\#展開特徵向量\\ &= \frac12 \sum_{l=1}^k\left( \sum_{i=1}^{n} v_{il} x_i \sum_{j=1}^{n} v_{jl} x_j - \sum_{i=1}^n v_{il}^2 x_i^2 \right) &\#提取公共部分\\ &= \frac12 \sum_{l=1}^k \left[\left( \sum_{i=1}^{n} (v_{il} x_i) \right)^2 - \sum_{i=1}^n (v_{il} x_i)^2 \right] &\#轉換成“和的方-方的和”形式\\ \end{split}

因此

\begin{split}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \phi(x) &= w_0 + \sum_{i=1}^nw_ix_i + \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}\langle v_i, v_j \rangle x_ix_j \\ &= w_0 + \sum_{i=1}^nw_ix_i + \frac12 \sum_{l=1}^k \left[\left( \sum_{i=1}^{n} (v_{il} x_i) \right)^2 - \sum_{i=1}^n (v_{il} x_i)^2 \right] \end{split}

通過這種轉化,可以將計算複雜度從 O(kn^2) 降低到 O(kn) 。

由於數據非常稀疏,某個feature的絕大多數項目爲0,用 m(x) 表示特徵 x 的非0項,用 \bar{m} 表示 m(x) 的均值,則複雜度可以表示爲 O(k\bar{m}) 。

FM 的Objective和Loss基本一致,只是替換了margin \phi(x) 的寫法:

\begin{split}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Obj &= \min_w \sum_{i=1}^m - {y^{(i)}} \log f_w(x^{(i)}) - (1-y^{(i)}) \log \left(1-f_w(x^{(i)})\right) \end{split}

損失函數Loss即

\begin{split}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Loss\left( f_w(x^{(i)}), y^{(i)}\right) &= - {y^{(i)}} \log f_w(x^{(i)}) - (1-y^{(i)}) \log \left(1-f_w(x^{(i)})\right) \\ &= \left\{ \begin{aligned} - \log f_w(x^{(i)}) ~~~ if ~ y =1\\ - \log (1-f_w(x^{(i)})) ~~~ if ~ y =0 \end{aligned} \right. \end{split}

其中

\begin{split}~~~~~~~~~~~~~~~~~~~~ P[click ~|~ impression] = f_w(x) &= \frac1{1+e^{-\phi(x)}} \\ &= \frac1{1+e^{-w_0 + \sum_{i=1}^nw_ix_i + \frac12 \sum_{l=1}^k \left[\left( \sum_{i=1}^{n} (v_{il} x_i) \right)^2 - \sum_{i=1}^n (v_{il} x_i)^2 \right] }} \end{split}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章