论文总结《Adversarial Personalized Ranking for Recommendation(APR)》

news/2024/11/8 9:48:39/

原文链接

APR、

本篇论文是对抗训练在RS领域的先锋作,在这篇文章前对抗训练应用在图像领域,以提高模型鲁棒性。本篇论文填补了对抗训练在RS领域的空缺,首次基于BPR进行对抗训练,以提高RS排序模型的鲁棒性。

Motivation

文章在Session 2部分对MF的隐空间的扰动是否会造成推荐性能的下降,分析了BPR-MF是脆弱的。

首先在BPR-MF隐空间(不在输入进行扰动是因为,userID/itemID是离散的,扰动会变更其语义),即参数空间添加如下的扰动:
在这里插入图片描述
因为BPR的目标函数的非线性性质,求解最大值很棘手,于是文章借用FGSM的思想,近似目标函数为线性函数,近似扰动的最大值为:
在这里插入图片描述
这里 Γ / ∣ ∣ Γ ∣ ∣ \Gamma/||\Gamma|| Γ/∣∣Γ∣∣表示的扰动的方向,而 ϵ \epsilon ϵ则控制扰动的大小,指的是直接沿着梯度的方向更新(在线性假设下)。

在这里插入图片描述

上图实验表明有针对设计的扰动确实比随机扰动会使得性能下降,说明了BPR-MF对训练数据过拟合,不具有鲁棒性。为了解决这个问题,作者提出了APR,即Adversarial Personalized Ranking模型。

Contributions

  1. 分析了BPR模型对扰动敏感,不具有鲁棒性,训练较好的BPR模型过拟合
  2. 提出了APR框架,即在RS领域的对抗训练

APR

APR的目标函数如下:在这里插入图片描述

为了训练鲁棒的排序模型,目标函数首先最大化扰动,使得扰动对模型的破坏最大,然后在普通的BPR loss上加上对样本进行扰动过后的BPR loss,其中 λ \lambda λ 超参数衡量两部分的比例。从而最小化该目标函数使得在具有一般样本及扰动样本的情况下训练模型,其中扰动项可以视为一种正则化项,防止模型的过拟合。这本质上是一种minimax game:
在这里插入图片描述

下面逐项分析

Δ \Delta Δ 最大值

BPR带上扰动的损失函数为:
在这里插入图片描述因为许多模型,例如bilinear MF以及MLP都是非线性的,因此直接求出 Δ \Delta Δ最大值较为棘手,因此根据Motivation部分的分析, Δ \Delta Δ最大值近似为:

在这里插入图片描述

其中:
在这里插入图片描述

模型参数 Θ \Theta Θ最小

因此,APR(基于BPR)的目标函数为:

在这里插入图片描述
利用SGD进行更新即为:

在这里插入图片描述

其中:
在这里插入图片描述
注意,在训练过程中BPR的初始化因为训练好的BPR,因为只有在BPR过拟合的情况下,添加扰动才是合理的,因此参数 Θ \Theta Θ可以从预训练模型中取得。

APR实例,基于MF的APR(AMF)

即在MF模型上使用APR框架,模型结构如下所示:

在这里插入图片描述

其中目标函数以及梯度可以按照APR框架得到,这里省略,有兴趣可以参考原文。

EXPERIMENTS

数据集

在这里插入图片描述
实验部分文章主要介绍了

  1. HR,NDCG随着epoch增加变化的表现
  2. 不同embedding size对应的指标大小
  3. 与baseline的对比实验
  4. 以及扰动参数 ϵ \epsilon ϵ和扰动项权重 λ \lambda λ不同大小的实验

详细可以参考原文

总结与思考

这篇文章提出了一个在RS领域应用对抗训练提高模型的鲁棒性。

在阅读文章过程中我有几点问题/想法

  1. 目标函数是minmax game,那么是否可以用GAN的方法来同时更新扰动 Δ \Delta Δ以及 Θ \Theta Θ,即训练 Δ \Delta Δ使得模型尽可能差,同时训练 Θ \Theta Θ使得模型尽可能抵抗这种扰动
  2. 这篇文章的扰动仅仅是在浅层,是否可以对更加深层次扰动,效果会不会更好?

http://www.ppmy.cn/news/1031533.html

相关文章

JavaWeb中Json传参的条件

JavaWeb中我们常用json进行参数传递 对应的注释为RequestBody 但是json传参是有条件的 最主要是你指定的实体类和对应的json参数能否匹配 1.属性和对应的json参数名称对应 2.对应实体类实现了Serializable接口,可以进行序列化和反序列化,这个才是实体类转…

【第二阶段】kotlin的函数类型作为返回类型

fun main() {//调用,返回的是一个匿名类型,所以info就是一个匿名函数val infoshow("",0)//info接受的返回值为匿名类型,此时info就是一个匿名函数println(info("kotlin",20)) }//返回类型为一个匿名函数的返回类型fun show(name:Str…

TCP重连 - 笔记

1 C++ TCP/IP 关于tcp断线重连的问题 C++ TCP/IP 关于tcp断线重连的问题_c++ 断线重连_Bug&猿柒。的博客-CSDN博客 2 C++基础--完善Socket C/S ,实现客户端,服务器端断开重连 https://www.cnblogs.com/kingdom_0/articles/2571727.html 3 C++实现Tcp通信(考虑客户…

arcpy创建基本要素:折线和多边形

目录 创建Polyline折线要素步骤一:创建空间参考步骤二:创建属性类步骤三:创建字段步骤四:创建记录并插入几何信息 创建Polygon多边形要素步骤一:创建空间参考(同上)步骤二:创建要素类…

做海外游戏推广有哪些条件?

做海外游戏推广需要充分准备和一系列条件的支持。以下是一些关键条件: 市场调研和策略制定:了解目标市场的文化、玩家偏好、竞争格局等是必要的。根据调研结果制定适合的推广策略。 本地化:将游戏内容、界面、语言、货币等进行本地化&#…

2023 8 -14链表OJ

💕人面只今何处去,桃花依旧笑春风💕 作者:Mylvzi 文章主要内容:详解链表OJ题 题目一:环形链表(判断链表是否带环) 题目描述: 画图分析: 代码实现&#x…

网络安全 Day31-运维安全项目-容器架构下

容器架构下 6. Dockerfile6.1 Docker自动化DIY镜像之Dockerfile1) 环境准备2) 书写Dockerfile内容3) 运行Dockerfile生成镜像4) 运行容器5) 小结 6.2 案例14:Dockerfile-RUN指令1) 书写Dockerfile2) 构建镜像3) 启动容器4) 测试结果 6.3 Dockerfile指令 …

SpringSecurity如何放行资源

SpringSecurity配置放行资源 permitAll配置实例 EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/css/**", …