How to Retrain Recommendation System (SIGIR’20)
模型
当今工业界更新推荐系统的痛点:
(
{
D
m
:
m
≤
t
}
,
W
t
−
1
)
⟶
get
W
t
⟵
test
D
t
+
1
.
\left(\left\{D_{m}: m \leq t\right\}, W_{t-1}\right) \stackrel{\text { get }}{\longrightarrow} W_{t} \stackrel{\text { test }}{\longleftarrow} D_{t+1} .
({Dm:m≤t},Wt−1)⟶ get Wt⟵ test Dt+1.
本文希望解决的问题:
(
D
t
,
W
t
−
1
)
⟶
get
W
t
⟵
test
D
t
+
1
,
\left(D_{t}, W_{t-1}\right) \stackrel{\text { get }}{\longrightarrow} W_{t} \stackrel{\text { test }}{\longleftarrow} D_{t+1},
(Dt,Wt−1)⟶ get Wt⟵ test Dt+1,
因此提出一个迁移组件:
![image-20210720142155667](https://tva1.sinaimg.cn/large/008i3skNly1gsne7ycmbfj30e909xaam.jpg)
其中 W t − 1 W_{t-1} Wt−1代表之前的推荐系统的参数, W t ^ \hat{W_t} Wt^代表从新数据 D t D_t Dt中学出的推荐系统参数。迁移组件用来结合 W t − 1 W_{t-1} Wt−1和 W t ^ \hat{W_t} Wt^的知识,从而得到新推荐系统 W t W_t Wt。
![图片](https://tva1.sinaimg.cn/large/008i3skNly1gsnnsfybrtj30kq0aa3zj.jpg)
模型经过Transfer模块后,输出还是模型参数。
训练方法
要分为两步训练,在时间 t t t时,对应的 D t D_t Dt
Step 1 在 D t D_t Dt上学 W t ^ \hat{W_t} Wt^, θ \theta θ固定
虽然是学
W
t
^
\hat{W_t}
Wt^,但是也要带着CNN的
θ
\theta
θ,为了让参数在同一个空间内:
L
r
(
W
^
t
∣
D
t
‾
)
=
L
0
(
f
Θ
(
W
t
−
1
,
W
^
t
)
∣
D
t
)
+
λ
1
∣
∣
W
^
t
∥
2
L_{r}\left(\hat{W}_{t} \mid \overline{D_{t}}\right)=L_{0}\left(f_{\Theta}\left(W_{t-1}, \hat{W}_{t}\right) \mid D_{t}\right)+\lambda_{1}|| \hat{W}_{t} \|^{2}
Lr(W^t∣Dt)=L0(fΘ(Wt−1,W^t)∣Dt)+λ1∣∣W^t∥2
其中
L
0
L_0
L0是推荐系统的loss(log loss或者BPR loss)。这时把
θ
\theta
θ、
W
t
−
1
W_{t-1}
Wt−1当作常数。
Step 2 在 D t + 1 D_{t+1} Dt+1上学 θ \theta θ, W t ^ \hat{W_t} Wt^固定
L s ( Θ ∣ D t + 1 ) = L 0 ( f Θ ( W t − 1 , W ^ t ) ∣ D t + 1 ) + λ 2 ∣ ∣ Θ ∥ 2 L_{s}\left(\Theta \mid D_{t+1}\right)=L_{0}\left(f_{\Theta}\left(W_{t-1}, \hat{W}_{t}\right) \mid D_{t+1}\right)+\lambda_{2}|| \Theta \|^{2} Ls(Θ∣Dt+1)=L0(fΘ(Wt−1,W^t)∣Dt+1)+λ2∣∣Θ∥2
![image-20210720200938029](https://tva1.sinaimg.cn/large/008i3skNly1gsno9ot1d6j60g20d5wfn02.jpg)
测试和更新
![image-20210720201203183](https://tva1.sinaimg.cn/large/008i3skNly1gsnoc7p2j0j30g10aq75k.jpg)
在测试中,来一批新的数据 D t + 1 D_{t+1} Dt+1时,用推荐模型 W t W_t Wt测试。
紧接着先用 D t + 1 D_{t+1} Dt+1更新参数 θ \theta θ: L s ( Θ ∣ D t + 1 ) L_{s}\left(\Theta \mid D_{t+1}\right) Ls(Θ∣Dt+1)
然后用 D t D_t Dt更新 W t ^ \hat{W_t} Wt^: L r ( W ^ t ∣ D t ) L_{r}\left(\hat{W}_{t} \mid D_{t}\right) Lr(W^t∣Dt),交替这两步。
最后再运行一次第四行,更新 θ \theta θ,计算得到新的 W t ← f Θ ( W t − 1 , W ^ t ) W_{t} \leftarrow f_{\Theta}\left(W_{t-1}, \hat{W}_{t}\right) Wt←fΘ(Wt−1,W^t)。
计算 W ^ t + 1 \hat{W}_{t+1} W^t+1: L r ( W ^ t + 1 ∣ D t + 1 ) L_{r}\left(\hat{W}_{t+1} \mid D_{t+1}\right) Lr(W^t+1∣Dt+1)