深入理解推荐系统:推荐系统中的 attention 机制

star2017 1年前 ⋅ 5710 阅读

【推荐系统】专栏历史文章:
深入理解推荐系统:Fairness、Bias 和 Debias
深入理解推荐系统:召回
深入理解 YouTube 推荐系统算法
深入理解推荐系统:排序

作为【推荐系统】系列文章的第五篇,将以推荐系统中的“attention 机制”作为今天的主角,会从三个方面进行介绍,什么是 attention 机制、在推荐模型中的应用(会介绍相关模型,AFM/DIN/DIEN/DST)和参考文献。

一、Attenation 机制

Attention 在著名论文《Attention is all you need》中大放异彩,Attention 机制最早是在计算机视觉里应用的,随后在 NLP 领域也开始应用了,真正发扬光大是在 NLP 领域,因为 2018 年 BERT 和 GPT 的效果出奇的好,进而走红。而 Transformer 和 Attention 这些核心开始被大家重点关注。

那么应用到推荐领域又该如何理解呢?

1、attention 主体思想

通常对不同的 item 感兴趣程度、注意力分布不同,考虑对不同的 item 施加不同的权重,即求当前 query 关于不同 key 下的注意力分布及当前 query 的注意力分数。某些特征就会主导某一次的预测,就好像模型对某些特征更加专注。

2、attention 机制 pipeline 图示

3、Attention 的计算步骤

Attention 函数的本质可以被描述为一个查询(query)到一系列(键 key-值 value)对的映射,在计算 attention 时主要分为三步,

  • 第一步是将 query 和每个 key 进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;
  • 第二步一般是使用一个 softmax 函数对这些权重进行归一化;
  • 第三步将权重和相应的键值 value 进行加权求和得到最后的 attention。

目前在 NLP 研究中,key 和 value 常常都是同一个,即 key=value(即 self-attention)。

4、attention 与 self-attention 的区别与联系

query 来自于解码层,key 和 value 来自于编码层时叫 vanilla attention,即最基本的 attention。query,key 和 value 都来自编码层的叫 self-attention。

以 Encoder-Decoder 框架为例,输入 Source 和输出 Target 内容是不一样的,比如对于英-中机器翻译来说,Source 是英文句子,Target 是对应的翻译出的中文句子,Attention 发生在 Target 的元素 Query 和 Source 中的所有元素之间。

Self Attention,指的不是 Target 和 Source 之间的 Attention 机制,而是 Source 内部元素之间或者 Target 内部元素之间发生的 Attention 机制,也可以理解为 Target=Source 这种特殊情况下的 Attention。

两者具体计算过程是一样的,只是计算对象发生了变化而已。

二、AFM

AFM 是较早期的将 attention 加入至推荐系统的工作,它和 NFM 类似,也是属于对 FM 的改进,不同之处在于 AFM 在不同的交叉特征上应用了 attention。模型结构如下图所示:

AFM 基于的假设

不同的交叉特征对于结果的影响是不同的。例如:性别男&历史购买过鼠标这个交叉特征比性别男&用户年龄 =30 这个交叉特征更重要,因此模型需要投入更多的注意力在前者交叉特征上。从结构图可以看出,attention 层加在特征交叉层和最终的输出层之间,通过 attention net 对每一个交叉特征打分再加权求和。

Attention 层公式

最终预测结果

可以看出,这种 attention 单纯的根据自身交叉特征来计算一个分数,没有任何特征之间的交互。

AFM 模型总结

  1. 主体思想:FM+Attention 考虑不同交叉特征的重要程度不同,使用 attention 机制对每个交叉特征的重要性进行打分,作为交叉特征的权重。
  2. 优点:缓解了 FM 存在的问题(并不是所有二阶交叉特征都是有效的,会有一些垃圾特征交叉的存在,需要施以不同的权重),利用目前比较流行的 attention 的概念,对每个特征交叉分配不同的 attention,使没用的交叉特征权重降低,有用的交叉特征权重提高,加强模型预测能力。
  3. 缺点:由于这种 attention 的方式对训练数据的拟合表达更充分,但也更容易过拟合,因此作者除了在 loss 中加入正则项之外,在 attention 部分加入了 dropout

三、DIN

DIN 提出了一种 attention 的机制,用于将用户历史记录里的商品 embedding 与当前候选商品的 embedding 做 attention,然后用得到的分数对历史商品 embedding 进行加权求和。在原来的基础模型中,通常是将用户历史行为商品经过简单的平均池化操作,这样没有和当前候选广告之间的相似性进行比较。但事实上用户历史浏览记录和当前是否点击候选广告是有较大关联的,即历史记录中的商品与当前商品之间的相似性应该对最终的结果有不同影响。

Base Model 结构

在 base model 中,用户特征经过简单的平均池化后就直接送入下一层,没有区分用户特征的重要程度,也没有用户特征与广告特征之间的交互过程(实际上是有关联的),这其中会损失很多有价值得信息。

Deep Interest Model 结构



在 DIN 中,对广告特征和用户特征计算一个权重,代表了注意力的强弱。具体得,通过将用户历史商品与当前候选广告商品同时输入至 attention 模块,由几层 fc 层学习得到分数并利用该分数对用户历史商品特征加权求和。

具体公式

值得注意的是,文章中特意提到关于 attention 分数是否进行归一化的讨论,即是否使用 softmax 进行 normalization:文中提到,他们没有使用 softmax 对最终的 score 进行归一化,因为归一化会损失上式中输出 vu 的 scale 尺度的分辨率,例如,用户历史点击的 80% 都是服装,而当前候选广告也是服装,那么输出的结果 vu 的数值应该会比较大,而做了归一化后则没有这种表现。另一方面,在另一篇论文 Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction 中提到使用 softmat 的另一个缺点,当当前用户历史点击的商品都与候选商品无关时,经过了归一化后的分数都会较大,这也会影响后续的结果。

DIN 模型总结

  1. DIN 主体思想:(1)对不同 item,DIN 采用 local activation 机制(attention)计算用户兴趣分布,使兴趣计算更 adaptive。DIN 可以充分表达一个用户兴趣的多样性。(2)提出了训练大规模稀疏特征网络的优化 trick:mini-batch aware regularization 和 data adaptive activation function。
  2. 应用场景:电子商务领域(e-commerce industry)的 CTR 预估,重点在于充分利用/挖掘用户历史行为数据中的信息。
  3. 优点:使用了 attention 机制,提出了抑制过拟合效果较好的 adaptive regularization,针对 feature id 出现的频率,来自适应调整他们的正则化强度。
  4. 缺点:无法捕捉用户兴趣的动态变化,深度模型非常复杂,输入非常稀疏且维度高,参数量很多,容易过拟合,需要特殊的抑制过拟合操作。

四、DIEN

用户的历史行为是一个随时间排序的序列,存在或深或浅的前后依赖关系,AFM 和 DIN 模型引入注意力机制仅是对不同行为重要性进行打分,这样的得分是与时间无关的,同时也是序列无关的(用户的兴趣迁移非常快,上周行为序列都会集中在篮球鞋这个品类商品上,购买完成后,本周的购物兴趣可能变成买一个机械键盘)

构建兴趣进化网络

行为序列层(把原始的 id 类行为转换成 embedding 行为序列)、兴趣抽取层(通过模拟用户兴趣兴趣迁移过程,抽取用户兴趣)、兴趣进化层(在兴趣抽取层基础上加入注意力机制,模拟与当前广告相关的兴趣进化过程)

1、兴趣抽取层(Interest Extractor Layer)

兴趣抽取层的主要目标是从 embedding 数据中提取出兴趣。但一个用户在某一时间的兴趣不仅与当前的行为有关,也与之前的行为相关,所以作者使用 GRU 单元来提取兴趣。

**基本结构:**GRU 相对与传统序列模型 RNN 与 LSTM,GRU 解决了 RNN 梯度消失的问题,与 LSTM 相比,GRU 的参数数量更少,训练收敛速度更快(GRU 和 LSTM 它们能够保存长期序列中的信息,且不会随时间而清除或因为与预测不相关而移除)。

GRU 结构:

2、兴趣进化层(Interest Evolving Layer)

相对于兴趣抽取层最大的特点是加入了注意力机制(AUGRU, GRU with Attentional Upgate gate),得分生成过程与 DIN 完全一致,都是当前状态向量和目标广告向量进行相互作用的结果,在模拟兴趣进化的过程中,需要考虑与目标广告的相关性(用户可能同时购买多类商品)。接下来看下 AUGRU 部分:

DIEN 模型总结

  1. DEIN 主体思想:GRU+AUGRU(即 Attention+GRU), 使得模型不仅对用户的历史行为时间、序列相关,还能利用 attention 机制来对不同用户行为的施加不同重要性的权重,解决了 DIN 无法动态捕捉用户兴趣的动态变化。
  2. 应用场景:与 DIN 应用场景一致。
  3. 优点:用序列模型模拟了用户兴趣的进化过程。
  4. 缺点:序列模型比较高的训练复杂度,以及在线上推断过程中的串行判断,使其在服务过程中延迟较大,无疑增大了其上线的难度,需要在工程上着重优化。实验结果难以复现。

五、DSTN

这篇文章提出,除了使用当前曝光的广告信息,还利用更多的附加广告信息,文中利用了三类附加广告,上下文广告(与当前广告一同曝光在当前页面的其他广告)、用户历史点击的广告和用户历史未点击的广告。并利用 attention 机制,将当前曝光广告和这三类广告进行 aggregation。引入空间和时间相关广告来辅助目标广告的 CTR 预估。

本文展示的三种利用附加广告信息的三种模型如下图所示,(a)是不使用附加信息,(b)是简单的 pooling(DSTN-Pooling Model),(c)是本文提出的交互式方法(DSTN- Self-Attention Model 和 DSTN - Interactive Attention Model)。

image.png

image.png

其中,交互式的方法包括两个:(1)self-attention,即每个附加广告通过神经网络学习到一个 attention 分数,利用这个分数进行对附加广告的加权求和,这里得 self-attention 和我们所熟知的 self attention 完全不同,只是由于其分数的学习只通过附加广告自身学习得到,所以叫 self-attention,但是这种方式显然没有考虑到当前曝光的广告信息,没有动态适应的功能。另一方面,本文也指出了这种用 softmax 函数归一化的缺点:1、即使所有附加广告得到的分数都很小,经过归一化之后依然会较大。2、归一化后的分数进行加权求和后损失了 scale 上的尺度变化。(这个理由和 Deep Interest Network for Click-Through Rate Prediction)里一样。

第二种交互方式:(2)将曝光广告和附加广告同时输入到 attention 学习网络学习到分数,公式如下,可以看出,其根据当前曝光广告和附加广告一起输入 attention 网络来学习分数,并且最后没有用 softmax 进行归一化,而是用 exp 将分数转化为零到正无穷的分数。

DSTN 模型总结

  1. DSTN 主体思想:除了使用当前曝光的广告信息,还利用更多的附加广告信息(这是大多数模型无法考虑到的),文中利用了三类附加广告:上下文广告(与当前广告一同曝光在当前页面的其他广告)、用户历史点击的广告和用户历史未点击的广告。并利用 attention 机制,将当前曝光广告和这三类广告进行 aggregation。
  2. 应用场景:需要考虑更多广告相互制约。
  3. 优点:引入辅助广告特征帮助更好的刻画 CTR 数据的分布,同时 Attention 机制的引入也能更好的提炼出辅助广告特征中对于目标广告更有用的信息、消除噪声对于模型学习的影响。

六、参考文献

1. Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks (AFM)——IJCAI2017

2. Deep Interest Network for Click-Through Rate Prediction(DIN)——KDD2018

3. Deep Interest Evolution Network for Click-Through Rate Prediction(DIEN)——AAAI 2019

4. Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction(DSTN)——KDD2019


本文地址:https://www.6aiq.com/article/1604529842955
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出

更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: