BiMPM:Bilateral Multi-Perspctive Matching for Natural Language Sentences

导言

本论文的工作主要是在 'matching-aggregation'的sentence matching的框架下,通过增加模型的特征(实现P与Q的双向匹配和多视角匹配),来增加NLSM(Natural language sentence matching)的accuracy

Relation work

在NLSM中,主要有两个DL的框架:

  • Siamese框架:
    介绍:在该框架中,相同的神经网络编码器(例如,CNN或RNN)被单独地应用于两个输入句子,使得P和Q两个句子中的两个被编码到同一嵌入空间中的句子向量中。 然后,仅基于两个句子向量做出匹配决策。
    优点: a、共享参数使模型更小更容易训练,b、句子矢量可用于可视化,也可以用到句子聚类和其他目的
    缺点:两个句子之间没交互,可能丢失重要信息

  • matching-aggregation 框架
    介绍:先对P和Q两个句子进行跟小粒度的匹配(word or contextual vectors),再对他们匹配的结果进行聚集,最后做出决策。
    优点:抽取更多的两个句子交互性的特征
    缺点:a、仅有word-by-word的匹配,粒度单一 b、P和Q匹配方向单一,只有P←Q的匹配;

  • BiMPM创新点:
    在matching-aggregation基础上,a、增加P→Q和P←Q连个方向的匹配 b、在每个方向增加不同视角的匹配;

Our model essentially belongs to the“matching-aggregation”framework. Given two sentences P and Q, our model first encodes them with a bidirectional Long Short-Term Memory Network (BiLSTM). Next, we match the two encoded sentences in two directions P→Q and P←Q. In each matching direction, let’s say P→Q, each time step of Q is matched against all time-steps of P from multiple perspectives.

模型介绍

Overview

BiMPM模型的目标是学习条件概率分布:

\[Pr(y|P,Q) \]

模型一共5个部分组合而成:

  • Word Representation Layer: 输入的vectorword vectorcharacter vector 拼接成

  • Context Representation Layer: 使用Bi-LSTM对P或Q的每个time-step进行上下文词嵌入(contextual embedding)进行编码。

  • Matching Layer: 使用cosine相似度函数,对经Context Representation层后,P中每个time-stepcontextual embedding与Q的所有(all)time-step进行多个(4个)视角的相似度计算(即P←Q相似度匹配),输出 matching vector。反之,反方向P→Q的相似度匹配亦然。

  • Aggregation Layer: 针对Matching Layer输出P或Q每个 time-stepmatching vector,用Bi-LSTM进行相似度的聚集成固定长度(fixed-matching)的matching vector,并仅仅将Bi-LSTM两个方向最后一个(last) time-stepfixed-matching matching vector 作为该层输出,P与Q分别各输出两个fixed-matching matching vector

  • Prediction Layer: 两层全连接层对4个fixed-matching matching vector 进行总结‘consume’,并用Softmax函数作为输出。

Word Representation Layer

为了增加更多的特征信息,该层输入的词向量采用word +character的形式,增加输入不同粒度的信息。

  • word vector
    维度:300-d
    来源:GloVe 预训练的词向量 or word2vec

  • character vector
    维度:50-d
    来源:用LSTM在其他NLSM任务中训练,初始化为20-d,经过LSTM后输出50-d

  • 输出:将word vector 连接 character vector 句子,该层的输出为 P:\(p_i\) 和 句子 Q:\(q_i\)

        #https://github.com/pengshuang/Text-Similarity/blob/master/models/BiMPM.py
        if self.args.use_char_emb:
            # (batch, seq_len, max_word_len) -> (batch * seq_len, max_word_len)
            seq_len_p = kwargs['char_p'].size(1)
            seq_len_h = kwargs['char_h'].size(1)

            char_p = kwargs['char_p'].view(-1, self.args.max_word_len)
            char_h = kwargs['char_h'].view(-1, self.args.max_word_len)
            
            # 用LSTM 将(max_word_len, char_dim)维输出为 (char_hidden_size)维vector
            # (batch * seq_len, max_word_len, char_dim)-> (1, batch * seq_len, char_hidden_size)
            _, (char_p, _) = self.char_LSTM(self.char_emb(char_p))
            _, (char_h, _) = self.char_LSTM(self.char_emb(char_h))
            # 
            # (batch, seq_len, char_hidden_size)
            char_p = char_p.view(-1, seq_len_p, self.args.char_hidden_size)
            char_h = char_h.view(-1, seq_len_h, self.args.char_hidden_size)

            # (batch, seq_len, word_dim + char_hidden_size)
            # torch.cat是将两个张量(tensor)拼接在一起,cat是concatnate的意思,即拼接,联系在一起。
            # 若矩阵为2维矩阵,按维数0(行)拼接,#按维数1(列)拼接
            p = torch.cat([p, char_p], dim=-1)
            h = torch.cat([h, char_h], dim=-1)

Context Representation Layer

用Bi-LSTM对 P 或 Q 对输入每个time-step(\(p_i\)\(q_i\) )的进行上下文词嵌入编码(contexture embedding coding),即抽出上下文特征信息。
输入:每个time-step ( \(p_i\)\(q_i\) )
输出:每个time-step( \(\overrightarrow{h^p_i}\)\(\overleftarrow{h^p_i}\)\(\overrightarrow{h^q_i}\)\(\overleftarrow{h^q_i}\))

  • 句子 P 的\(p_i\)上下文词嵌入编码:

  • 句子 Q 的\(q_i\)上下文词嵌入编码:

  • 示意图:


Matching Layer (创新点)

Matching Layer 中主要负责 P 与 Q 之间 cosine 相似度的匹配计算。其中,主要创新点有两个(BiMPM:bilateral multi-perspective matching):

0、consine相似度匹配函数

在此,对Matching Layer 中,定义了cosine相似度匹配函数 \(f_m\) ,计算两个向量的相似度,公式如下:

\[m=f_m (v_1,v_2 ;W) \]

其中\(f_m\)\(cosine\) 函数,\(W\)为可训练参数,\(W\in R^{l\times d}\)\(W\)的维度是\(l\times d\)\(l\)为视角数,\(d\)为输入向量的维度)。\(m \in [m_1,...,m_k,...,m_l]\),并且 \(m_k\)表示第\(k\)个视角的相似度值,具体为:

\[m_k=cosine(W_k\circ v_1,W_k\circ v_2) \]

1、bilateral
  • 双向相似度匹配。除了之前相关工作,只有 P 每个 time-step 与 Q 中所有 time-step 的,P←Q的单向相似度匹配外,增加了只有 Q 每个 time-step 与 P 中所有 time-step 的相似度匹配。即增加了P→Q方向的双向相似度匹配,即双向的相似度匹配。增加了P与Q的相似度的特征信息。
2、multi-perspective
  • 多视角相似度匹配。即在P←Q和P→Q中,有单一的每个 time-step 与另一个句子所有(all) time-step相似度匹配,变成每个 time-step 与另一个句子的Full-Matching(所有 time-step 总体相似度)/ Maxpooling-Matching(每个time-step 相似度中最大值) /Attentive-Matching(加权平均 time-step的相似度)/Max-Attentive-Matching 等四个不同视角相似度的匹配。(ps:括号里面为个人理解,不是直译,仅供参考。)

在此,以 \(P ← Q\)foward 方向 \(\overrightarrow{P}\)\(\overrightarrow{Q}\)backward 方向 \(\overleftarrow{P}\)\(\overleftarrow{Q}\) 为例,分别对Full-Matching、Maxpooling-Matching、Attensive-Matching、Max-Attensive-Matching作简要说明。\(P → Q\)\(\overrightarrow{P}\)\(\overrightarrow{Q}\)\(\overleftarrow{P}\)\(\overleftarrow{Q}\) 两个方向上的同理可得。(ps: \(\overrightarrow{P}\) 指 P 在Bi-LSTM的foward放向的 time-step,\(\overleftarrow{P}\) 指 P 在Bi-LSTM 二点backward放向的 time-step .)

  • Full-Matching: 句子P中,每一个time-step \({\overrightarrow h}_i^p\) 都与 句子Q中,foward方向最后一个time-step 输出\({\overrightarrow h}_N^q\),进行相似度匹配计算,公式表示为:

并且,\(\overrightarrow{P}\)\(\overrightarrow{Q}\) 的 Full-Matching 的图示为:

另外, \(\overrightarrow{P}\)\(\overrightarrow{Q}\) 的 Full-Matching 公式,则表示为:

为此,我个人理解为P 中每一个方向(foward/backward)的time-step,都与Q中所有time-step上文或下文(因为foward和backward相似度分开计算的)信息,做一个相似度匹配的计算。这是一个Q全文信息的视角

  • Maxpooling-Matching: 句子P中,每一个 time-step \({\overrightarrow h}_i^p\) 都与 句子Q中,foward方向每一个time-step \({\overrightarrow h}_i^q\),进行相似度计算$ {\overrightarrow m}_i$,并且经过Max-pooling 选取所有 time-step 相似度最大值 \({\overleftarrow m}_i^{max}\),公式表示为:

并且,\(\overrightarrow{P}\)\(\overrightarrow{Q}\) 的 Max-Matching 的图示为:

另外, \(\overrightarrow{P}\)\(\overrightarrow{Q}\) 的 Max-Matching 公式,则表示为:

同样,我个人理解为P 中每一个方向(foward/backward)的time-step,采用Max-pooling选择Q中所有time-step上文或下文相似度最高的信息。这是一个Q最大相似度的视角

  • Attentive-Matching: 句子P中,每一个 time-step \({\overrightarrow h}_i^p\) 都与句子Q中,foward方向所有time-step的加权平均(attentive) \({\overrightarrow h}_i^{mean}\)(权重为cosine距离),进行相似度计算 \({\overrightarrow m}_i^{att}\) 。其中,
    \({\overrightarrow h}_i^{mean}\) 的计算公式为:
    \(.\)


因此,\({\overrightarrow m}_i^{att}\)的相似度计算则为:

并且,\(\overrightarrow{P}\)\(\overrightarrow{Q}\) 的 Attentive-Matching 的图示为:

另外, \(\overrightarrow{P}\)\(\overrightarrow{Q}\) 的 Attentive-Matching 公式,则表示为:


为此,我个人理解为P 中每一个方向(foward/backward)的time-step,与Q中所有time-step上文或下文加权平均值的\({\overrightarrow h}_i^{mean}\),做一个相似度匹配的计算。这是一个Q平均相似度的视角

  • Max-Attensive-Matching: 句子P中,每一个 time-step \({\overrightarrow h}_i^p\) 都与句子Q中,foward方向所有time-step的最大attentive的 \({\overrightarrow h}_i^{max}\),进行相似度计算\({\overrightarrow m}_i^{max-att}\)。(ps:与Max-pooling有点区别,Max-pooling选择所有经\(f_m\)计算后\({\overrightarrow m}_i\)中的最大值,其cosine相似度有可训练参数W参与计算。而这里,是纯粹\({\overrightarrow h}_i^q\)\({\overrightarrow h}_i^q\) 的cosine距离\({\overrightarrow m}_{i,j}\)(其cosine相似度没W参与计算),选择\({\overrightarrow m}_{i,j}\)对应最大的\({\overrightarrow h}_i^q\),再计算出其相似度\({\overrightarrow m}_i^{max-att}\))。另外,Max-Attensive-Matching 的公式与Attensive-Matching 极为相近,区别是\({\overrightarrow h}_i^{mean}\) 变成 \({\overrightarrow h}_i^{max}\) ,而\({\overrightarrow h}_i^{max}\)计算公式为:

\[{\overrightarrow h}_i^{max} ← map( \underset{j \in (1...N)}{\max}({\overrightarrow \alpha}_{i,j})) \]

\(\overrightarrow{P}\)\(\overrightarrow{Q}\) 的 Max-Attentive-Matching 的图示为:

为此,我个人理解为P 中每一个方向(foward/backward)的time-step,与Q中所有time-step上文或下文加权平均值的\({\overrightarrow h}_i^{max}\),做一个相似度匹配的计算。这是一个Q每个time-step最大cosine距离相似度的视角

3、BiMPM与之前Matching-Aggregation之间Matching Layerde的对比

总来的说,BiMPM的Matching Layer与之前的Matching-Aggregation匹配框架相比较:

  • 匹配方向的创新
    之前:单向匹配:\(P ← Q\)\(\overrightarrow{P}\)\(\overrightarrow{Q}\)\(\overleftarrow{P}\)\(\overleftarrow{Q}\)
    BiMPM:双向匹配: \(P ← Q\)\(\overrightarrow{P}\)\(\overrightarrow{Q}\)\(\overleftarrow{P}\)\(\overleftarrow{Q}\) )和 \(P→Q\)\(\overrightarrow{P}\)\(\overrightarrow{Q}\)\(\overleftarrow{P}\)\(\overleftarrow{Q}\) )!

  • 匹配视觉的创新
    之前:单一视觉: Full-Matching
    BiMPM:多种视觉: Full-Matching/ Maxpooling-Matching /Attentive-Matching/Max-Attentive-Matching

  • 每个time-step输出的matching vector形式
    之前:2个matching-vector concatenate\(\overrightarrow{P}\)\(\overrightarrow{Q}\)\(\overleftarrow{P}\)\(\overleftarrow{Q}\) 各单个视角的 matching vector 作 concatenate。
    BiMPM:8个matching-vector concatenate\(\overrightarrow{P}\)\(\overrightarrow{Q}\)\(\overleftarrow{P}\)\(\overleftarrow{Q}\) (或\(\overrightarrow{P}\)\(\overrightarrow{Q}\)\(\overleftarrow{P}\)\(\overleftarrow{Q}\) )各4个视角的 matching vector 作 concatenate。


Aggregation Layer & Prediction Layer

该层将上层输出相似度向量matching-vector \(m_i\),按Bi-LSTMde foward 和backward作信息聚合/特征提取,并将foward 和backward的最后time-step 的 fixed-length matching-vector 输出至2层全连接层的 Prediction Layer 中,最后采用 softmax 作分类。如图示,其中,图中4个绿色的vector为 fixed-length matching-vector:


实验与总结

  • Paraphrase Identification实验

1、BiMPM在NLSM中有效:在Paraphrase Identification实验中,BiMPM的Acc能高于之前state-of-art 2.6%。但对于实际应用,要考虑即训练难度和inference速率。
2、双向和四种视角都对BiMPM有部分促进作用。

  • Naural Language实验

1、BiMPM在inference任务中效果一般,甚至在相对与state-of-art还有差距。
2、虽然BiMPM在Ensemble情况下Acc最高,但也只搞0.5%,个人认为有待商榷。

  • Answer Sentence Selection实验

1、BiMPM在针对不同些数据集效果不同。


  • 总体收获:

1、该模型给我最大的思路是,针对提升NLP任务的性能提升,可以从增加正向逆向与增视角信息的方面考虑(但还是有点炼丹学)。 2、cosine函数作为Matching Layer的输出,可以将其与sigmoid和tanh激活函数作简单比较,这里包含可训练参数W的cosine函数已经可以看作相似度的激活函数。它将P与Q信息投影至一个相似度空间,然后经过Aggregation Layer作相似度的信息聚合,经全连接层分类。

posted @ 2019-08-12 09:00  achun_haha  阅读(629)  评论(0编辑  收藏  举报