前段时间看了一篇论文:Adversarial Personalized Ranking for Recommendation,也就是对抗训练在推荐中的应用。整篇论文的主要思想是:用BPR模型 + 对抗训练 –> APR模型的方法提高原推荐模型的鲁棒性。为了加深自己的理解(主要是怕遗忘…),并帮助对此有兴趣的小伙伴,本文将写一些对这篇论文的重要段落的翻译和自己的理解。

论文链接:http://staff.ustc.edu.cn/~hexn/papers/sigir18-adversarial-ranking.pdf

一、引言

对抗性机器学习的最新进展表明,许多最先进的分类器实际上是非常脆弱的,容易受到对抗样本(adversarial examples)的影响,这些样本是在数据集输入样本中故意加入微小扰动所形成的。一个典型的例子可以在文献[15]的图1中找到,其中显示,通过向熊猫图像中添加小的对抗性扰动,人类肉眼人类很难察觉到扰动的影响,仍可以区分是熊猫,但一个训练有素的分类器会以很高的置信度将之分类为长臂猿。这就指出了仅仅根据静态标记数据训练模型的固有局限性。为了解决这一局限性并改进模型泛化,研究人员提出了对抗训练方法。

然而对抗性机器学习的发展主要集中在计算机视觉领域,但是在信息检索领域并没有出现相关的研究。虽然信息检索的核心任务是排序,但我们指出,许多学习排序(L2R)方法实质上是通过优化分类函数来训练的,如贝叶斯个性化排序(BPR)等。这意味着潜在的IR模型也很可能缺乏稳健性,并且容易受到某些类型的“对抗性样本”的影响。(底下设计实验证实了这一现象

然而,直接嫁接图像领域生成对抗性样本的方式是不可行的,因为推荐者模型的输入主要是离散特征(用户ID,项目ID和其他分类变量)。显然,将噪声应用于离散特征是没有意义的,这可能会改变它们原本的语义。

(小结:那么怎么解决这一问题呢?接下来,文中作者在物品推荐场景上探索了对抗训练的引入,并提出了APR(Adversarial Personalized Ranking)模型。)

二、准备工作

简要介绍了矩阵分解推荐模型(MF)和 贝叶斯个性化排名(BPR)。这个地方的新贡献是通过实验证明了BPR(又称MF-BPR)优化的MF模型是不稳定的,并且容易受到参数的对抗扰动影响。

2.1 MF

矩阵分解(MF)中将用户和项目分别表示成embedding向量。MF的核心思想就是通过用户和项目的内积当做用户对项目的喜好程度,即 ,其中 θ 表示参数。

(对于MF不了解的,可以看下我以前写过的一篇文章–>推荐系统之矩阵分解(MF)

2.2 BPR

BPR算法是基于矩阵分解的排序算法,它的算法训练集是一个个的三元组<u,i,j>,表示对用户u来说,商品i的优先级要高于商品j。BPR的目标函数如下,

(对于BPR不了解的,推荐看一下这位大佬的讲解–>贝叶斯个性化排序(BPR)算法小结

2.3 验证MF-BPR容易受对抗噪声干扰

在图像领域直接在图像数据里增加小的噪声并不会改变图像的视觉内容,而在推荐场景中特征都是离散型的id类特征,如果我们把样本 [公式] 改成 [公式] 则样本的语义特征可能变化很大。故在样本级别引入噪声并不合适,于是作者决定在模型参数上引入扰动。作者设计了一个实验来验证BPR算法对于对抗扰动缺乏鲁棒性。

首先使用通过随机梯度下降(SGD)训练一个MF-BPR直到收敛,然后我们比较添加随机扰动和对抗扰动对MF的嵌入的影响。对于对抗扰动,优化目标如下:

实验结果如图:

结论1:在Pinterest和Gowalla两个数据集上,MF-BPR模型对随机噪声较为鲁棒,对设计好的特定扰动则较为脆弱,即添加对抗性噪声会导致性能下降比添加随机噪声更显著。虽然特定扰动的量级很小,但是模型效果依旧下降明显,说明模型泛化效果偏差,存在过拟合的可能。

结论2:虽然对抗性扰动仅基于部分训练样本得出,但它对推荐性能具有显着的不利影响。

(小结:此部分就是证明对抗扰动对推荐是有很明显的影响)

三、提出方法

在这部分,我们首先介绍APR,一个个性化排名的对抗性学习框架。在此基础上,我们推导出一个基于SGD的APR通用求解器。最后,我们给出了AMF方法,一个使用MF作为推荐模型的APR实例。

3.1、APR(Adversarial Personalized Ranking)模型定义

我们的目标是设计一个新的目标函数,模型损失函数的设计要涵盖模型本身效果和对扰动鲁棒两个目标。即,既要能满足个性化排序,也要适应对抗扰动。设计了APR损失函数:

其中,损失函数第一项即常规的BPR损失,后半项则为加入扰动后的对抗损失[公式] 是模型参数上的扰动,而 [公式] 控制扰动的量级, [公式] 是当前的模型参数。

上式中,对抗项 [公式] 可使模型函数更稳定,从而一定程度上可以看做正则化项,文中称作adversarial regularizer,而 [公式] 控制其强度。由于整个过程是先对 [公式] 进行优化使得损失函数最小,然后对 [公式] 进行优化使得损失函数最大,所以APR的训练过程看做minimax game,形式化为:

3.2、APR模型求解

APR是通用的学习框架, [公式] 具体的定义可变化,只要可导,整个APR框架可通过梯度下降求解。主体思路是:分步骤计算,先算出最大干扰项,再算在最大干扰项干扰下的最小APRloss.

Step 1.构建对抗扰动

给定一个训练样本 [公式] ,构建对抗扰动 [公式] ,去掉不相关的项之后可以形式化为最大化:

文章采用附录中提到的fast gradient method,对目标函数近似成一个线性函数,对 [公式] 求导,然后往梯度方向移动,即有:

Step 2.学习模型参数

此时,只需要最小化下式:

参数更新:,其中η是学习效率

需要注意,模型的初始化参数是由BPR算法的训练结果,这是因为对抗扰动在模型参数开始过拟合的时候加才有意义。与原来常规的训练过程相比,本质相同,只是多了一个计算和添加扰动项的过程。

3.3、MF-BPR实例化的APR(AMF)

为了演示APR是如何工作的,我们现在提供了一个具体的推荐方法,一个基本但非常有效的推荐模型。解决方案简单而直接——我们首先用BPR训练MF,然后在我们的APR框架下进一步优化它。我们把这种方法称为对抗性矩阵分解(AMF)。

由于MF的参数是用户和项目的嵌入向量,我们对嵌入向量加入了对抗性扰动。给定a (u,i)对,扰动下的预测模型定义为:

根据论文中的公式(8),对干扰项项求偏导:

根据论文中的公式(11),把扰动项具体地代入到矩阵分解MF的表达公式中,对三个变量即扰动的三个方向计算偏导:

在计算得到最优扰动项后,再对模型的三个参数量进行偏导计算,已实现梯度更新

四、实验

具体实验就是用几个数据集来测试模型,根据评价指标来判断模型的效果怎么样,所以这里就不再细讲了。