attention机制
Attention 机制
1. 什么是Attention?
简而简之,深度学习中的注意力可以被广义地理解为标志重要性的权重向量
为了预测或推断一个元素,例如图像中的像素或句子中的单词,我们使用注意力权重来估计其他元素与其相关的强度,并将由注意力权重加权的值的总和作为计算最终目标的特征。
Step1. 计算其它元素与待预测元素的相关性权重
Step2 . 根据相关性权重对其它元素进行加权求和
Decoder: RNN with input from previous state + dynamic context vector.
Attention layer: parameterized by a simple feed-forward network
Encoder: bidirectional RNN
在一个新的模型中定义了一个条件概率:
其中,si是decoder中RNN在i时刻的隐状态,如图4中所示,其计算公式为:
这里的背景(或上下文)向量ci的计算方式,这里的ci是一个权重化(Weighted)之后的值,其表达式如公式5所示:
其中,i表示decoder端的第i个词,hj表示encoder端的第j个词的隐向量,aij表示encoder端的第j个词与decoder端的第i个词之间的权值,表示源端第j个词对目标端第i个词的影响程度,aij
的计算公式如公式6所示:
在公式6中,aij是一个softmax模型输出,概率值的和为1。eij表示一个对齐模型,用于衡量encoder端的位置j个词,对于decoder端的位置i个词的对齐程度(影响程度),换句话说:decoder端生成位置i的词时,有多少程度受encoder端的位置j的词影响。对齐模型eij的计算方式有很多种,不同的计算方式,代表不同的Attention模型,该论文中用的是前馈神经网络方法
以上内容来源于论文《Neural Machine Translation By Jointly Learning To Align and Translate》
2. Attention的应用场景
本节主要给出一些基于Attention去处理序列预测问题的例子,以下内容整理翻译自:
https://machinelearningmastery.com/attention-long-short-term-memory-recurrent-neural-networks/
1.机器翻译
给定一个法语句子做为输入序列,翻译并输出一个英文句子做为输出序列。Attention用于关联输出序列中每个单词与输入序列中的某个特定单词的关联程度。
“我们扩展了传统的编码器-解码器结构,赋予decoder,在生成目标端(target)的词时,可以自动(软)搜索一组与之相关的输入序列的能力。这使得模型不必将整个源句子编码成一个固定长度的向量,并且还使模型只关注源端与下一个目标词的生成有关的信息。”
- Dzmitry Bahdanau等人,《Neural machine translation by jointly learning to align and translate》,2015。
通过Attention来解释法语到英语单词之间的对应关系。摘自Dzmitry Bahdanau的论文
2.图像标注(Image Caption)
基于序列的Attention Mechanism可以应用于计算机视觉问题,以帮助理解如何最好地利用卷积神经网络来省长一段关于图片内容的描述,也称为Caption。
给定输入图像,输出图像的英文描述。使用Attention是为输出序列中的每个单词关注图像中不同部分。
“我们提出了一种基于Attention mechanism的方法,并在在三个标准数据集上都取得了最好的成绩...我们还展示了如何利用学到的Attention来提供更多对模型生成过程的解释,并且证明Attention学习到的对齐与人类视觉感知非常一致。”
Kelvin Xu等人,《Attend and Tell: Neural Image Caption Generation with Visual Attention》, 2016
基于Attention来解释,生成英文描述中某一个词时,与图片中某一区域的高度依赖关系。
3. 蕴含关系推理(Entailment Reasoning)
给定一个用英语描述前景描述(premise scenario)和假设(hypothesis),判读假设(premise)与假设(hypothesis)的关系:矛盾,相关或包含。
例如:
前提:“一场婚礼中拍照”
假设:“有人结婚”
Attention被用来把假设中的每个单词与前提中的单词联系起来,反之亦然。
“我们提出了一个基于LSTM的神经模型,它一次读取两个句子来确定两个句子之间的蕴含关系,而不是将每个句子独立映射到一个语义空间。我们引入逐字的(word-by-word)Attention Mechanism来扩展这个模型,来强化模型对单词或短语对的关系推理能力。该模型比传统的仅基于LSTM的模型高2.6个百分点,取得了一个最高成就”
-Tim Rocktäschel,《Reasoning about Entailment with Neural Attention》, 2016
基于Attention来解释前提和假设中词与词之间的对应关系
4. 语音识别( Attention in Speech Recognition)
给定一段英语语音片段做为输入序列,输出对应的音素序列。
Attention用于将输出序列中的每个音素与输入序列中的特定音频帧相关联。
“基于混合Attention机制的新型端到端可训练语音识别体系结构,其结合内容和位置信息帮助选择输入序列中的下一个位置用于解码。所提出的模型的一个理想特性就是它可以识别比训练集中句子的更长的句子。”
-Jan Chorowski,《Attention-Based Models for Speech Recognition》, 2015.。
基于Attention来解释输出音素与输入端的声音片段的对应关系
5.文字摘要生成(Attention in Text Summarization)
给定一篇英文文章做为输入顺序,输出一个总结英文文章注意内容的摘要句子。
Attention用于将输出摘要中的每个单词与输入文档中的特定单词相关联。
“将基于Attention的神经网络用语摘要抽取。我们将这个概率模型与可以产生准确的摘要的生成算法相结合。”
-Alexander M. Rush,《A Neural Attention Model for Abstractive Sentence Summarization》, 2015
基于Attention来解释输入Sentence与输出Summary之间单词的对应关系