Adversarial Recommendation Training
开源了一个小项目,将一些经典的RS模型整合到一套代码中,可以作为学习参考,
GitHub地址:https://github.com/ChadsLee/RS_Zoos
Adversarial Personalized Ranking for Recommendation (SIGIR’18)
MF-BPR容易受对抗噪声影响
首先定义什么是噪声。因为推荐系统输入的是离散数据对 ( u , i , j ) (u,i,j) (u,i,j),直接改数据是没有意义的,所以把噪声定义为修改embedding参数。
对抗噪声的优化目标如下:
Δ
a
d
v
=
argmax
Δ
,
∥
Δ
∥
≤
ϵ
L
B
P
R
(
D
∣
Θ
^
+
Δ
)
\Delta_{a d v}=\underset{\Delta,\|\Delta\| \leq \epsilon}{\operatorname{argmax}} L_{B P R}(D \mid \hat{\Theta}+\Delta)
Δadv=Δ,∥Δ∥≤ϵargmaxLBPR(D∣Θ^+Δ)
作者先证明了相对于随机噪声,这种精心优化出的对抗噪声威力很大:
Adversarial Personalized Ranking(APR)模型
现在模型的目标除了能推荐商品外,还要能够对扰动稳健,这自然而然的诞生了两个损失函数:
L
A
P
R
(
D
∣
Θ
)
=
L
B
P
R
(
D
∣
Θ
)
+
λ
L
B
P
R
(
D
∣
Θ
+
Δ
a
d
v
)
where
Δ
a
d
v
=
arg
max
Δ
,
∥
Δ
∥
≤
ϵ
L
B
P
R
(
D
∣
Θ
^
+
Δ
)
\begin{aligned} &L_{A P R}(\mathcal{D} \mid \Theta)=L_{B P R}(\mathcal{D} \mid \Theta)+\lambda L_{B P R}\left(\mathcal{D} \mid \Theta+\Delta_{a d v}\right) \\ &\text { where } \Delta_{a d v}=\arg \max _{\Delta,\|\Delta\| \leq \epsilon} L_{B P R}(\mathcal{D} \mid \hat{\Theta}+\Delta) \end{aligned}
LAPR(D∣Θ)=LBPR(D∣Θ)+λLBPR(D∣Θ+Δadv) where Δadv=argΔ,∥Δ∥≤ϵmaxLBPR(D∣Θ^+Δ)
第一项是保证模型性能,第二项是保证模型稳健。其中
Θ
\Theta
Θ是模型参数,
Δ
\Delta
Δ是扰动,
ϵ
\epsilon
ϵ是扰动大小。
Θ
\Theta
Θ的优化目标是损失函数尽可能小,
Δ
\Delta
Δ的优化目标是损失函数尽可能大,所以求解形式是:
Θ
∗
,
Δ
∗
=
arg
min
Θ
max
Δ
,
∥
Δ
∥
≤
ε
L
B
P
R
(
D
∣
Θ
)
+
λ
L
B
P
R
(
D
∣
Θ
+
Δ
)
\Theta^{*}, \Delta^{*}=\arg \min _{\Theta} \max _{\Delta,\|\Delta\| \leq \varepsilon} L_{B P R}(D \mid \Theta)+\lambda L_{B P R}(D \mid \Theta+\Delta)
Θ∗,Δ∗=argΘminΔ,∥Δ∥≤εmaxLBPR(D∣Θ)+λLBPR(D∣Θ+Δ)
所以求解过程是 2-step 的:
step 1 求 Δ \Delta Δ
给定一个训练样本 ( u , i , j ) (u, i, j) (u,i,j) ,构建对抗扰动 Δ a d v \Delta_{a d v} Δadv,最大化目标:
l
a
d
v
(
(
u
,
i
,
j
)
∣
Δ
)
=
−
λ
ln
σ
(
y
^
u
i
(
Θ
^
+
Δ
)
−
y
^
u
j
(
Θ
^
+
Δ
)
)
\begin{aligned} &l_{a d v}((u, i, j) \mid \Delta)=-\lambda \ln \sigma\left(\hat{y}_{u i}(\hat{\Theta}+\Delta)-\hat{y}_{u j}(\hat{\Theta}+\Delta)\right) \end{aligned}
ladv((u,i,j)∣Δ)=−λlnσ(y^ui(Θ^+Δ)−y^uj(Θ^+Δ))
可以得出:
Δ
a
d
v
=
ϵ
Γ
∥
Γ
∥
where
Γ
=
∂
l
a
d
v
(
(
u
,
i
,
j
)
∣
Δ
)
∂
Δ
∂
l
a
d
v
(
(
u
,
i
,
j
)
∣
Δ
)
∂
Δ
=
−
λ
(
1
−
σ
(
y
^
u
i
j
(
Θ
^
+
Δ
)
)
)
∂
y
^
u
i
j
(
Θ
^
+
Δ
)
∂
Δ
y
^
u
i
j
(
x
)
=
y
^
u
i
(
x
)
−
y
^
u
j
(
x
)
\Delta_{a d v}=\epsilon \frac{\Gamma}{\|\Gamma\|} \quad \text { where } \quad \Gamma=\frac{\partial l_{a d v}((u, i, j) \mid \Delta)}{\partial \Delta} \\ \frac{\partial l_{a d v}((u, i, j) \mid \Delta)}{\partial \Delta}=-\lambda\left(1-\sigma\left(\hat{y}_{u i j}(\hat{\Theta}+\Delta)\right)\right) \frac{\partial \hat{y}_{u i j}(\hat{\Theta}+\Delta)}{\partial \Delta} \\ \hat{y}_{u i j}(x)=\hat{y}_{u i}(x)-\hat{y}_{u j}(x)
Δadv=ϵ∥Γ∥Γ where Γ=∂Δ∂ladv((u,i,j)∣Δ)∂Δ∂ladv((u,i,j)∣Δ)=−λ(1−σ(y^uij(Θ^+Δ)))∂Δ∂y^uij(Θ^+Δ)y^uij(x)=y^ui(x)−y^uj(x)
step 2 更新 Θ \Theta Θ
l A P R ( ( u , i , j ) ∣ Θ ) = − ln σ ( y ^ u i ( Θ ) − y ^ u j ( Θ ) ) + λ Θ ∥ Θ ∥ 2 − λ ln σ ( y ^ u i ( Θ + Δ a d v ) − y ^ u j ( Θ + Δ a d v ) ) \begin{aligned} l_{A P R}((u, i, j) \mid \Theta)=&-\ln \sigma\left(\hat{y}_{u i}(\Theta)-\hat{y}_{u j}(\Theta)\right)+\lambda_{\Theta}\|\Theta\|^{2} \\ &-\lambda \ln \sigma\left(\hat{y}_{u i}\left(\Theta+\Delta_{a d v}\right)-\hat{y}_{u j}\left(\Theta+\Delta_{a d v}\right)\right) \end{aligned} lAPR((u,i,j)∣Θ)=−lnσ(y^ui(Θ)−y^uj(Θ))+λΘ∥Θ∥2−λlnσ(y^ui(Θ+Δadv)−y^uj(Θ+Δadv))
这个时候
Δ
\Delta
Δ就相当于一个定值,没有什么影响,像普通训练一样求梯度、更新参数:
Θ
=
Θ
−
η
∂
l
A
P
R
(
(
u
,
i
,
j
)
∣
Θ
)
∂
Θ
\Theta=\Theta-\eta \frac{\partial l_{A P R}((u, i, j) \mid \Theta)}{\partial \Theta}
Θ=Θ−η∂Θ∂lAPR((u,i,j)∣Θ)
模型算法很清晰了:
这里需要注意的是,输入到模型的参数应该是 已经训练了一定轮数、开始过拟合的的状态,这个时候开始对抗性训练才有意义或者说收敛更快。从实验结果也能看出来:
Adversarial Collaborative Neural Network for Robust Recommendation (SIGIR’19 Short Research)
这篇文章的方法主要为分类器式推荐系统设计的,BPR-MF怎么用我不确定,文章没有详细说(太短了)
这篇文章的模型用于神经网络推荐模型,改进点在于将一个扰动
Δ
\Delta
Δ设计成了五个扰动
N
i
N_i
Ni,还分别配了一个权重
α
i
\alpha_i
αi。其中扰动
N
4
N_4
N4和扰动
N
5
N_5
N5是“拼接”在特征向量上的,然后经过一个全连接层,整合到原来的形状。扰动
N
N
N的计算方式一样:
n
a
d
v
=
arg
max
∥
N
∥
≤
ϵ
loss
(
Θ
+
N
)
(1)
n_{a d v}=\underset{\|N\| \leq \epsilon}{\arg \max } \operatorname{loss}(\Theta+N) \tag{1}
nadv=∥N∥≤ϵargmaxloss(Θ+N)(1)
n a d v = ϵ ∂ loss ( Θ + N ) / ∂ N ∥ ∂ loss ( Θ + N ) / ∂ N ∥ (2) n_{a d v}=\epsilon \frac{\partial \operatorname{loss}(\Theta+N) / \partial N}{\|\partial \operatorname{loss}(\Theta+N) / \partial N\|} \tag{2} nadv=ϵ∥∂loss(Θ+N)/∂N∥∂loss(Θ+N)/∂N(2)
损失函数:
loss
=
loss
C
E
(
y
,
y
^
(
Θ
)
)
+
∑
i
=
1
S
λ
i
loss
C
E
(
y
,
y
^
(
Θ
,
α
i
N
i
)
)
+
γ
(
∥
W
1
∥
2
+
∥
W
2
∥
2
+
∥
W
3
∥
2
+
∥
b
1
∥
2
+
∥
b
2
∥
2
+
∥
P
∥
2
)
(4)
\begin{aligned} \text { loss } &=\operatorname{loss}_{C E}(\mathbf{y}, \hat{\mathbf{y}}(\Theta))+\sum_{i=1}^{S} \lambda_{i} \operatorname{loss}_{C E}\left(\mathbf{y}, \hat{\mathbf{y}}\left(\Theta, \alpha_{i} \mathrm{~N}_{\mathrm{i}}\right)\right) \\ &+\gamma\left(\left\|\mathrm{W}_{1}\right\|^{2}+\left\|\mathbf{W}_{2}\right\|^{2}+\left\|\mathbf{W}_{3}\right\|^{2}+\left\|\mathrm{b}_{1}\right\|^{2}+\left\|\mathbf{b}_{2}\right\|^{2}+\|\mathrm{P}\|^{2}\right) \end{aligned} \tag{4}
loss =lossCE(y,y^(Θ))+i=1∑SλilossCE(y,y^(Θ,αi Ni))+γ(∥W1∥2+∥W2∥2+∥W3∥2+∥b1∥2+∥b2∥2+∥P∥2)(4)
训练方式和APR一样,先预训练到收敛,然后对抗性训练:
Adversarial Training Towards Robust Multimedia Recommender System (TKDE’19)
何向南组的后续工作,将APR用在多模态推荐上,图像经过DNN提取特征之后,给图像特征加上一个扰动,然后在输入到推荐系统。