簡介
在推薦系統中最常用的模型是分解模型(factorization model),爲了防止模型的過擬合,一般需要在損失函數中添加正則項。分解模型在測試集或者實際應用中的表現很大程度上依賴正則項參數(Regularization values的),而這個參數一般被視爲超參數,即在每次實驗開始前已經確定的參數。在實驗過程中一般是準備多個候選值,分別進行實驗,然後選取效果最好的。這樣是比較耗時的。
這篇論文提出了一個新的觀點,將正則化參數視爲一個可以通過學習得到的參數,在學習的過程中自動的調整這個參數,從而避免耗時的調參工作。提出的算法具有以下幾個特點:
- 列表內容將正則化參數集成到模型參數的學習算法中
- 算法的時間複雜度和梯度下降一樣
- 不在需要手動的調試正則化參數,並且正則化參數的可選範圍從有限變成的無限。
分解機
S :數據集
λ :正則化係數
Θ :假設空間
θ :模型參數
y :真實值
y^ :預測值
l :損失函數
模型公式
由於SVD++、MF等模型可以視爲分解機(Factorization Machine)的特例,所以本文采用的模型爲分解機。
y^(x)=w0+∑l=1pwlxl+∑l1=1p∑l2>l1p<vl1,vl2>xl1xl2
公式(1)的時間複雜度爲
O(kn2)
通過對(1)的變形,可以將其時間複雜度降低到O(kn)
y^(x)=w0+∑l=1pwlxl+12∑f=1k((∑l=1pvl,fxl)2−∑l=1pv2l,fx2l)
目標函數
一般用損失函數來量化預測評分y^ 和真實值y 之間的誤差,常用的損失函數有一下兩種
lLS(y1,y2):=(y1−y2)2
lC(y1,y2):=−lnσ(y1y2)
則優化目標函數爲
OPTREG(S,λ):=argminΘ(∑(x,y)∈Sl(y^(x|Θ),y)+∑θ∈Θλθθ2)
其中
λθ∈R+ 爲對應模型參數的正則係數,本文采用的是
L2 正則。實際上,分解機模型的表現很大程度上依賴
λ 的選擇。如果
λ 過大,則模型不能很好的擬合訓練集,也就是訓練效果不明顯;如果
λ 過小,則模型在訓練集上可能會過擬合,雖然在訓練集上的表現很好,但是缺乏泛化能力,即在驗證集或者實際應用中的表現很差。
優化算法
對於上述目標函數,通常採用梯度下降(Gradient Descent)進行優化
θt+1=θt−α(∂∂θtl(y^(x|Θ),y)+2λθt)
優化正則化係數
這是本文提出的重要概念,即在訓練過程中自適應的優化正則化係數。
問題描述
爲了學習正則化參數λθ ,首先將數據集分爲互斥的兩部分:SV 和ST 。在ST 上,對於給定的λθ ,通過公式(5)來優化模型參數。在SV 上,評估模型的效果。我們需要求出λ∗ 使目標函數在SV 上的誤差最小。
λ∗:=argminλ∈Rc+∑(x,y)∈SVl(y^(x|OPTREG(ST,λ)),y)
這是一個嵌套優化問題,最外層是通過在SV 上最小化目標函數來求出最優的λ∗ 。由公式可以看出,目標函數的最小化與λ 無關,而是取決於y^ 的計算,由公式(1)可以知道y^ 的計算僅僅取決於模型參數,也就是當模型參數固定時,有以下的求導關係。
λ∗:=argminλ∈Rc+∑(x,y)∈SVl(y^(x|Θ),y)
∂∂λL(SV,Θt)=∂∂λ∑(x,y)∈SVl(y^(x|Θt),y)=0
也就是說無法通過(8)求出λ ,原因在於,公式(8)中並未顯示的出現λ 。
但是在(6)中,Θ 的更新公式中,顯示的出現了λ 。於是可以換個思路,考慮優化問題:求出使Θ
的下一次更新後在驗證集上損失函數最小的λ
λ∗:=argminλ∈Rc+∑(x,y)∈SVl(y^(x|Θt+1),y)
梯度計算
λt+1=λt+α∂∂λl(y^(x|Θt+1),y)
對於
lLS :
∂∂λ(y^(x|Θt+1)−y)2=2(y^(x|Θt+1)−y)∂∂λ(y^(x|Θt+1)
對於
lC
∂∂λ−lnσ(y^(x|Θt+1)y)=σ(y^(x|Θt+1)y−1)y∂∂λ(y^(x|Θt+1)
正則化係數一共有k+2 個,
λ0(w0) ,
λw(w1,w2,...,wp) ,
λf(v∗f),f=1,2,...k
∂∂λ0y^(x|Θt+1)=−2αwt0
∂∂λwy^(x|Θt+1)=−2α∑i=1pwtixi
∂∂λfy^(x|Θt+1)=−2α[∑i=1xivt+1i,f∑j=1xjvtj,f−∑j=1x2jvt+1j,fvtj,f]
算法描述
結論
由於正則化係數個數的增加,且其取值空間從有限變爲無限,引入了自適應調整正則項係數後的模型效果更好。並且由於省去了調參的過程,更省時間。