Factorization Machines ---- FM模型論文閱讀筆記及相關推導

Introduction

在類似協同過濾的場景下,SVM的作用不如一些如PARAFA等直接進行矩陣因子分解的模型。

Why:
因爲在含有大量稀疏數據的場景下,SVM不能從複雜的核空間中學到可靠的超平面。

FM的優點:

  1. 能在高維稀疏數據的場景下進行參數估計(SVM並不擅長)。
  2. 能關聯變量間的相互作用。
  3. 線性的計算時間,線性的參數量
  4. 可以使用任意實數域的特徵向量進行預測(其他因子分解模型對輸入數據非常嚴格)

Prediction under sparsity

最普遍的CTR場景是通過訓練集
D={(x(1),y(1)),(x(2),y(2)),...} D=\{(x^{(1)} ,y^{(1)}),(x^{(2)} ,y^{(2)}),...\}

估計一個函數:
y:RnT y:R^n \to T

xRnx \in R^n特徵向量映射到目標域TT

Factorization Machine Model

定義

y^(x):=w0+i=1nwixi+w^i,jxixj \hat{y}(\boldsymbol x) := w_0 + \sum_{i=1}^{n}w_ix_i+\hat w_{i,j}x_ix_j
可轉化爲:
y^(x):=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj \hat{y}(\boldsymbol x) := w_0 + \sum_{i=1}^{n}w_ix_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n}<v_i,v_j>x_ix_j
其中:

(1)
w0R,wRn,VRn×k w_0 \in \mathbb{R} ,\boldsymbol w \in \mathbb{R}^n,\boldsymbol V \in \mathbb{R}^{n \times k}
(2)<·,·> 爲兩個K維向量的點乘(K爲超參數)
<vi,vj>:=f=1kvi,jvj,f <v_i,v_j> := \sum_{f=1}^{k}v_{i,j}·v_{j,f}
因爲實踐中通常沒有足夠數據去預估W^\hat W因此K值選擇數值較小的值。

(3)
w^i,j:=<vi,vj> \hat \boldsymbol w_{i,j} := <v_i,v_j>
代表第i個變量和第j個變量的相互關係(interaction),因爲任意正定矩陣存在一個矩陣V\boldsymbol VW=VVT\boldsymbol W = \boldsymbol V · \boldsymbol V^\mathrm{T},因此使用因子分解後的VV進行轉化。

推導

在數據非常稀疏的場景下,由於大部分特徵xi,xjx_{i},x_{j}的值爲0,因此很難直接求解出W^\hat W,因此通過引入輔助變量Vi=(vi1,vi2,...,vik)V_{i}=(v_{i1},v_{i2},...,v_{ik})
V=(v11v12...v1kv21v22...v2kvn1vn2...vnk)n×k=(v1v2vn) V = \begin{pmatrix} v_{11}&v_{12}&... &v_{1k} \\ v_{21}&v_{22}&... &v_{2k} \\ \vdots &\vdots& & \vdots\\ v_{n1}&v_{n2}&... &v_{nk} \end{pmatrix}_{n \times k}=\begin{pmatrix} \boldsymbol v_{1} \\ \boldsymbol v_{2} \\ \vdots \\ \boldsymbol v_{n} \end{pmatrix}
因此:
W^=VVT=(v1v2vn)(v1Tv2T...vnT) \hat W= \boldsymbol V · \boldsymbol V^\mathrm{T} = \begin{pmatrix} \boldsymbol v_{1} \\ \boldsymbol v_{2} \\ \vdots \\ \boldsymbol v_{n} \end{pmatrix}·\begin{pmatrix} \boldsymbol v_1^\mathrm{T} & \boldsymbol v_2^\mathrm{T} & ... & \boldsymbol v_n^\mathrm{T} \end{pmatrix}

求解i=1nj=i+1n<vi,vj>xixj\sum_{i=1}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j

由於
i=1nj=i+1n<vi,vj>xixj=(<v1,v1>x1x1<v1,v2>x1x2<v1,v3>x1x3...<v1,vk>x1xk<v2,v1>x2x1<v2,v2>x2x2<v2,v3>x2x3...<v2,vk>x2xk<vn,v1>xnx1<vn,v2>xnx2<vn,v3>xnx3...<vn,vk>xnxk)n×k\sum_{i=1}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j = \begin{pmatrix} <v_1,v_1>x_1x_1&{\color{Red} <v_1,v_2>x_1x_2}& {\color{Red} <v_1,v_3>x_1x_3}&... &{\color{Red} <v_1,v_k>x_1x_k} \\ <v_2,v_1>x_2x_1&<v_2,v_2>x_2x_2& {\color{Red} <v_2,v_3>x_2x_3}&... &{\color{Red} <v_2,v_k>x_2x_k} \\ \vdots &\vdots& \vdots& & \vdots\\ <v_n,v_1>x_nx_1&<v_n,v_2>x_nx_2& <v_n,v_3>x_nx_3&... &{ <v_n,v_k>x_nx_k} \\ \end{pmatrix}_{n \times k}

i=1nj=i+1n<vi,vj>xixj\sum_{i=1}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j爲上述實對稱矩陣去除主對角線的上三角(紅色部分)。

設該上三角爲A=i=1nj=i+1n<vi,vj>xixjA=\sum_{i=1}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j
2A+i=1n<vi,vj>xixi=i=1nj=1n<vi,vj>xixj 2A+\sum_{i=1}^n<v_i,v_j>x_ix_i = \sum_{i=1}^n\sum_{j=1}^n<v_i,v_j>x_ix_j
2A=i=1nj=1n<vi,vj>xixji=1n<vi,vj>xixi 2A= \sum_{i=1}^n\sum_{j=1}^n<v_i,v_j>x_ix_j - \sum_{i=1}^n<v_i,v_j>x_ix_i
A=12i=1nj=1n<vi,vj>xixj12i=1n<vi,vj>xixi A= \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n<v_i,v_j>x_ix_j -\frac{1}{2} \sum_{i=1}^n<v_i,v_j>x_ix_i

因此
i=1nj=i+1n<vi,vj>xixj=12i=1nj=1n<vi,vj>xixj12i=1n<vi,vj>xixi=12(i=1nj=1nf=1kvi,fvj,fxixji=1nf=1kvi,f,vj,fxixi=12f=1k((i=1nvi,fxi)(j=1nvj,fxj)i=1nvi,f2xi2)=12f=1k((i=1nvi,fxi)2i=1nvi,f2xi2) \sum_{i=1}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j\\ =\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n<v_i,v_j>x_ix_j -\frac{1}{2} \sum_{i=1}^n<v_i,v_j>x_ix_i\\ =\frac{1}{2} (\sum_{i=1}^n\sum_{j=1}^n\sum_{f=1}^kv_{i,f}v_{j,f}x_ix_j - \sum_{i=1}^n\sum_{f=1}^kv_{i,f},v_{j,f}x_ix_i\\ =\frac{1}{2}\sum_{f=1}^k((\sum_{i=1}^nv_{i,f}x_i)(\sum_{j=1}^nv_{j,f}x_j)-\sum_{i=1}^nv_{i,f}^2x_i^2)\\ =\frac{1}{2}\sum_{f=1}^k((\sum_{i=1}^nv_{i,f}x_i)^2-\sum_{i=1}^nv_{i,f}^2x_i^2)

使用SGD對模型進行訓練,梯度如下:
θy^(x)={1 if θ=w0xi if θ=wixij=1nvj,fxjvi,fxi2 if θ=vi,f \frac{\partial }{\partial \theta}\hat y(\boldsymbol x)=\begin{cases} 1& \text{ if } \theta= w_0\\ x_i& \text{ if } \theta= w_i\\ x_i\sum_{j=1}^nv_{j,f}x_j-v_{i,f}x_i^2& \text{ if } \theta= v_{i,f} \end{cases}

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