赞
踩
attention翻译为注意力,对于不同的输入信息根据重要性不同赋予不同的权重。来源于人类对同一事物的注意力不同而得名。可以根据图一来做简单的理解,其中颜色较深的部分,指的是比较关注的分布。
在NLP中,Attention来源于SeqSeq中,在最后一个timestep后encode输出开始预测decode的阶段,如图2中中法文翻译为英文为例。在每一时刻生成右边英语句子的过程中只关注其中输入法语句子中最重要的信息部分。
图三,是一个实现seqseq中attention句子的形象的演示过程,其中在每一时刻,decode每一个中间向量和encode中每一个中间向量,通过一个函数(如点乘,余弦相似度),计算得到attention score,如图中蓝色score部分。随后进入第2部,将这些attention score经过softmax函数变换,得到0~1的概率分布,然后将这些概率分别和encode的各自attention向量相乘求和得到attention output
如图四中所示,将Source中的构成元素想象成是由一系列的<Key,Value>数据对构成,此时给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。即可以将其本质思想改写为如下公式(图5)。至于Attention机制的具体计算过程,如果对目前大多数方法进行抽象的话,可以将其归纳为两个过程:第一个过程是根据Query和Key计算权重系数,第二个过程根据权重系数对Value进行加权求和。而第一个过程又可以细分为两个阶段:第一个阶段根据Query和Key计算两者的相似性或者相关性;第二个阶段对第一阶段的原始分值进行归一化处理(图6)
在编码的交互层过后得到输出context向量矩阵H(2d,T)和query词向量矩阵U(2d,J)。计算相似度矩阵S,S的计算过程如图7所示,a为H向量,b为U向量,得到的相似度矩阵为S(T,J)。
详细分解过程如图8所示。S(t,j)表示的是H中第t个词向量和U中第j个词向量,得到的一个相似度得分。
计算Context_to_Query_Attention,如图9所示。首先将相似度矩阵根据行向量,进行softmax变换,得到矩阵A.然后拿A(1,J)中的任意一行At与U中的对应位置的每一个词向量(2d,1)相乘加和得到一个(2d,1)的向量。
计算Query-to-Context Attention,如图10所示。首先通过相似度矩阵S,取每一行向量的最大值,得到矩阵z,z经过softmax变换,得到矩阵b,拿b中的每一个值和对应的H向量中每一位置的词向量做乘积加和得到一个(2d,1)的向量,然后复制该向量T次得到QtC attention。
Attention Mechanism in Seq2Seq and BiDAF — an Illustrated Guide
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。