©作者 | 于辉,周昆

来源 | RUC AI Box

本文主要提出了一个基于纯 MLP 架构的序列化推荐模型,其通过可学习滤波器对用户序列进行编码,在 8 个序列化推荐数据集上超越了 Transformer 等模型。

越来越多的工作表明复杂的 Transformer 架构可能不是进行序列表示建模的最优模型,其中过多的参数量反而一定程度上带来了过拟合的风险,该风险在某些噪声较大的场景下会严重影响模型效果(如:推荐系统和信号处理)。本文针对序列化推荐问题,通过一系列分析实验发现该场景下滤波算法可以减少该过拟合问题并极大提升 Transformer 模型的效果,且在 Transformer 架构基础上将 multi-head attention 替换为频域下的 MLP 层,可以模拟滤波机制并进一步提升模型效果。

最终我们提出了 FMLP-Rec (Filter-enhanced MLP approach for sequential recommendation),一个纯 MLP 架构的模型以进行用户历史序列的编码并完成推荐任务。由于我们是在频域下利用 MLP 进行序列编码,我们的时间复杂度低于 Transformer 结构但是却有着相同的感受野。在 8 个数据集上的大量实验证明了我们的纯 MLP 模型可以超越基于 RNN,CNN,GNN 和 Transformer 的模型。

论文标题:

Filter-enhanced MLP is All You Need for Sequential Recommendation

收录会议:

WWW 2022

论文链接:

https://arxiv.org/abs/2202.13556

源码链接:

https://github.com/RUCAIBox/FMLP-Rec

研究背景与动机

1. 1 序列化推荐

在现实世界中,用户的前后行为都存在强烈的关联性与因果性,将用户过去的这一系列交互行为视作用户行为序列  ,并通过构建模型对其建模,来预测下一时刻用户最感兴趣的内容  ,这就是序列化推荐(Sequential Recommendation)的核心思想。目前序列化推荐的常用模型包括 RNN、CNN、GNN 以及 Transformer。

1. 2 滤波算法

用户的历史行为数据会不可避免地包含噪音,将其输入复杂的神经网络模型(如Transformer)后,很容易导致过拟合问题。为了解决这个问题,我们借助在数字信号处理领域被广泛应用的滤波器(Filter)来进行处理。滤波器是一种选频装置,可以使特定频率成分的信号通过/阻断,常常用于过滤现实场景下的噪声信号。

在信号进入滤波器之前,需要从时间域转换到频率域,傅里叶变换(Fourier Transform)就是这样的一个工具。如:低通滤波器(LPF: Low-Pass Filter):使低频成分通过、并极大地衰减其他频率成分的一种滤波器;带阻滤波器(BSF: Band-Stop Filter):通过设定上下边界,使该频率区间内的成分阻断,但不影响区间外频率信息的滤波器;由于用户行为序列中有用信号和噪音的频率成分存在差异,傅里叶变换后,在频率域中就变得易于区分,再通过设计特定频率响应的滤波器阻断噪音所在频带,能显著地降低噪音影响。

先导实验

2.1 基于Transformer与RNN的序列推荐模型中加入滤波器

我们首先制作了简易的高通(HPF)、低通(LPF)、带阻(BSF)三种不同类型的滤波器,放置于 GRU4Rec(基于 RNN)和 SASRec(基于Transformer)模型的 Embedding 层与 Encoder 层之间,不对其它部分做任何改动,在不同数据集上进行训练,表现大致相同并且结果令我们惊喜,表1中列出了在 Beauty 和 Sports 数据集上的结果,可以清楚地看到低通滤波器、带阻滤波器给 GRU4Rec、SASRec 的性能带来了持续且显著的提升。

2.2 移除Transformer中多头注意力,仅保留MLP和滤波器

我们更进一步将 SASRec 中的多头自注意力机制(mutil-head self-attention)换为之前用到的三种滤波器,这样得到的模型就是一个全 MLP 模型。我们将这种模型与 SASRec 在相同的数据集上进行测试,结果对比见图1。

不难看出,结构简易的、添加了低通滤波器的 MLP 模型,在性能上大幅超越了设计复杂的、基于自注意力机制 SASRec 模型,这表明合适的滤波器与全 MLP 模型的组合是十分适用于序列化推荐领域的,这种组合能够在保持模型轻量化的同时,降低信号噪音,有效减弱过拟合现象。

FMLP-Rec模型

基于上述两个实验,我们考虑将以上的简单滤波算法替换成可学习的滤波器层(Learnable Filters),依赖梯度下降算法进行优化,使其能够自适应地变换滤波器的频率响应,对序列进行处理,达到降噪的效果。我们提出了 FMLP-Rec,这是一个全 MLP 的模型。

FMLP-Rec 的模型结构如下图所示,其基础网络架构与 SASRec 相似,最大的区别就是将 SASRec 中 Transformer 的多头自注意力机制替换为一个滤波器层,利用这种机制提取序列特征。该滤波器层是通过在频域下的矩阵点乘来实现的,其等价于时域中的循环卷积,在时间复杂度更低的情况下并能够提供更大的感受野。

3.1 Embedding Layer

FMLP-Rec 与 SASRec 一致,通过对输入序列进行 item-embedding 和 position-embedding,将 item 映射到高维空间中,并为用户行为序列引入先后位置关系,传入模型的编码层。

3.2 Learnable-Filter-enhanced Blocks

3.2.1 Filter Layer

FMLP-Rec 的编码层是通过可学习的滤波增强模块(Learnable Filter-enhanced Block)的堆叠来实现的,该模块的核心是一个滤波器层。用户行为序列经 Embedding 层后输入滤波器层,此时会经过一次快速傅里叶变换(FFT)转换到频率域:

其中  ,  是序列长度,  是 Embedding 的维度,  表示序列经过  个可学习的滤波增强模块,若是从 Embedding 层直接输入的,那么  ,  表示快速傅里叶变换,变换后的  为复数且  。

经过傅里叶变换后的序列  在频率域中与一个相同尺寸的可学习滤波器  进行点乘,使其频谱成分发生改变,并且滤波器通过随机梯度下降在每一轮训练中进行更新,达到自适应滤波的效果:

频率域滤波后的序列用  表示,此时噪音的频率成分已经得到压制,对其傅里叶逆变换得到:

表示快速傅里叶逆变换,  表示经过滤波后时间域中的用户行为序列。

从理论上来说,这种频率域的可学习滤波器与序列的点乘,相当于在时间域对其进行循环卷积,即  ,证明如下:

输入 Dropout 层后会进行一次残差连接,最后进入 Layer Norm 层。这三种机制的应用是为了防止训练中的梯度消失以及不稳定的问题,并且能降低过拟合现象,用公式表示为:

3.2.2 Feed-forward Layers

模块后半部分是一个前馈层(双层 MLP)与 Add & Norm 层的组合。通过前馈层引入非线性关系:

Add & Norm 与 Filter Layer 模块中一致,通过 Dropout、残差连接、Layer Normalization 来防止过拟合,让模型有能力堆叠更多层来加深网络结构。

3.3 Prediction Layer

在经过若干滤波增强模块后,用户行为序列的特征得到有效提取,这时通过预测层对其处理,得到用户下一个最感兴趣的物品。

实验结果

4.1 在8个数据集上的主实验

我们在 8 个数据集上训练了不同神经网络架构的序列化推荐模型,其中 4 个数据集是按用户进行记录的,包含了用户以往的购买记录,分别是从亚马逊平台获取的 Beauty,Sport,Toys 数据集和 Yelp 数据集;其余 4 个数据集是按会话进行记录的,分别是 Nowplaying,RetailRocket,Tmall 以及 Yoochoose 数据集,训练结果整理在下表中。

通过对比可以清晰地看出 FMLP-Rec 性能的优越性,它在所有数据集中的表现都大幅领先其他模型,而这些都是在网络结构和时间复杂度大幅降低的同时所实现的。

4.2 滤波层的通用性

我们还设计了实验来证明在 FMLP-Rec 中起关键作用的滤波器层有望作为一个通用的网络模块,添加到其他模型中来处理序列化推荐任务,来提升这些模型的性能。于是,我们分别选取了基于 RNN 的 GRU4Rec、基于 CNN 的 Caser、基于 GNN 的 GCSAN 和基于 Transformer 的 SASRec 作为基准模型,然后将可学习的滤波器层添加到这些模型的 Embedding 层和 Encoder 层之间,在不同数据集中进行训练,与原始模型的结果对比见下图。

可以看出,在加入可学习的滤波器层之后,所有模型的的表现都超过了原始模型,证明了滤波器层的加入能够明显减弱这些神经网络受噪音影响的现象,但是另一方面,这些加入了滤波器层之后的模型依旧没能比我们的 FMLP-Rec 表现更好,这表明可学习的滤波器层与参数更少的 MLP 结构的组合是更适用于序列化推荐任务的。

4.3 滤波层的可视化

在实验的最后,我们从训练完成的模型中输出了 FMLP-Rec 的可学习滤波器,并且选取 Beauty 和 Sports 数据集上训练的滤波器制作成图,可以看到不同数据集上的滤波器形状大致相同。图中由黄色到紫色表示频率由低到高,那么这些滤波器的形状可以近似看做一种低通滤波器,红色虚线之内的低频成分基本为正向增益,其余部分随着频率升高,逐渐从衰减变为较弱的反向增益。

总结

在序列化推荐任务中,用户的行为信息会不可避免地包含噪音,这会影响复杂的序列编码模型的效果。我们通过引入数字信号处理中的滤波器的思想,通过引入滤波机制,并舍弃 Transformer 中的复杂模块,最终得到一个基于可学习滤波器的纯 MLP 模型————FMLP-Rec

滤波器层本质上是一个频域下的 MLP 层,其可以在训练过程中通过随机梯度下降可以自适应地对用户行为序列中不同频段滤波机制进行调整,理论上来说等同于时间域的循环卷积,其更易于提取周期信号,并且同时兼具全局感受野和更低的时间复杂度。FMLP-Rec 模型在 8 个数据集上击败了目前 SOTA 的基于 RNN、CNN、GNN 以及 Transformer 的神经网络模型。

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

WWW 2022 | 弯道超车:基于纯MLP架构的序列推荐模型相关推荐

  1. CV之后,纯MLP架构又来搞NLP了,性能媲美预训练大模型

    视学算法报道 编辑:陈萍.小舟 搞不起大模型,试一下超高性能的纯 MLP 架构? 去年来自谷歌大脑的研究团队在网络架构设计方面挖出新坑,提出 MLP-Mixer ,这是一个纯 MLP 构建的视觉架构. ...

  2. 基于注意力机制的深度协同推荐模型

    摘要 针对传统矩阵分解算法无法挖掘深层隐含信息,以及未能充分利用用户和项目评论的问题,提出基于注意力机制的深度协同推荐模型.首先采用注意力机制对评论文本赋权,使用并行的卷积神经网络分别提取用户评论和项 ...

  3. 2022最新!基于深度transformer的时间序列异常检测模型

    点击上方"python与机器智能",选择"星标"公众号 重磅干货,第一时间送达 论文:TranAD: Deep Transformer Networks for ...

  4. MLP or IP:推荐模型到底用哪个更好?

    查看全文 http://www.taodudu.cc/news/show-4659149.html 相关文章: 程序员如何拓展技术技能? 使用计算机连接bmcc,[供应BMCC EF-摄影机(2.5K ...

  5. 谷歌最新提出无需卷积、注意力,纯MLP构成的视觉架构!网友:MLP is All You Need?

    2021-05-06 15:50:28 作者 | 耳洞打三金.琰琰 近日,谷歌大脑团队新出了一篇论文,题目为<MLP-Mixer: An all-MLP Architecture for Vis ...

  6. SIGIR 2022 | 当多层级遇到多兴趣:用于序列推荐的多粒度神经模型

    ©作者 | 机器之心编辑部 来源 | 机器之心 来自快手和武汉大学的研究者通过结合多兴趣学习和多层级图卷积聚合提出了一种多粒度神经模型,显著增强了精确学习用户复杂行为的能力,对用户不同层级下多种兴趣的 ...

  7. TransFM:基于因子分解机的序列推荐方法

    ▌概述 今天解读的论文是由 Rajiv Pasricha 和 Julian McAuley 两位大佬提出的发表在 RecSys18 上的,是 TransRec 和 FM 的结合版本.论文下载地址: h ...

  8. 基于关联规则的气象服务智能推荐

    基于关联规则的气象服务智能推荐 赵文芳, 刘亚楠, 余东昌 北京市气象信息中心,北京 100089 摘要:针对气象公众服务存在的专业化程度不高.针对性不强等问题,提出了一种使用关联规则向用户推荐气象服 ...

  9. SIGIR2022 | 基于Prompt的用户自选公平性推荐算法

    嘿,记得给"机器学习与推荐算法"添加星标 作者:吴贻清 单位:中科院计算所 推荐系统的公平性在近些年来越来越受到人们的重视.在真实世界中,用户往往会有着一些属性信息(例如年龄,性别 ...

最新文章

  1. c# 自定义文件关联程序
  2. 服务器子系统是什么,服务器是什么样子的,服务器一般用什么系统!
  3. Unrecognized option: -javaagent
  4. three.js加载3d模型_基于WebGL的3D技术在网页中的运用 ThingJS 前端开发
  5. Eclipse查找文件存储路径
  6. LeetCode 807. 保持城市天际线
  7. php微信接口调用,PHP调用微信接口报错
  8. 风险管理计划包括哪些内容
  9. win10的自带ie浏览器打不开,点击无反应解决方法 网上提供的重置ie浏览器、卸载ie重装、安装多播协议都没管用
  10. MCGS洗衣机模拟仿真 组态王洗衣机模拟仿真
  11. SharePoint 2013 Designer 自定义操作菜单
  12. MIB Browser的使用(附安装包)
  13. 如何将一个数字转换为字符串并且按照指定格式显示?--TO_CHAR
  14. Python计算机视觉 图像扭曲(仿射扭曲)
  15. springboot医疗管理系统 毕业设计-附源码015221
  16. 过河问题(贪心算法)(python)
  17. SQL查询语句练习(一)
  18. SQL入门之第十七讲——子查询
  19. 怎样对一个项目进行成本管理,具体步骤是啥?
  20. 【JavaEE】HTTP 协议详解 ( 使用fiddler进行抓取http请求/相应包)

热门文章

  1. python打包的程序很大_Pyinstaller 打包以及pipenv 虚拟环境应用,以及打包出来程序太大的解决办法...
  2. python jit_Pyston是一个基于JIT的Python开源实现
  3. 方案接口服务器问题记录
  4. nvr服务器系统,【64路IPC网络存储服务器(WNVR)】 - 太平洋安防网
  5. offsetLeft 解析
  6. Python心得基础篇【2】函数
  7. [BZOJ 1124][POI 2008] 枪战 Maf
  8. Windows7 64位 plsql developer连接oracle最终解决方法
  9. php 值不进行解码,无法解码PHP中的JSON值
  10. Java自动拆装箱面试_跟王老师学泛型(二):Java自动装箱与拆箱