原文
使用Seq2Seq简单实现chatbot
深度学习中的注意力机制可以广义地解释为:注意力是一个重要性权重向量。它是输入和输出之间的相似度度量,二者相似度越大,则权重取值越大

Seq2Seq (Sutskever, et al. 2014)模型存在的缺陷:固定长度的上下文向量不能记住长句子。

attention在上下文向量(context vector)和整个源输入之间进行截选,而不是根据解码器最后的隐藏状态建立单一的上下文向量。
因此,上下文向量能够访问整个输入序列,我们无需担心遗忘。源序列和输入序列之间的对齐是通过上下文向量来学习和控制的。通常,上下文向量利用如下三条信息:
编码器隐藏状态(encoder hidden states);
解码器隐藏状态(decoder hidden states);
目标和源之间的对齐(alignment between source and target).
注意力机制

定义

输入序列x:
x = [x1,x2,...,xn{x_1, x_2, ..., x_n}]
目标序列y
y = [y1,y2,...,ym{y_1}, {y_2}, ... , {y_m}]
由上图知,编码器是一个双向RNN,前向隐藏状态为hi\overrightarrow{h_i} ,后向为hi\overleftarrow{h_i}。前后向隐藏状态通过简单的连接来表示整个编码器的状态hi{h_i}。这样做的动机是在一个词的注释中,包含前后向词:hi=[hiT;hiT]T,i=1,...,n{h_i} = {[{\overrightarrow{h_i}}^T;{\overleftarrow{h_i}}^T]^T, i=1, ..., n}解码器具有隐藏状态st=f(st1,yt1,ct),t=1,...,m{s_t = f(s_{t-1}, y_{t-1}, c_t) , t = 1, ..., m}其中ctc_t是编码器输出的隐藏状态的加权和:
ct=i=1nαt,ihic_t = \sum_{i=1}^n\alpha_{t,i}h_i 用于计算yty_t的上下问向量

alphat,i  =align(yt,xi)表示ytxi的对齐程度            =exp(score(st1,hi))i=1nexp(score(st1,hi))表示一些预定义对齐得分的Softmaxalpha_{t, i}\;= align(y_t, x_i)\text{表示${y_t}$与$x_i$的对齐程度} \\\;\;\;\;\;\; \qquad= \frac{exp(score(s_{t-1}, h_i))}{\sum_{i^{'} =1}^nexp(score(s_{t-1}, h_{i^{'}}))}\text{表示一些预定义对齐得分的Softmax}
在Bahadanau’s的论文中,对齐得分(alignment scoreα)\alpha通过一个具有单一隐藏层的前馈网络计算(feed-forward network),这部分网络与模型的其他部分协同训练。计算公式如下:score(st,hi)= vaTtanh(Wa[st;hi])score(s_t, h_i)=\,v_a^Ttanh(W_a[s_t;h_i])其中,vav_aWaW_a是在对齐模型(alignment model)中学习得到的权重矩阵。
Seq2Seq的TensorFlow实现

A Family of Attention Mechanisms

通过注意力机制,目标和源序列之间的依赖关系不在受中间距离的限制。
它在计算机视觉领域的应用有
Show, Attend and Tell: Neural Image CaptionGeneration with Visual Attention 15

Attention Is All You Need 17

Effective Approaches to Attention-based Neural Machine Translation 15

Massive Exploration of Neural Machine TranslationArchitectures 17

总结

以下是几种常见的注意机制及相应的对齐得分函数汇总表:注意力机制以下是对更广泛的注意力机制类别的总结:
注意力机制

Self attention

也称为intra-attention,是一种将单个序列的不同位置关联起来以计算同一序列的表示的注意机制。
这篇文章利用self-attention实现机器阅读Long Short-Term Memory-Networks for Machine Reading 16
Show, Attend and Tell: Neural Image CaptionGeneration with Visual Attention 15 中,self-attention应用到图片上来生成恰当的描述。图像首先由卷积神经网络进行编码,具有自注意的递归网络利用卷积特征映射逐条生成描述性词语。注意力权重的可视化清晰地展示了模型为了输出某个单词而关注图像的哪些区域。
注意力机制

Soft vs Hard Attention

另一种对注意力进进行分类的方法。最初的想法是在《show, attend and tell paper》中提出的。基于注意力是否可以访问整个图像或只访问图像中的一小块:
软(soft attention)注意:对齐权值是在源图像中的所有块中学习并放置的;本质上与Bahdanau 15等的想法相同。
\qquad优点:模型是平滑可微的。
\qquad缺点:当源输入很大时,开销很大。
硬注意:每次只选择图像的一块进行操作。
\qquad优点:推断时,计算更少。
\qquad缺点:模型不可微,需要更复杂的技术来训练,如方差减少或强化学习。(Luong 15)

Global vs Local Attention

Luong等人2015年提出了“全局”和“局部”注意力的概念。全局注意力类似于软的注意,然而局部注意力是一个介于软硬之间的混合,在硬注意力上做了一个改进使它能够可微:模型首先预测当前目标词对齐的对齐位置,然后使用以源位置为中心的窗口来计算一个上下文向量

注意力机制

Neural Turing Machine

Neural Turing Machines 15
Neural Turing Machine

Reading and Writing

Attention Mechanisms

In Neural Turing Machine, how to generate the attention distribution WtW_t depends on the addressing mechanisms: NTM uses a mixture of content-based and location-based addressings.

Pointer Network

Transformer

SNAIL

Self-Attention GAN

相关文章: