目录
前言
我们先简单聊下 attention 模型的引入。以基于 seq2seq 模型的机翻为例,如果 decoder 只用 encoder 最后一个时刻输出的 hidden state, 可能会有两个问题:
- encoder 最后一个 hidden state, 与句子末端词汇的关联较大,难以保留句子起始部分的信息(长距离依赖)
- encoder 按顺序依次接受输入,可以认为encoder 阐述的 hidden state 包含词序信息。所以一定程度上 decoder 的翻译也基本沿着原始句子的顺序依次进行,但实际翻译却未必如此,下面是一个翻译的例子:
英文原句:space and oceans are the new world which scientists are trying to explore.
翻译结果:空间和海洋是科学家试图探索的新世界。
词汇对照如下:
可以看到,翻译的过程并不总是沿着原句从左至右依次进行翻译,例如上面例子的定语从句。
为了一定程度上解决以上的问题,14年的一篇文章Sequence to Sequence Learning with Neural Networks提出了一个有意思的trick,即在模型训练的过程中将原始句子进行反转,取得了一定的效果。
为了更好的解决问题,attention模型开始得到广泛的重视和应用。
正文
hard attention
只关注到某一个位置上的信息,叫做硬性注意力(hard attention)。
硬性注意力有两种实现方式:(1)一种是选取最高概率的输入信息;(2)另一种硬性注意力可以通过在注意力分布式上随机采样的方式实现。
硬性注意力模型的缺点:
硬性注意力的一个缺点是基于最大采样或随机采样的方式来选择信息。因此最终的损失函数与注意力分布之间的函数关系不可导,因此无法使用在反向传播算法进行训练。为了使用反向传播算法,一般使用软性注意力来代替硬性注意力。硬性注意力需要通过强化学习来进行训练。——《神经网络与深度学习》】
soft attention
软性注意力,其选择的信息是所有输入信息在注意力分布下的期望。不同位置的权重不同。
global attention
(未填坑...sorry...)
local attention
指路一篇论文:
文章中指出,local attention可以视为hard attention和soft attention的混合体(优势上的混合),因为它的计算复杂度要低于global attention、soft attention,而且与hard attention不同的是,local attention几乎处处可微,易于训练。
self-attention
self attention也经常被称为intra Attention(内部attention)。
在一般人物的encoder-decoder框架中,输入source和输出target内容是不一样的,比如对于英-中机器翻译来说,source是英文句子,target是对应的翻译出的句子,Attention机制发生在target的元素和source中的所有元素之间。
而self attention顾名思义,指的不是source和target之间的attention机制,而是source内部元素之间或者target内部元素之间发生的attention机制,也可以理解为target = source这种特殊情况下的注意力计算机之。其具体计算过程是一样的,只是计算对象发生了变化而已,所以此处不再赘述其计算过程细节。
引入self-attention后会更容易捕获句子中长距离的相互依赖的特征,因为如果是RNN或LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将二者联系起来,而距离越远,有效捕获的可能性越小。
但是self attention在计算过程中会直接将句子中的任意两个凡此的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,self attention对于增加计算的并行性也有直接帮助作用。这是为何self attention逐渐被广泛使用的主要原因。
这里要是想具体了解可以指路一下这篇博客,是讲Transformer的,在这里就不赘述了(包括其中的核心multi-head attention),或者直接指路两篇论文:
总结
本文对 attention 的五种结构,即 hard attention、soft attention、global attention、local attention、self-attention 进行了具体分析。五种 attention 在计算复杂度、部署难度、模型效果上会有一定差异,实际中还需根据业务实际合理选择模型。
Reference
https://zhuanlan.zhihu.com/p/37835894
https://www.cnblogs.com/guoyaohua/p/9429924.html
https://www.zhihu.com/question/68482809