Reasoning about Entailment with Neural Attention
这篇论文主要讲了他们第一次应用深度学习取得了比现阶段人工特征更好的结果(201509),模型架构大体是:LSTM—Attention—FC分类
https://arxiv.org/pdf/1509.06664v1.pdf

LSTM层
他们使用两个不同的LSTM来分别对Premise和Hypothesis进行向前传播,LSTMhypothesis的第一个中间状态 c0 是由LSTMpremise的最后一个中间状态初始化的。他们的说法是,没有必要重复对Hypothesis进行encode(指将hypothesis句子经过和Premise同一个LSTM的处理称为encode),这样在LSTMhypothesis里,会更加关注与premise的语义关联的处理。
attention层
他们提出了两种方法
-
传统方法:将LSTMpremise输出拼接为矩阵Y作为输入向量,LSTMhypothesis的最后一个输出 hN 作为查询向量,使用加性模型计算attention:
M=tanh(WyY+WhhN⨂eL)
α=softmax(wTM)
r=YαT
其中⨂操作是外积,作用等价于 WhhN∈(k×1)与一个1×L 维的纯1向量点乘
最后,通过如下计算得到用于分类的最终输出
h∗=tanh(Wpr+WxhN)
-
Word-by-word Attention:他们的想法是只利用最后一个输出hn作为查询会遇到LSTM的对前面输入记忆的瓶颈,于是迭代地对每一个LSTMhypothesis的输出都用上面的方法进行注意力计算,并在每次计算中使用了上一次计算的输出(即rt−1)。最终得到的rLh以同样的方式处理。
Mt=tanh[WyY+(Whht+Wrrt−1)⨂eL]
αt=softmax(wTMt)
rt=YαLT+tanh(Wtrt−1)
h∗=tanh(WprL+WxhN)
另外他们将Premise和Hypothesis换位输入仅模型并将最后输入合并进行分类,称为双向注意力,这个操作没有带来性能的提高,他们分析是因为蕴藏的含义具有非对称的关系,所以使用相同模型再次encode Hypothesis时可能会造成噪声(这点暂时不太理解)。