作者 | Alex-zhai

来源 | 深度传送门(ID:deep_deliver)

【导读】最近基于Transformer的一些NLP模型很火(比如BERT,GPT-2等),因此将Transformer模型引入到推荐算法中是近期的一个潮流。Transformer比起传统的LSTM、GRU等模型,可以更好地建模用户的行为序列。本文主要整理Transformer在推荐模型中的一些应用以及在2019年的最新进展。

Self-Attentive Sequential Recommendation, ICDM 2018

模型结构

问题定义:模型输入是用户 u 的一个历史交互序列:  , 其期望的输出是该交互序列一个时间刻的偏移:  。

Embedding层

将输入序列  转化成固定长度的序列  。意思是如果序列长度超过n,则使用最近n个行为。如果不足n,则从左侧做padding直到长度为n。

位置embedding:因为self-attention并不包含RNN或CNN模块,因此它不能感知到之前item的位置。本文输入embedding中也结合了位置Embedding P信息,并且位置embedding是可学习的。

Self-Attention层

Transformer中Attention的定义为:

本文中,self-attention以embedding层的输出作为输入,通过线性投影将它转为3个矩阵,然后输入attention层:

为了避免在预测i时刻的item时用到后续时刻的信息,本文将符合(j > i)条件的  与  之间的连接forbidding掉,这是因为self-attention每个时刻的输出会包含所有时刻的信息。

Point-wise前馈网络

尽管self-attention能够用自适应权重并且聚焦之前所有的item,但最终它仍是个线性模型。可用一个两层的point-wise前馈网络去增加非线性同时考虑不同隐式维度之间的交互:

预测层

最后采用MF层来预测相关的item i:

其中  是给定t个item,下一个item i的相关性。N是item embedding矩阵。为了减少模型尺寸及避免过拟合,共用一个item embedding。

显式用户建模

为了提供个性化推荐,当前主要有两种方法:学习显式的用户embedding表示用户偏好(MF,FPMC,Caser);考虑用户之前的行为,通过访问过的item的embedding推测隐式的用户embedding。本文采用第二种方式,同时额外在最后一层插入显式用户embedding  ,例如通过加法实现:

但是通过实验发现增加显式用户embedding并没有提升效果。

Next Item Recommendation with Self-Attention, 2018

模型结构

本文亮点是同时建模用户短期兴趣(由self-attention结构提取)和用户长期兴趣。

短期兴趣

其短期兴趣建模过程如下:假定使用用户最近的 L 条行为记录来计算短期兴趣。可使用X表示整个物品集合的embedding,那么,用户 u 在 t 时刻的前 L 条交互记录所对应的embedding表示如下:

其中每个item的embedding维度为d,将  作为transformer中一个block的输入。

这里需要注意和传统transformer的不同点:

  • 计算softmax前先掩掉  矩阵的对角线值,因为对角线其实是item与本身的一个内积值,容易给该位置分配过大的权重。

  • 没有将输入  乘以  得到  ,而是直接将输入乘以softmax算出来的score。

  • 直接将embedding在序列维度求平均,作为用户短期兴趣向量。

长期兴趣

self-attention模块只使用用户最近的L个交互商品作为用户短期的兴趣。那么怎么建模用户的长期兴趣呢?可认为用户和物品同属于一个兴趣空间,用户的长期兴趣可表示成空间中的一个向量,而某物品也可表示为成该兴趣空间中的一个向量。那如果一个用户对一个物品的评分比较高,说明这两个兴趣是相近的,那么它们对应的向量在兴趣空间中距离就应该较近。这个距离可用平方距离表示。

综合短期兴趣和长期兴趣,可得到用户对于某个物品的推荐分,推荐分越低,代表用户和物品越相近,用户越可能与该物品进行交互:

模型采用pair-wise的方法训练,即输入一个正例和一个负例,希望负例的得分至少比正例高γ,否则就发生损失,并在损失函数加入L2正则项:

BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer, CIKM 2019

模型架构

显而易见,本文的亮点是结合使用预训练的BERT模型。

Embedding Layer

模型的输入是用户历史交互序列,对交互序列中的每一个物品 i,其Embedding包含两部分,一部分是物品的Embedding,用vi表示;另一部分是位置信息的Embedding,用 pi 表示。这里的pi是可学习的。

Transformer Layer

主要包括Multi-Head Self-Attention层和Position-Wise Feed-Forward Network,其中Multi-Head Self-Attention计算过程如下:

Stacking Transformer Layer使用了类似于resnet的skip连接结构。

模型训练

因为在BERT4Rec中,输入历史序列[v1, v2, ..., vt-1],输出的是包含上下文信息的向量[h1, h2, ..., ht-1],这里每个向量ht都包含了整个序列的信息。如果要预测用户t时刻的交互物品vt,如果直接把 vt 作为输入,那么其余每个物品在Transformer Layer中会看到目标物品vt的信息,造成一定程度的信息泄漏。

因此可把对应位置的输入变成[mask]标记。打标记的方式和BERT一样,随机把输入序列的一部分遮盖住,然后让模型来预测这部分对应的商品:

Behavior Sequence Transformer for E-commerce Recommendation in Alibaba, 2019

模型结构

问题建模:给定一个用户u的行为序列:S(u) = {v1, v2, ..., vn },学习一个函数F用于预测用户 u 点击item vt的概率。

Transformer layer

对于每个item抽取了一个更深层次的representation,用于捕捉该item和历史行为序列中的其他item的关系。

DIN、DIEN、DSIN和本文BST模型的区别和联系

1. DIN模型使用注意力机制来捕获目标商品与用户先前行为序列中商品之间的相似性,但是未考虑用户行为序列背后的序列性质,并且未捕捉用户兴趣的动态变化性。

2. DIEN主要解决DIN无法捕捉用户兴趣的动态变化性的缺点,提出了兴趣抽取层Interest Extractor Layer、兴趣进化层Interest Evolution Layer。

3. DSIN针对DIN和DIEN没考虑用户历史行为中的会话信息,因为在每个会话中的行为是相近的,而在不同会话之间差别是很大的。DSIN主要是在session层面上来利用用户的历史行为序列信息。

4. BST模型通过Transformer模型来捕捉用户历史序列中各个item的关联特征,并且通过加入待推荐的商品item,也可抽取出行为序列中商品与待推荐商品之间的相关性。

原文链接:https://zhuanlan.zhihu.com/p/85825460

(*本文为AI科技大本营转载文章,转载联系原作者)

推荐阅读

  • 超模脸、网红脸、萌娃脸...换头像不重样?我开源了5款人脸生成器

  • 解读 | 2019年10篇计算机视觉精选论文(上)

  • 高通:2 亿像素手机 2020 年诞生!

  • 再现暴力裁员!患病员工被关小黑屋,摄像头监控,工作量超其他人!

  • 图灵奖得主Bengio:深度学习不会被取代,我想让AI会推理、计划和想象

  • VS Code 成主宰、Vue 备受热捧!2019 前端开发趋势必读

  • 我在华为做外包的真实经历

  • 数据中心“容灾”和“备份”的区别

  • 2019 区块链大事记 | Libra 横空出世,莱特币减产,美国放行 Bakkt……这一年太精彩!

  • 你点的每个“在看”,我都认真当成了AI

2019最新进展 | Transformer在深度推荐系统中的应用相关推荐

  1. transformer预测过程_2019最新进展 | Transformer在深度推荐系统中的应用

    作者 | Alex-zhai 来源 | 深度传送门(ID:deep_deliver) [导读]最近基于Transformer的一些NLP模型很火(比如BERT,GPT-2等),因此将Transform ...

  2. Transformer在深度推荐系统中的应用及2019最新进展

    作者:Alex-zhai 来源:https://zhuanlan.zhihu.com/ p/85825460 整理:深度传送门 最近基于Transformer的一些NLP模型很火(比如BERT,GPT ...

  3. 深度CTR预估模型的演化之路2019最新进展

    作者 | 锅逗逗 来源 | 深度传送门(ID: deep_deliver) 导读:本文主要介绍深度CTR经典预估模型的演化之路以及在2019工业界的最新进展. 介绍 在计算广告和推荐系统中,点击率(C ...

  4. 清华大学崔鹏:因果推断技术最新的发展趋势及在推荐系统中的应用

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 知识图谱在美团推荐场景中的应用实践 搜索场景下的智能实体推荐 机器学习在B站推荐系统中的应用实践 小红书推荐系统 ...

  5. 深度推荐系统2019年度阅读收藏清单

    一只小狐狸带你解锁NLP/ML/DL秘籍 正文来源:深度传送门 今天是2020年新年工作第一天,祝大家开工大吉,新的一年一切顺利,诸事躺赢!深度传送门也跟很多号主一样,花了点时间分类整理了一下阅读清单 ...

  6. 【最新】如何降低深度强化学习研究的计算成本(Reducing the Computational Cost of DeepRL)...

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 人们普遍认为,将传统强化学习与深度神经网络相结合的 ...

  7. 场景文本检测与识别:最新进展及未来趋势

    Scene text detection and recognition: recent advances and future trends 文章目录 摘要 1.介绍 2.场景文本检测与识别的最新进 ...

  8. 推荐系统中的Embedding

    推荐系统之Embedding 一.什么是embedding? 1. 让embedding空前流行的word2vec: 2. 从word2vec到item2vec 二.Graph Embedding 1 ...

  9. 推荐系统中的前沿技术研究与落地:深度学习、AutoML与强化学习 | AI ProCon 2019...

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 个性化推荐算法滥觞于互联网的急速发展,随着国内外互联网公司,如 Netflix 在电影领域,亚马逊.淘宝.京东等在电商领域,今日头 ...

最新文章

  1. IT从业人员必看的10大论坛(ZT)
  2. SQL SERVER 优化 50法
  3. Popup窗口在XP+SP2下面受到限制
  4. eBay测试老兵的修炼之道:如何从测试“小工”到测试“专家”?
  5. 【DIY】可能是最实用最便宜的 arduino 温湿度计方案,200615整合家用声控温湿度计完整方案...
  6. android设置提交的隐藏域以及在onItemClick中获取对应的数据
  7. java.util.function包
  8. devserver配置_03-零基础学webpack4.0之html相关配置
  9. 关于linux防火墙
  10. oracle crs 命令,ORACLE RAC CRSCTL 命令使用 及 执行的用户
  11. MYSQL-创建存储过程
  12. 滴滴新规则明日起试行:将影响一大波人
  13. servlet ehcache beanfactroy c3p0 配置文件
  14. [C++]2-3 倒三角形
  15. java十二星座 (快来测试你是什么星座吧)
  16. HTML中的空格符号( nbsp; ensp; emsp; )介绍以及中文对齐方式
  17. 向量正交 与 函数正交
  18. ATX 移动设备共享平台
  19. 论文经验 - 计算机视觉(CV)方向
  20. 视觉SLAM笔记(33) 对极约束求解相机运动

热门文章

  1. selenium grid2 使用远程机器的浏览器
  2. 在Centos 7下编译openwrt+njit-client
  3. Linux下的Shell工作原理
  4. 编写单元测试代码遵守BCDE原则,以保证被测试模块的交付质量,那么下列说法正确的是
  5. Docker使用笔记
  6. 4. matlab 中的axis与axes的区别
  7. Javascript使用三大家族和事件来DIY动画效果相关笔记(一)
  8. Android中的eventBus传值
  9. Ultra-QuickSort POJ 2299(归并排序)
  10. 每天一个linux命令(33):df 命令