导言

本论文的工作主要是在 '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作相似度的信息聚合,经全连接层分类。

BiMPM:Bilateral Multi-Perspctive Matching for Natural Language Sentences的更多相关文章

  1. 《Bilateral Multi-Perspective Matching for Natural Language Sentences》(句子匹配)

    问题: Natural language sentence matching (NLSM),自然语言句子匹配,是指比较两个句子并判断句子间关系,是许多任务的一项基本技术.针对NLSM任务,目前有两种流 ...

  2. Bilateral Multi-Perspective Matching for Natural Language Sentences---读书笔记

    自然语言句子的双向.多角度匹配,是来自IBM 2017 年的一篇文章.代码github地址:https://github.com/zhiguowang/BiMPM 摘要          这篇论文主要 ...

  3. Convolutional Neural Network Architectures for Matching Natural Language Sentences

    interaction  n. 互动;一起活动;合作;互相影响 capture vt.俘获;夺取;夺得;引起(注意.想像.兴趣)n.捕获;占领;捕获物;[计算机]捕捉 hence  adv. 从此;因 ...

  4. 《Convolutional Neural Network Architectures for Matching Natural Language Sentences》句子匹配

    模型结构与原理 1. 基于CNN的句子建模 这篇论文主要针对的是句子匹配(Sentence Matching)的问题,但是基础问题仍然是句子建模.首先,文中提出了一种基于CNN的句子建模网络,如下图: ...

  5. Parsing Natural Scenes and Natural Language with Recursive Neural Networks-paper

    Parsing Natural Scenes and Natural Language with Recursive Neural Networks作者信息: Richard Socher richa ...

  6. 《Enhanced LSTM for Natural Language Inference》(自然语言推理)

    解决的问题 自然语言推理,判断a是否可以推理出b.简单讲就是判断2个句子ab是否有相同的含义. 方法 我们的自然语言推理网络由以下部分组成:输入编码(Input Encoding ),局部推理模型(L ...

  7. 如何将 Cortana 与 Windows Phone 8.1 应用集成 ( Voice command - Natural language recognition )

    随着 Windows Phone 8.1 GDR1 + Cortana 中文版的发布,相信有很多用户或开发者都在调戏 Windows Phone 的语音私人助理 Cortana 吧,在世界杯的时候我亲 ...

  8. Natural language style method declaration and usages in programming languages

    More descriptive way to declare and use a method in programming languages At present, in most progra ...

  9. Natural Language Processing with Python - Chapter 0

    一年之前,我做梦也想不到会来这里写技术总结.误打误撞来到了上海西南某高校,成为了文科专业的工科男,现在每天除了膜ha,就是恶补CS.导师是做计算语言学的,所以当务之急就是先自学计算机自然语言处理,打好 ...

随机推荐

  1. scala 数据结构(五):队列 Queue

    1 队列 Queue-基本介绍 队列的说明 1)队列是一个有序列表,在底层可以用数组或是链表来实现. 2)其输入和输出要遵循先入先出的原则.即:先存入队列的数据,要先取出.后存入的要后取出 3)在Sc ...

  2. Maven 专题(三):为什么要用Maven

    1 真的需要吗? Maven 是干什么用的?这是很多同学在刚开始接触 Maven 时最大的问题.之所以会提出这个问题, 是因为即使不使用 Maven 我们仍然可以进行 B/S 结构项目的开发.从表述层 ...

  3. Tomcat的基本使用及相关知识的概述(超详细版)

    絮絮叨叨: 在深入了解Tomcat源码之前,本来是想亲自写一篇Tomcat的基本使用教程的,在网上兜兜转转发现了这篇博客:https://blog.csdn.net/weixin_40396459/a ...

  4. 一文读懂Java中的动态代理

    从代理模式说起 回顾前文: 设计模式系列之代理模式(Proxy Pattern) 要读懂动态代理,应从代理模式说起.而实现代理模式,常见有下面两种实现: (1) 代理类关联目标对象,实现目标对象实现的 ...

  5. OSCP Learning Notes - Exploit(3)

     Modifying Shellcode 1. Search “vulnserver exploit code” on the Internet. Find the following website ...

  6. Ethical Hacking - NETWORK PENETRATION TESTING(24)

    Detecting suspicious activities using Wireshark You can use make the MAC address of the router to st ...

  7. Ethical Hacking - NETWORK PENETRATION TESTING(10)

    WPA Craking WPA was designed to address the issues in WEP and provide better encryption. The main is ...

  8. JAVA学习过程中遇到的BUG

    Java异常 1.NullPointException java.lang.NullPointException,就是我们经常遇到的空指针异常. java是没有指针的,这里说的"java指针 ...

  9. git安装并与远程仓库关联相关配置

    git是当前最流行的版本控制系统,下面简单记录一下git的安装及其与远程仓库的关联. git安装 打开git官网,下载对应的安装包. 双击运行安装包,安装过程中可以直接选择默认配置,一路next下去. ...

  10. 工程能力UP | LightGBM的调参干货教程与并行优化

    这是个人在竞赛中对LGB模型进行调参的详细过程记录,主要包含下面六个步骤: 大学习率,确定估计器参数n_estimators/num_iterations/num_round/num_boost_ro ...