DR-BiLSTM: Dependent Reading Bidirectional LSTM for Natural Language Inference

前言

看了这一篇,做一个笔记,万一以后又做任务二了

前人的工作(不重要)

在这里插入图片描述

模型(*)

在这里插入图片描述

按照自己的理解,将其encoding层和inference层。首先明确模型输入: u = [ u 1 u_1 u1, u 2 u_2 u2…], v = […]里面的元素都是300维的glove词向量。

encoding层

先说 “encode u depending on v”:

  • 首先在v上做bilstm,得到两个返回值,分别是 每一个时间步的隐藏层输出 和 (最后时间步的隐藏层,记忆细胞)
  • 然后把 (最后时间步的隐藏层,记忆细胞)作为下一个bilstm的 隐藏层、记忆细胞的初始化权重,这个bilstm在u上面做, 也得到两个返回值,但我们只需要前面那个(u^),可以把它理解为: 融合了 v的信息, 并且也捕捉了u的上下文信息之后的, 在u上的每一个时间步的隐藏层输出

所以 "encode v depending on u"也是一样~

在这里插入图片描述

attention

计算一个权重表

假设u序列本来是n长度,v是m长度的。 u序列经过上面的bilstm变成了 nx2d(记为X);v序列经过上面的bilstm变成了mx2d(记为Y)。然后只要计算 X x Y T Y^T YT就得到了一个 n x m 的权重矩阵。
在这里插入图片描述

利用这个权重表,用u表示v;用v表示u

下面做的就是,我再计算一个东西,就比如 在这里插入图片描述
这个东西虽然叫u,但其实是在 v上面做加权求和得到的一个向量。这里面的"权"就是上面计算出来的。
用一句白话说:下面的 u i u_{i} ui(~不会打…) 是由v中m 个向量加权求和得到的。
在这里插入图片描述

利用上面计算的东西(也就是attention得到的产物)

这里使用了三种方式:

  • 简单的拼接
    在这里插入图片描述
  • 相减
    在这里插入图片描述
  • 对应元素相乘
    在这里插入图片描述
  • 最后把他们一起拼接起来
    在这里插入图片描述
    上面那个东西是 n(或者是m) x 8d 维的矩阵,然后经过一个线性层+RELU,得到一个 n(或者是m) x 2d维的东西:
    在这里插入图片描述

inference

首先看看我们已经有的东西:p和q。p∈n x2d, q∈2d。接下来我们首先要得到的,当然是句子的向量表示,不然怎么分类呢。

得到句子向量表示

重复上面

其实上面的p和q,跟我们一开始的输入:u和v是差不多的。所以我们重复上面encoding部分的操作。在这里插入图片描述

maxpooling on word

为什么要maxpooling on word?因为论文同时利用了一开始的输入p(q)以及经过上面操作得到的产物。换句话说,现在一个单词的隐藏层向量有两个,那么我们对于一个单词,都可以从这两个中选择较大的。

这里我认为的maxpooling可以有两种解释:

  • 考虑一个位置的词向量,它可以选择-和^中max的哪一个
  • 考虑一个位置的词向量,它的所有位置都是在-和^对应位置max的那一个(原文应该用的这个)

maxpooling on sentence

上面的操作得到了 nx4d 和 mx4d 这两个矩阵。分别代表 一开始的 句子u 和 句子v 到目前为止 各自的 矩阵表示。 我们希望 用一个 向量来表示一个句子。

这里的maxpooling也可以有两种解释:

  • 考虑一个句子,它可以选择n个词向量中最大的那一个
  • 考虑一个句子,它4d维上的每一个句子,都是在n个词向量中对应位置上选择了max的那一个

最后我们终于对输入的两个句子,都得到了 4d维的 向量表示

MLP

然后将上面两个向量进行拼接,输入到线性层:
在这里插入图片描述

其它细节

论文做了模型的集成
在这里插入图片描述
论文的实验细节
在这里插入图片描述

结果
在这里插入图片描述

问题

"supplementary material"在哪儿呢…