论文贡献: 提出了一种双向的多角度匹配模型(bilateral multi-perspective matching).

Method

Model Overview

1. Word Representation Layer

The goal of this layer is to represent each word in P and Q with a d-dimensional vector.
输入向量由两部分组成:一部分是固定的词向量(Glove或者word2vec),另一部分是字符向量构成的词向量.字符向量是随机初始化然后输入到LSTM学习得到的.

2. Context Representation Layer

这一层目的是将上下文信息融合到 P 和 Q 每个 time-step 的表示中,这里利用 Bi-LSTM 去得到 P 和 Q 每个time-step 的上下文向量。

3. Matching Layer

模型的关键层.
比较句子 P 的每个上下文向量(time-step)和句子 Q 的所有上下文向量(time-step),比较句子 Q 的每个上下文向量(time-step)和句子 P 的所有上下文向量(time-step)。为了比较一个句子中某个上下文向量(time-step)和另外一个句子的所有上下文向量(time-step),这里设计了一种 multi-perspective 的匹配方法 \otimes ,用于获取两个句子细粒度的联系信息。

这层的输出是两个序列,序列中每一个向量是一个句子的某个 time-step 相对于另一个句子所有的 time-step 的匹配向量。

4. Aggregation Layer

这层主要功能是聚合两个匹配向量序列为一个固定长度的匹配向量。对两个匹配序列分别使用 Bi-LSTM,然后连接 Bi-LSTM 最后一个 time-step 的向量(4个)得到最后的匹配向量。

5. Prediction Layer

这层目的是计算概率 P r ( y P , Q ) Pr(y|P, Q) Pr(yP,Q).前一次的输出连接两层前馈神经网络,之后再加上softmax输出结果.

Multi-prespective Matching Operation

重点介绍下论文提出的多角度匹配算法.
论文中提到多角度匹配运算 \otimes 有以下两步:

1.定义多角度余弦匹配方程 f m f_m fm来比较两个向量 m = f m ( v 1 , v 2 ; W ) m = f_m(v_1, v_2;W) m=fm(v1,v2;W)
这里 v 1 , v 2 v_1,v_2 v1,v2是两个d-dimensional向量, W W W是一个 l × d l\times d l×d维的学习参数, m m m是一个 l l l维向量,其中 m k m_k mk表示第k个角度,具体计算方式 m k = c o s i n e ( W k v 1 , W k v 2 ) m_k = cosine(W_k\circ v_1, W_k\circ v_2) mk=cosine(Wkv1,Wkv2) 这里 \circ 表示element-wise multiplication.

2.基于上步提到的 f m f_m fm, 定义了四种匹配策略来比较一个句子的某个 time-step 与另一个句子的所有 time-step.

  • 第一种 Full-Matching
    取一个句子的某个 time-step 和另一个句子的最后一个 time-step 做比较
  • 第二种 Maxpooling-Matching
    取一个句子的某个 time-step 和另一个句子的所有 time-step 比较后取最大
  • 第三种 Attentive-Matching
    首先计算一个句子的某个 time-step 和另一个句子的所有 time-step 的余弦相似度,类似 Attention 矩阵。
然后计算attentive向量
最后, 计算
  • 第四种 Max-Attentive-Matching
    和第三种类似,不过最后attentive vector是求max而不是mean.

    对句子每一个time-step都使用了以上四种匹配策略,之后将这8个匹配向量进行concatenate.

实验

实验设置

word_embedding: 300(freeze)
OOV: initialize randomly
character-composed embedding: 初始化为20维向量, 然后将每个词输入到50维的lstm
BiLSTM hidden layer: 100
dropout: 0.1
损失函数: cross entropy
optimizer: ADAM
learning rate: 0.001

实验结果

实验了三个任务:

  • Paraphrase Identification
  • Natural Language Inference
  • Answer Sentence Selection
    数据集1 Quora Question pairs

数据集2 SNLI

数据集3 TREC-QA WikiQA

复现

论文复现github地址