这篇论文主要提出了一个网络,成为Multi-Factor Generative Adversarial Network,直接翻译过来的话就是多因子生成对抗网络。主要是期望能够探究影响推荐的其他因子(因素)到底起到了多大的作用。这里的因子指的是上下文的信息。说明:后文中判别器和鉴别器是相同的。

里面的核心有两个部分:

  • 基于Transformer的生成器,将用户行为序列作为输入,推荐可能的下一个项目,并采用多个特定因素的判别器,从不同因素的角度评估生成的子序列。
  • 使用多因子的判别器,利用判别器的奖励信号来指导生成器的学习,也就是说使用了强化学习的方式进行训练。这些奖励信号来源于上下文的因子,使用的是多鉴别器的结构。

以前的论文主要还是基于Markov假设,并且使用了循环神经网络或者Transformer等网络结构来处理用户和物品的交互,这些方法利用了上下文的信息,能够很有效的表示了用户的行为。

序列的推荐器通常会使用极大似然估计进行优化,然而,很多论文发现基于MLE的训练很容易受到数据稀疏性或暴露偏差等问题的影响。

这篇论文的一个创新之处在于,利用生成对抗网络,希望能够从序列预测当中将因子利用部分解耦。对抗学习与推荐系统结构的方法,在这篇论文当中也有表述:在本文的框架中,生成器仅依靠用户与物品的交互数据预测未来的推荐物品,而判别器则根据现有的各种因素信息判断生成的推荐序列的合理性。这种方法可以更灵活地利用外部上下文形成顺序推荐,能够提高推荐的可解释性。

问题的假设为,有一组用户,每个用户都会对应一组物品,物品是具有时间顺序的。因子在这里也给出了例子,比如在音乐推荐中,因子(上下文)就表示如艺术家、专辑、人气等等。那么,最终要解决的问题就是,给出用户的一段交互历史,希望能预测该用户最可能的下一个交互的物品。

生成器就是比较常规的生成器,输入交互的物品序列,生成用户下一个交互物品的预测。而判别器有点不一样,判别器有多个,其数目取决于有多少因子(上下文),利用多角度的信息判断生成序列的合理性。每个判别器都会将物品序列作为输入,判别器的参数根据生成的交互物品序列以及真实的交互物品序列进行更新的。

【我不禁想到了如果因子很多很多,那岂不是要爆炸……所以感觉有点像是是面向数据集设计模型方法了。】

论文的结构图如下:

MFGAN论文结构图

搞个这样的模型有三点原因:

  1. 使用最大似然损失的直接优化来训练一个基于生成的顺序推荐器是比较困难的。
  2. 将各种因子纳入到判别器进行处理,使模型更加灵活的处理多因子以及噪声。
  3. 使用多鉴别器将因子从原有的框架中解耦,提高可解释性,避免多因子蹂躏在一起相互影响。

生成器的主要组成模块:

  • 编码层,将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的更多相关文章

  1. Speech Super Resolution Generative Adversarial Network

    博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/10874993.html 论文作者:Sefik Emre Eskimez , Kazuhito K ...

  2. 论文阅读之: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 摘要: ...

  3. 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 ...

  4. Face Aging with Conditional Generative Adversarial Network 论文笔记

    Face Aging with Conditional Generative Adversarial Network 论文笔记 2017.02.28  Motivation: 本文是要根据最新的条件产 ...

  5. 《Macro-Micro Adversarial Network for Human Parsing》论文阅读笔记

    <Macro-Micro Adversarial Network for Human Parsing> 摘要:在人体语义分割中,像素级别的分类损失在其低级局部不一致性和高级语义不一致性方面 ...

  6. 生成对抗网络(Generative Adversarial Network)阅读笔记

    笔记持续更新中,请大家耐心等待 首先需要大概了解什么是生成对抗网络,参考维基百科给出的定义(https://zh.wikipedia.org/wiki/生成对抗网络): 生成对抗网络(英语:Gener ...

  7. GAN Generative Adversarial Network 生成式对抗网络-相关内容

    参考: https://baijiahao.baidu.com/s?id=1568663805038898&wfr=spider&for=pc Generative Adversari ...

  8. ASRWGAN: Wasserstein Generative Adversarial Network for Audio Super Resolution

    ASEGAN:WGAN音频超分辨率 这篇文章并不具有权威性,因为没有发表,说不定是外国的某个大学的毕业设计,或者课程结束后的作业.或者实验报告. CS230: Deep Learning, Sprin ...

  9. 论文阅读:Single Image Dehazing via Conditional Generative Adversarial Network

    Single Image Dehazing via Conditional Generative Adversarial Network Runde Li∗ Jinshan Pan∗ Zechao L ...

随机推荐

  1. UI 素材网站

    UI 素材网站 UI 设计师网站 国外: dribble.behance.Pinteres 国内: 优设.站酷.UI中国.花瓣 https://design.google/ https://dribb ...

  2. Flutter: SearchDelegate 委托showSearch定义搜索页面的内容

    API class _MyHomeState extends State<MyHome> { List<String> _list = List.generate(100, ( ...

  3. HGAME apache

    HGAME apache Linux下六十四位可执行文件 IDA找主函数 输入长度为35的字符串,经过一次函数处理,之后if条件函数的返回值为1,就能判定输入就是flag 函数sub_1447的参数 ...

  4. js异步回调Async/Await与Promise区别 新学习使用Async/Await

    Promise,我们了解到promise是ES6为解决异步回调而生,避免出现这种回调地狱,那么为何又需要Async/Await呢?你是不是和我一样对Async/Await感兴趣以及想知道如何使用,下面 ...

  5. vue页面嵌套其他页面判断是否生产https

    if (location.protocol.indexOf('https') > -1) { var oMeta = document.createElement('meta'); oMeta. ...

  6. Bitter.NotifyOpenPaltform : HTTP 异步消息接收调度中心&mdash;开源贡献 之 一:简介

    现在互联网的系统越来越趋向于复杂,从单体系统到现在的微服务体系演变.公司与公司的分工也越来越明确. 大数据公司提供了大数据服务 人脸识别公司提供了人脸识别服务 OCR 公司提供了专业的OCR 服务 车 ...

  7. Spring IoC总结

    Spring 复习 1.Spring IoC 1.1 基本概念 1.1.1 DIP(Dependency Inversion Principle) 字面意思依赖反转原则,即调用某个类的构造器创建对象时 ...

  8. Go benchmark 一清二楚

    前言 基准测试(benchmark)是 go testing 库提供的,用来度量程序性能,算法优劣的利器. 在日常生活中,我们使用速度 m/s(单位时间内物体移动的距离)大小来衡量一辆跑车的性能,同理 ...

  9. C++共享数据保护机制

    下面随笔说明C++共享数据保护机制. 共享数据的保护 对于既需要共享.又需要防止改变的数据应该声明为常类型(用const进行修饰). 对于不改变对象状态的成员函数应该声明为常函数. (1)常类型 ①常 ...

  10. 5G时代,为什么NoSQL和SQL存在短板?

    01 介绍 当今的通信服务提供商(CSP)需要能够在处理海量复杂的数据的同时,不会下降或者减慢网路响应速度和可靠性.5G时代,设备和用户数量呈指数级增长,这对业务支持服务(BSS)提出了新需求,也成为 ...