推荐系统与Attention机制——详解Attention机制

什么是Attention机制?

Attention机制的本质来自于人类视觉注意力机制。人们在看东西的时候一般不会从到头看到尾全部都看,往往只会根据需求观察注意特定的一部分。

简单来说,就是一种权重参数的分配机制,目标是协助模型捕捉重要信息。具体一点就是,给定一组<key,value>,以及一个目标(查询)向量query,attention机制就是通过计算query与每一组key的相似性,得到每个key的权重系数,再通过对value加权求和,得到最终attention数值。

优缺点:

优点:

  1. 一步到位获取全局与局部的联系,不会像RNN网络那样对长期依赖的捕捉会收到序列长度的限制。
  2. 每步的结果不依赖于上一步,可以做成并行的模式
  3. 相比CNN与RNN,参数少,模型复杂度低。(根据attention实现方式不同,复杂度不一)

缺点:

  1. 没法捕捉位置信息,即没法学习序列中的顺序关系。这点可以通过加入位置信息,如通过位置向量来改善,具体可以参考最近大火的BERT模型。

应用领域:

在这主要介绍几篇论文或经典文档。

自然语言处理:

  1. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  2. Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
  3. Generating Wikipedia by Summarizing Long Sequences
  4. Universal Transformers

计算机视觉:

  1. Image Transformer
  2. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

推荐系统:

  1. Deep Interest Network for Click-Through Rate Prediction
  2. Deep Interest Evolution Network for Click-Through Rate Prediction
  3. Learning Tree-based Deep Model for Recommender Systems

Attention常见实现方法

  1. 多层感知机:

该方法主要是将Q,K拼接,然后一起通过一个激活函数为tanh的全连接层,再跟权重矩阵做乘积,在数据量够大的情况下,该方法一般来说效果都不错。

2.Dot Product / scaled-dot Product:

该方法适用于query与key维度相同情景,通过q转置后与k点积。在权重值过大的情况下,可以将数据标准化,即scaled-dot Product。

3.Bilinear:

通过一个权重矩阵直接建立query与key的关系,权重矩阵可以随机初始化也可以使用预设的。

4.cosine

即计算两个向量的cosine相似度。

self-attention

该方法即Q,K,V都来自于同一个输入,其余计算过程,基本同上常用方法。

Multi-Head Attention

该方法可以理解成attention版本的ensemble,不同head学习不同的子空间语义。权值计算也同上常用方法。

推荐系统中的attention机制

现在推荐系统的趋势基本是朝着海量数据+复杂模型的方向发展,相信将来会取代人工精细特征+简单模型的方式。

这里主要介绍阿里的din模型:

模型的主要思想在于用户的兴趣是无序的,比如在电商场景下,用户A的历史行为序列包含游泳用品,牛奶,女装。而当前展示的广告是女装,它便只能激活女装的这个兴趣,即在当前展示广告面前,用户的兴趣是多峰的。

基于此,通过target广告与用户行为序列key做attention,捕获当前最可能被激活的那个峰。

具体算法实现便是通过target与行为序列做attention,再将输出与其他特征拼接之后通过全连接层得到最终输出。

相似的应用场景还有TDM模型,DIEN模型等。

小弟在此抛砖引玉,希望各位看官多多指点

猜你喜欢

转载自blog.csdn.net/caizd2009/article/details/87919952