0 Attention背景知识总结
encoder-decoder
这part的背景来源于这篇:https://blog.youkuaiyun.com/u012968002/article/details/78867203 这篇attention文章讲解的很好。
encoder-decoder中,将输入句子通过非线性变换转化为中间语义表示C,对于解码器Decoder来说,其任务是根据句子Source的中间语义表示C和之前已经生成的历史信息y1,y2……yi-1来生成i时刻要生成的单词yi,则yi=g(C, y1, y2,...yi-1)
, 每个yi都依次这么产生,那么看起来就是整个系统根据输入句子Source生成了目标句子Target。
如果Source是中文句子,Target是英文句子,那么这就是解决机器翻译问题的Encoder-Decoder框架;
如果Source是一篇文章,Target是概括性的几句描述语句,那么这是文本摘要的Encoder-Decoder框架;
如果Source是一句问句,Target是一句回答,那么这是问答系统或者对话机器人的Encoder-Decoder框架。
在文本处理领域,Encoder-Decoder的应用领域相当广泛。
Encoder-Decoder框架不仅仅在文本领域广泛使用,在语音识别、图像处理等领域也经常使用。一般而言,文本处理和语音识别的Encoder部分通常采用RNN模型,图像处理的Encoder一般采用CNN模型。
0.1 自己拓展
0.1.1 attention分类简述
-
soft-attention
软寻址,指的不像一般寻址只从存储内容里面找出一条内容,而是可能从每个Key地址都会取出内容,取出内容的重要性根据Query和Key的相似性来决定。 之后对Value进行加权求和,这样就可以取出最终的Value值,也即Attention值。 本论文用的就是soft-attention
-
hard-attention
(后面看论文了再补过来。好像比较难,因为不能用反向传播)
-
self-attention
指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。 其具体计算过程是一样的,只是计算对象发生了变化而已。
Self Attention可以捕获同一个句子中单词之间的一些句法特征或者语义特征。引入Self Attention后会更容易捕获句子中长距离的相互依赖的特征。
但是Self Attention在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,Self Attention对于增加计算的并行性也有直接帮助作用。这是为何Self Attention逐渐被广泛使用的主要原因。 -
coattention(日后总结补充)
-
transformer的各种attention也日后补充