attention机制

(一)tensorflow入门笔记

(二)RNN,LSTM和GRU原理

(三)attention机制

(四)seq2seq实例详解


背景:

seq2seq模型decoder的初始状态一般直接设为encoder最后的隐藏层状态,但是这样输入中较早的信息很容易丢失,在文本较长的情况下decoder不能很好得获取对应的输入信息。有人提出类似人的注意力机制,给对应的输入部分一个更高的权重,使之被“注意”到,也可以理解为一个对齐的过程。在NLP领域,Dzmitry Bahdanau等人首先提出了soft attention模型,也被称为加性注意力模型[1]。后续出现了一系列改进,包括hard attention,copynet,pointer softmax等等,都是源于attention的思想。

FB和google都尝试抛弃RNN的结构进行创新,google选择的是attention模型,FB选择的是CNN。
个人理解:attention可以视为一个全连接层,看似和CNN很相似,不同之处在于CNN利用卷积层做的是一个局部感知,而attention是全局感知,作用于整个句子。


原理:

attention的本质其实就是计算输入与decoder输出的词的相似度,即if(si,hj){\sum_i f(s_i, h_j)}。方法可以大致分为四类,dot: f=sTh{f = s^T h},general: f=sTWh{f = s^T W h}, concat: f=W[s;h]{f = W [s;h]}, perceptron: f=vTtanh(W1s+W2h){f = v^T tanh(W_1s+W_2h)}

基础seq2seq模型中,decoder每次的输入是[yi1,si1,c{y_{i-1}},s_{i-1},c],这里的前两者是上一个cell的输出和隐藏层状态,c是encoder最后一个cell的隐藏层状态。attention就是将c(h(t))变为c’(h(1),h(2),…,h(t))。

Bahdanau attention
soft attention的原理很简单:
eij=vaTtanh(Wasi1+Uahj){e_{ij} = v_a^T tanh(W_a s_{i-1}+U_a h_j)}

αij=exp(eij)jexp(eij){\alpha_{ij} = \frac{exp(e_{ij})}{\sum_j exp(e_{ij})} }

cij=jαijhj{c_{ij} = \sum_j \alpha_{ij} h_j}

相当于构建了一个以所有encoder隐藏层向量为输入的全连接层,通过BP在训练的时候训练好权重Wa{W_a}hj{h_j}αij{\alpha_{ij}}表示encoder隐藏层向量hj{h_j}的权重,cij{c_{ij}}为语义向量。va{v_a}是一个输入长度的one-hot向量,用来表示输入的词汇。
现在decoder隐藏层向量与前一时刻状态,输出以及语义向量有关:
si=f(si1,yi1,ci){s_i = f(s_{i-1}, y_{i-1}, c_i)}

Luong attention

eij=hiTWasi1{e_{ij} = h_i^T W_a s_{i-1}}

αij=exp(eij)jexp(eij){\alpha_{ij} = \frac{exp(e_{ij})}{\sum_j exp(e_{ij})} }

cij=jαijhj{c_{ij} = \sum_j \alpha_{ij} h_j}

Luong中和了soft attention和hard attention的思想,提出了折中的方法,只考虑附近窗口内的单词的贡献。在选取eij{e_{ij}}上,尝试了点乘和拼接两种,点乘简化了运算过程,提高计算效率。

可以发现左边乘的是h而不是one-hot的v,原因是h包含序列的信息,对生成也是重要的。

hard attention 指只考虑attention分数最高的词,其余词权重归零,优点是节约时间,缺点是丢失了非常多的信息,在图像中表现不错,但NLP中很少用

tensorflow中封装的attention模型暂时只有这两个。

self attention
自注意力机制其实就是除了s{s}h{h}还加入了输出v,三者一起进行attention score打分。比如concat: f=W[s;h;v]{f = W [s;h;v]}


Reference:
Dzmitry Bahdanau, et al., Neural machine translation by jointly learning to align and translate, ICLR 2015 link

Loung, et al., Effective Approaches to Attention-based Neural Machine Translation link

三篇不错的博客:
神经网络机器翻译: Attention Mechanism
Attention Model(注意力模型)学习总结
FB将CNN和Google将Attention用于机器翻译

展开阅读全文

没有更多推荐了,返回首页