(三)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输出的词的相似度,即 ∑ i f ( s i , h j ) {\sum_i f(s_i, h_j)} ∑if(si,hj)。方法可以大致分为四类,dot: f = s T h {f = s^T h} f=sTh,general: f = s T W h {f = s^T W h} f=sTWh, concat: f = W [ s ; h ] {f = W [s;h]} f=W[s;h], perceptron: f = v T t a n h ( W 1 s + W 2 h ) {f = v^T tanh(W_1s+W_2h)} f=vTtanh(W1s+W2h)
基础seq2seq模型中,decoder每次的输入是[ y i − 1 , s i − 1 ,