[SIGIR2020] Sequential Recommendation with Self-Attentive Multi-Adversarial Network
这篇论文主要提出了一个网络,成为Multi-Factor Generative Adversarial Network,直接翻译过来的话就是多因子生成对抗网络。主要是期望能够探究影响推荐的其他因子(因素)到底起到了多大的作用。这里的因子指的是上下文的信息。说明:后文中判别器和鉴别器是相同的。
里面的核心有两个部分:
- 基于Transformer的生成器,将用户行为序列作为输入,推荐可能的下一个项目,并采用多个特定因素的判别器,从不同因素的角度评估生成的子序列。
- 使用多因子的判别器,利用判别器的奖励信号来指导生成器的学习,也就是说使用了强化学习的方式进行训练。这些奖励信号来源于上下文的因子,使用的是多鉴别器的结构。
以前的论文主要还是基于Markov假设,并且使用了循环神经网络或者Transformer等网络结构来处理用户和物品的交互,这些方法利用了上下文的信息,能够很有效的表示了用户的行为。
序列的推荐器通常会使用极大似然估计进行优化,然而,很多论文发现基于MLE的训练很容易受到数据稀疏性或暴露偏差等问题的影响。
这篇论文的一个创新之处在于,利用生成对抗网络,希望能够从序列预测当中将因子利用部分解耦。对抗学习与推荐系统结构的方法,在这篇论文当中也有表述:在本文的框架中,生成器仅依靠用户与物品的交互数据预测未来的推荐物品,而判别器则根据现有的各种因素信息判断生成的推荐序列的合理性。这种方法可以更灵活地利用外部上下文形成顺序推荐,能够提高推荐的可解释性。
问题的假设为,有一组用户,每个用户都会对应一组物品,物品是具有时间顺序的。因子在这里也给出了例子,比如在音乐推荐中,因子(上下文)就表示如艺术家、专辑、人气等等。那么,最终要解决的问题就是,给出用户的一段交互历史,希望能预测该用户最可能的下一个交互的物品。
生成器就是比较常规的生成器,输入交互的物品序列,生成用户下一个交互物品的预测。而判别器有点不一样,判别器有多个,其数目取决于有多少因子(上下文),利用多角度的信息判断生成序列的合理性。每个判别器都会将物品序列作为输入,判别器的参数根据生成的交互物品序列以及真实的交互物品序列进行更新的。
【我不禁想到了如果因子很多很多,那岂不是要爆炸……所以感觉有点像是是面向数据集设计模型方法了。】
论文的结构图如下:
MFGAN论文结构图
搞个这样的模型有三点原因:
- 使用最大似然损失的直接优化来训练一个基于生成的顺序推荐器是比较困难的。
- 将各种因子纳入到判别器进行处理,使模型更加灵活的处理多因子以及噪声。
- 使用多鉴别器将因子从原有的框架中解耦,提高可解释性,避免多因子蹂躏在一起相互影响。
生成器的主要组成模块:
- 编码层,将one-hot的表示编码成d维的稠密表示,然后形成一个物品的编码矩阵以及位置位置编码矩阵。将这两个矩阵进行加和就成了生成器的输入表示。
- 自注意力层。里面用的是多头的注意力模块,包括两个子层:多头注意力子层以及前向传播层。为了有效地提取不同表征子空间的信息,采用了多头注意力机制,而不是用单一的关注函数来关注用户序列的信息。值得一提的是,在顺序推荐中,只能利用当前时间步长之前的信息,对多头自注意力函数的输出进行掩码操作。
- 预测层(预测下一个交互的物品),使用的是softmax操作进行预测。
对于鉴别器来说:
- 由于这篇论文的鉴别器是针对因子所设计的多个鉴别器的组合,每个鉴别器对产生的序列进行了二分类的操作,分辨是真实的序列还是预测的序列。对不同的鉴别器使用不同的参数,并且他们之间互相独立。
- 编码层。同样的,也是使用了一个编码矩阵以及位置矩阵进行加和。首先将一个因子的可能值分解成若干个bin,然后为每个bin设置一个唯一的编码向量,最后通过对输入序列中bin ID的编码进行连接,利用查找操作得出最后的编码矩阵。
- 自注意力层。跟生成器结构类似,也是使用了注意力机制以及前向传播层。这里每个鉴别器都只用了一个注意力模块,防止太强而不能对生成器进行合适的优化。主要结构是双向结构并且没有mask进行掩码操作。用这种方式能够对序列当中的任意两个位置的交互进行建模。
- 合理性预测层。使用了多层感知机的结构,用来对合理性进行预测。多个鉴别器产生的合理性分数能够指导生成器的学习(强化学习)。
由于物品集的采样是一个离散的过程,所以对于我们的推荐任务,不能直接应用梯度下降法来解决原来的GAN公式。所以需要强化学习进行指导。接下来说强化学习如何接管。按照强化学习的设定:
- 状态s是前面的子序列
- 动作a是所选择的下一个物品
- 选择策略π是生成器网络,整个网络可以看做是策略
- 奖励信号r就是不同鉴别器给出的合理性分数,Q-value函数使用的是不同鉴别器合理性分数的加权组合,权重是各个鉴别器合理性分数的\(\lambda\)参数化的softmax结果。
整体算法流程
[SIGIR2020] Sequential Recommendation with Self-Attentive Multi-Adversarial Network的更多相关文章
- Speech Super Resolution Generative Adversarial Network
博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/10874993.html 论文作者:Sefik Emre Eskimez , Kazuhito K ...
- 论文阅读之:Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network 2016.10.23 摘要: ...
- Macro-Micro Adversarial Network for Human Parsing
Macro-Micro Adversarial Network for Human Parsing ECCV-2018 2018-10-27 15:15:07 Paper: https://arxiv ...
- Face Aging with Conditional Generative Adversarial Network 论文笔记
Face Aging with Conditional Generative Adversarial Network 论文笔记 2017.02.28 Motivation: 本文是要根据最新的条件产 ...
- 《Macro-Micro Adversarial Network for Human Parsing》论文阅读笔记
<Macro-Micro Adversarial Network for Human Parsing> 摘要:在人体语义分割中,像素级别的分类损失在其低级局部不一致性和高级语义不一致性方面 ...
- 生成对抗网络(Generative Adversarial Network)阅读笔记
笔记持续更新中,请大家耐心等待 首先需要大概了解什么是生成对抗网络,参考维基百科给出的定义(https://zh.wikipedia.org/wiki/生成对抗网络): 生成对抗网络(英语:Gener ...
- GAN Generative Adversarial Network 生成式对抗网络-相关内容
参考: https://baijiahao.baidu.com/s?id=1568663805038898&wfr=spider&for=pc Generative Adversari ...
- ASRWGAN: Wasserstein Generative Adversarial Network for Audio Super Resolution
ASEGAN:WGAN音频超分辨率 这篇文章并不具有权威性,因为没有发表,说不定是外国的某个大学的毕业设计,或者课程结束后的作业.或者实验报告. CS230: Deep Learning, Sprin ...
- 论文阅读:Single Image Dehazing via Conditional Generative Adversarial Network
Single Image Dehazing via Conditional Generative Adversarial Network Runde Li∗ Jinshan Pan∗ Zechao L ...
随机推荐
- taro render html
taro render html html = `<h1 style='color: red'>Wallace is way taller than other reporters.< ...
- NGK项目与其他项目相比有哪些优势?
一个项目运行这么久,难免不被其他项目比来比去.NGK项目之所以能被很多人关注,是因为NGK具有独特的优势,NGK具有很高的性能,在智能合约上有多种应用,而且NGK具有独特的跨链技术.转账没有手续费,在 ...
- 21_MySQL表外连接实战
-- 查询每名员工的编号.姓名.部门.月薪.工资等级.工龄.上司编号.上司姓名.上司部门? SELECT e.empno,#员工编号 e.ename,#员工姓名 e.deptno,#员工部门 e.sa ...
- 1.go语言入门----Helloworld与包引用
HelloWorld与包引用 学习一门语言的惯例都是从helloworld开始,go语言也不例外 在gopath下的src中创建一个helloworld目录,创建main.go文件 package m ...
- oracle 导入导出dmp
exp 用户名/密码@地址:端口/serviceName file=D:\710.dmp exp test710/test710@192.168.15.134:1521/doit file=D:\71 ...
- Ajax的基本用法
1.介绍 2.基本用法 2.1原生写法 $.ajax({ url: url, //是否是异步请求,默认是 // async: false, //请求方式,默认是get //type:'get', // ...
- ElasticSearch7.9.2设置密码
1:设置ElasticSearch的密码 1.1:停止运行ElasticSearch,修改配置. vim elasticsearch-7.9.2/config/elasticsearch.yml 新增 ...
- Linux下搭建RocketMQ环境
Apache 官网: http://rocketmq.apache.org/ RocketMQ 的 Github 地址: English:https://github.com/apache/rocke ...
- Shell脚本控制docker容器启动顺序
1.遇到的问题 在分布式项目部署的过程中,经常要求服务器重启之后,应用(包括数据库)能够自动恢复使用.虽然使用docker update --restart=always containerid能够让 ...
- Java基础 随笔整理
Java基础随笔整理 为了方便阅读,特整理了相关的学习笔记 Java感想 操千曲而后晓声 Java入门 Java其他 Java虚拟机详解 语言入门百题 Java开发工具 · Eclipse Java语 ...