【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

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​=Δ,∥Δ∥≤ϵargmax​LBPR​(D∣Θ^+Δ)
作者先证明了相对于随机噪声,这种精心优化出的对抗噪声威力很大:

【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

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Δ,∥Δ∥≤ϵmax​LBPR​(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​Δ,∥Δ∥≤εmax​LBPR​(D∣Θ)+λLBPR​(D∣Θ+Δ)

【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

所以求解过程是 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)∣Θ)​
模型算法很清晰了:

【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

这里需要注意的是,输入到模型的参数应该是 已经训练了一定轮数、开始过拟合的的状态,这个时候开始对抗性训练才有意义或者说收敛更快。从实验结果也能看出来:

【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

Adversarial Collaborative Neural Network for Robust Recommendation (SIGIR’19 Short Research)

这篇文章的方法主要为分类器式推荐系统设计的,BPR-MF怎么用我不确定,文章没有详细说(太短了)

【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

这篇文章的模型用于神经网络推荐模型,改进点在于将一个扰动 Δ \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∥≤ϵargmax​loss(Θ+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​λi​lossCE​(y,y^​(Θ,αi​ Ni​))+γ(∥W1​∥2+∥W2​∥2+∥W3​∥2+∥b1​∥2+∥b2​∥2+∥P∥2)​(4)
训练方式和APR一样,先预训练到收敛,然后对抗性训练:

【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

Adversarial Training Towards Robust Multimedia Recommender System (TKDE’19)

【RS-Defence】Adversarial Training on RS(附代码实现APR+LightGCN)

何向南组的后续工作,将APR用在多模态推荐上,图像经过DNN提取特征之后,给图像特征加上一个扰动,然后在输入到推荐系统。

上一篇:luogu P3703 [SDOI2017]树点涂色


下一篇:人口普查系统完结(html+servlet)