这篇论文主要提出了一个网络,成为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. how to get window width in javascript

    how to get window width in javascript how to get window width in js How to Detect Screen Resolution ...

  2. flutter sqlite持久化数据

    dependencies: path: sqflite: sqflite_common_ffi: import 'dart:io'; import 'package:flutter/material. ...

  3. NGK公链依靠技术创新推动数字经济产业发展

    数字经济更让人们的生活发生了翻天覆地的变化.数字经济的发展要依靠技术的创新,发展出生态新模式.同时数字经济的发展要利用新技术对传统产业进行全面的的改造升级,释放数字对经济发展的放大.倍增作用.打造数字 ...

  4. 大数据开发-linux下常见问题详解

    1.user ss is currently user by process 3234 问题原因:root --> ss --> root 栈递归一样 解决方式:exit 退出当前到ss再 ...

  5. 基于股票大数据分析的Python入门实战(视频教学版)的精彩插图汇总

    在我写的这本书,<基于股票大数据分析的Python入门实战(视频教学版)>里,用能吸引人的股票案例,带领大家入门Python的语法,数据分析和机器学习. 京东链接是这个:https://i ...

  6. 微信小程序(八)-项目实例(原生框架 MINA转云开发)==03-云开发-数据库

    云数据库 云数据库开发文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database.html 1.新建云数据库( ...

  7. 腾讯数据库tdsql部署与验证

    环境准备 | 主机 | IP | 配置(最低要求配置) | | :----- | ------------- | ------------------ | | node-1 | 192.168.1.8 ...

  8. 图像分割 | Context Prior CPNet | CVPR2020

    文章转自微信公众号:「机器学习炼丹术」 文章作者:炼丹兄(已授权) 作者联系方式:cyx645016617 论文名称:"Context Prior for Scene Segmentatio ...

  9. 后端程序员之路 1、linux、centos

    CentOS.Ubuntu.Debian三个linux比较异同 - 记事本 - 博客频道 - CSDN.NEThttp://blog.csdn.net/educast/article/details/ ...

  10. spring boot自定义类配置绑定在配置文件中自动提示

    在spring boot的日常使用中,我们可能需要使用配置绑定的方式动态配置自定义类的成员变量. 这个时候,我们在配置文件中配置spring默认已有的配置时,只需要输入部分关键字即可自动提示,如下图: ...