网站首页 > 科技论文> 文章内容

专栏 从2017年顶会论文看Attention Model

※发布时间:2018-10-29 6:51:38   ※发布作者:habao   ※出自何处: 

  任弼时子女

  2017 年 KDD,Sigir 以及 Recsys 会议被接收的论文早已公示,本文对这些会议中 Attention Model 相关的 10 篇论文进行了整理,主要包括 Attention Model 的变型与应用。其中文中部分内容不是原创,有争议的请联系我。

  举个例子,给下面这张图片加字幕(Image Caption):一只的小猫带着一个鹿角帽子趴在沙发上。可以发现在翻译的过程中我们的注意力由小猫到鹿角帽子再到沙发(小猫→鹿角帽子→沙发)。其实在很多和时序有关的事情上,人类的注意力都不是一成不变的,随着事情(时间)发展,我们的注意力不断改变。

  因此,从理论上来讲在使用深度学习来训练模型时,引入注意力机制(Attention Model)是很有帮助的。本文根据 2017 年三个顶会的 10 篇关于 Attention Model 的文章,给大家介绍一下 Attention Model 的发展和应用。

  这篇文章的预备知识是 Decoder-Encoder 模型。本文主要做一个介绍,基本不会有公式推导,旨在让大家对 Attention Model 的变型和应用有一个大概的印象。

  这个过程基本为:首先计算当前上下文的与每个源语言词语的相关度(一个得分),然后使用 softmax 公式,将这个相关度为概率的形式,最后用得到的概率乘以对应源语言端词的隐含表示作为该词对预测目标的贡献,将所有源语言端的词贡献加起来作为预测下一个词的部分输入。

  其中计算上下文与源语言词语的相关得分,是根据语言特性设计的一个对齐模型(Alignment Model),感兴趣的朋友可以深入了解一下。

  通常情况下,单层 Attention Model 的不同之处主要在于相关分数计算方式的不同,接下来我们介绍三种通用的计算方式。同时在后文中,不再重复叙述 Attention Model 中根据相关分数计算输出向量的过程。

  这个模型的输入是用户前 t 次的医疗代码(每次的医疗代码用 one-hot 的形式表示),输出是用户下一时刻的医疗诊断类型。使用 Attention Model 的思想是:用户下一时刻被诊断的疾病类型可能更与前面某一次或某几次的医疗诊断相关。论文模型框架如下。

  本篇论文和前一篇论文 Attention 模型的差别主要在于每个源输入单位与目标输出的相关分数计算方式。本文介绍了三种通用的得分计算公式(见下图右上角):主要有和相关的计算方式(location-based)、与指定目标相关并通过点积计算得到的计算方式(General)以及与指定目标相关并通过拼接计算得到的计算方式(Concatenation-based)。

  下图展示的是该模型的 Attention Model 部分,未展示的部分是处理输入数据的过程,该过程是通过 CNN 等模型将文本和种类特征处理成固定维度的隐含向量表示。

  论文的整体思为:根据新闻的文本信息和种类信息,考虑新闻的时效性和时间特征。它主要是基于两个假设:第一,用户在不同的日子可能会有不同的喜好,比如用户在周一更喜欢金融类的新闻,而在周五可能更喜欢娱乐相关的论文;第二,不同类型的新闻时效性也不同,金融相关的新闻时效性短,而娱乐类的新闻时效性长。

  该论文中 Attention Model 的作用是,在第 t 时刻,给定新闻的文本和种类信息,不仅仅考虑第 t 时刻的模型(假设考虑一周中不同日子的影响,则有 7 个模型),我们也考虑该新闻在其他时刻的影响,然后根据新闻在各个时刻下的影响度随着时间的变化,综合考虑该新闻被选择的概率。 但是这个模型人工的部分太多,随着假设的增加,模型会越来越复杂。

  该论文使用 Attention Model 的假设为:如果“问题”句子中某个单词出现在“回答”句子中,则在“回答”句子中该单词周围的词语影响度更大,且该影响度随距离变化呈高斯分布。

  通过拟合高斯分布得到所有输入词的影响概率,然后将影响概率作为权重,和输入向量加权求和得到基于的影响向量,最后将得到的影响向量作为指定向量,计算所有输入单词的隐含向量与该指定向量的相关度,通过 Attention Model 计算得到的向量作为输入帮助完成预测。

  这篇论文中,相关度的计算并没有使用提到的三种方法,而是根据问题的实际情况以及模型的前提假设进行变型。

  本文的基本思是根据问题发现哪一部分视频和这个问题相关,从而能生成更加相关答案。本文的输入包括,多帧视频信息(视频每一帧通过 CNN 等模型得到固定维度的隐含向量表示)以及处理问题(文本信息)得到隐含向量表示,输出为回答中的多个单词。

  其实这篇论文只简单地将每一帧视频处理成一个固定向量,且 multi-modal 部分的求和取平均有些过于简单。如果能更精确地分析每一帧画面相关的重点信息,结果应该会更加优化。

  该任务的输入是:给定文档(多个句子,每个句子由多个单词组成)的所有词向量,以及给定问题的隐含向量表示;输出是:回答句子中的一个个单词。

  本文 Attention Model 部分的基本思为:首先在给定的文档集中的每一个句子中,计算该句子中每一个单词和给定问题的相关度,通过这一层的 Attention Model 计算得到的向量作为每个句子的隐含向量表示;然后在给定的文档集中,计算每一个句子和给定问题的相关度,然后利用第二层 Attention Model 计算得到的向量作为 Context vector,用以生成回答。

  摘要提取这类任务的输入是一个文档中所有词向量,输出是 0/1,表示每一个句子是否作为摘要。摘要提取的一个关键是判断哪些词语或者哪些句子更具有代表性,更能代表其他词语或者句子,而通常的做法就是对于句子 t ,计算 [1,t-1] 以及 [t+1,] 与 t 的cosine相似度,作为判断 t 是否作为摘要的依据。

  首先,对每一个词计算其对该句子的贡献率(影响概率),通过单词级别(word-level)的 Attention Model 计算生成的向量作为句子的隐含向量;而在句子级别计算每个句子和其前面 t-1 个句子的相似度,利用第二层 Attention 生成的上文相关向量,同时计算每个句子和其后面所有句子的相似度,利用第二层 Attention 生成的下文相关向量;最后将上文下文相关向量作为最终预测的一部分输入。

  该模型的输入是钻井得到的多类数据(每类数据的数值随时间或者其他维度不断变化)以及词典集中所有单词的词向量,输出为岩石描述的文本。它第一层 Attention Model 是为了判断,在预测下一个描述词时,每类数据中具体哪个数值与该描述词相关;而第二层 Attention Model 的意义在于判断在预测下一个描述词时,哪一类数据与该描述词相关。

  这个模型有两个输入:User Network 的输入是该用户给出的所有评论;Item Network 的输入是该产品收到的所有评论。输出是该用户对给定产品的评分。

  本文有一个假设:不同用户对喜爱或者厌恶情感的表达是不同的,比如一个用户喜欢打高分,不喜欢的产品他可能打 4 分,但是另一个用户喜欢打低分,他喜欢的产品也仅仅给 4 分,因此要根据用户真正的喜好来推荐,而不能仅仅把用户的评分作为依据。

  同理,在 Item Network 中也使用 L- 和 G-Attn 用来抓住一些和该产品有关的关键词以及其他用户对这个产品的一个整体喜好情况。然后将 Dual Attention Model 得到的输出拼接起来作为完成最终任务的输入。

  不同于传统的 CF 推荐模型,本文有如下假设:两个用户同时喜欢一件衣服,有人因为它的颜色,有人因为它的裁剪,在实际推荐中,精准分析将提升推荐准确性。因此某一个产品的隐含向量表示不再是固定不变的了,它会根据用户的喜好有不同的表现。模型的输入是用户之前购买的所有产品以及每个产品的多个特征表示,输出是用户喜欢该产品的可能性。

  首先,对于每一个输入的产品,计算用户特征向量和该产品每一个特征的相关度,通过第一层 Attention Model 计算得到的向量作为该产品的隐含表示;然后计算用户特征向量和所有输入产品的相关度,通过第二层 Attention Model 计算得到的向量作为用户的喜好特征,从而完成最终的推荐任务。

  和小节 2 中提到的 Dipole 模型一样,这是一个医疗诊断预测问题。这个模型的输入是用户前 t 次的医疗代码(每次的医疗代码用 one-hot 的形式表示),输出是用户下一时刻的医疗诊断类型。但是有很多医疗代码数据稀疏甚至缺失,导致该医疗代码的隐含向量表示不能很好地完成预测任务。本文通过引入知识图谱信息一定程度地改善了这种情况。

  首先引入外部知识图谱,这个知识图谱是一个有向无环图,每个节点的父节点表示了一种相关但更宽泛的定义/概念。当医疗代码 c_i 信息稀少或者缺失时,可以考虑使用更加宽泛的定义。而 Attention Model 就是用来判断 c_i,c_g,c_c,c_a(从叶子节点到根结点上所有节点)对预测任务的贡献度。

  

关键词:科技论文观看