Attention mechanism在深度学习中就像是万金油般的存在,涉及领域广泛,深受练丹师的喜爱。
推荐一篇综述 -> An Attentive Survey of Attention Models
我会大体介绍attention发展过程中几篇经典的paper,从机器翻译领域萌芽再到各个领域遍地开花.
Neural Machine Translation by Jointly Learning to Align and Translate
这是attention的经典之作,最初是针对机器翻译领域,在传统的encoder-decoder 结构中会将整个输入语句(source) 编码成一个固定长度的向量作为context 帮助decoder解码。无论输入语句多长,都被压缩为一个固定长度的向量,可能会丢失source中很多重要的信息,原文中用“squash”来形容这个过程,可想这种方式的暴力。
原文表述
而在这篇文章上,作者借鉴了人类“注意力”,使得在decoder中解码t时刻target的状态时,只对source中部分片段而不是全部,而注意哪些片段则是由模型、下游任务所决定。对于需要格外“注意”的赋予大权重,对于可有可无的赋予小权重(嵌入在模型中,是可微的)
从上图可以看出,在decoder 中t 时刻,yt的计算依靠与yt-1,st和ct, st,st是decoder中RNN在t时刻的隐状态。ct是根据当前时刻target 信息st与source 的hidden state 计算attention获得,意味着在decoder阶段并不是对encoder传过来的信息全盘皆收,而是根据需要有选择的侧重其中的某些部分,将目标端和源端联系了起来, 比如at,i表示目标端y t对源端xi的关注度,关注度越高说明xi对翻译yt越有用. 这里的atte