文章目录
论文链接地址
Bilateral Multi-Perspective Matching for Natural Language Sentences
github
https://github.com/KATEhuang920909/deep_text_match
前言
\quad 本文将介绍文本匹配算法Bi-MPM,由IBM的 zhiguo wang 等人提出,对于两个句子P和Q,该模型首先利用BiLSTM encoder将两个句子进行编码,然后从两个方向对以及编码的句子进行匹配,P到Q和Q到P,在每个方向上,例如从P到Q,P的每一个step和Q的step进行匹配,Q可以选择last step、Maxpooling、Attentive等方式参与匹配,这样可以获得与P的维度相同的输出匹配向量,最后送入全连接神经网络,并最终输出匹配值。该模型在释义识别、自然语言推理、问答系统达到了SOTA。
任务
该任务是文本匹配任务NLSM(natural language similarity matching),我们将任务的输入看作一个三元组(P,Q,y),其中 P = ( p 1 , p 2 , . . . , p M ) , Q = ( q 1 , q 2 , . . . , q N ) P=(p_1,p_2,...,p_M),Q =(q_1,q_2,...,q_N) P=(p1,p2,...,pM),Q=(q1,q2,...,qN), y 是 p i 和 q i y是p_i和q_i y是pi和qi的匹配标签, y ∈ { 0 , 1 } y \in \{0,1\} y∈{0,1}。
BiMPM模型结构
\quad
整体结构如下图所示:
\quad 模型由 词语表示层、文本表示层、匹配层、聚合层和输出层组成, ⨂ \bigotimes ⨂为多角度的匹配操作。
词语表示层(Word Representation Layer)
\quad 该层的主要目的是表征P和Q中的每一个词语到d维空间中,该d维向量主要由两部分组成:词向量和字符级向量,词向量可以由于训练好的向量模型获取,如word2vec、glove、emlo、bert等,字符级向量采用随机初始化方式送入到LSTM当中参与训练,然后与词向量拼接,这样就可以获得P和Q的词向量序列 P : [ p 1 , . . . , p M ] , Q : [ q 1 , . . . , q N ] P:[p_1,...,p_M],Q:[q_1,...,q_N] P:[p1,...,pM],Q:[q1,...,qN]。
文本表示层(Context Representation Layer)
该层的主要目的是将上下文信息整合到P和Q的每一个时间步长当中,这里使用BiLSTM去编码来获得文本的embedding,对于P,有:
h
i
p
⇀
=
L
S
T
M
⇀
(
h
i
−
1
p
⇀
,
p
i
)
i
=
1
,
.
.
.
,
M
\overrightharpoon{h_i^p} = \overrightharpoon{LSTM}(\overrightharpoon{h_{i-1}^p},p_i) \quad i =1,...,M
hip=LSTM(hi−1p,pi)i=1,...,M
h
i
p
⇀
=
L
S
T
M
↼
(
h
i
+
1
p
↼
,
p
i
)
i
=
M
,
.
.
.
,
1
\overrightharpoon{h_i^p} = \overleftharpoon{LSTM}(\overleftharpoon{h_{i+1}^p},p_i) \quad i=M,...,1
hip=LSTM(hi+1p,pi)i=M,...,1
对于Q,有:
h
j
q
⇀
=
L
S
T
M
⇀
(
h
j
−
1
q
⇀
,
q
i
)
j
=
1
,
.
.
.
,
N
\overrightharpoon{h_j^q} = \overrightharpoon{LSTM}(\overrightharpoon{h_{j-1}^q},q_i) \quad j =1,...,N
hjq=LSTM(hj−1q,qi)j=1,...,N
h
j
q
⇀
=
L
S
T
M
↼
(
h
j
+
1
q
↼
,
q
i
)
j
=
N
,
.
.
.
,
1
\overrightharpoon{h_j^q} = \overleftharpoon{LSTM}(\overleftharpoon{h_{j+1}^q},q_i) \quad j=N,...,1
hjq=LSTM(hj+1q,qi)j=N,...,1
匹配层(matching layer)
该层是怎个算法模型的核心,目的是比较其中一个句子的每一步文本特征和另一个句子的所有时间步的文本特征。即 P → Q 和 Q → P P \to Q 和Q \to P P→Q和Q→P,这里我们设计了多种匹配操作 ⨂ \bigotimes ⨂,通过该操作以后输出两个文本每一个时间不长的输出向量
⨂ \bigotimes ⨂操作(Multi-perspective Matching Operation)
多角度的匹配操作
⨂
\bigotimes
⨂由以下两步组成:
首先,我们选取余弦函数作为匹配函数
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)
\quad
其中,
v
1
和
v
2
v_1和v_2
v1和v2是两个d维向量,W是一个可以训练的参数,维度为
l
×
d
l \times d
l×d ,l和d分别为query和document的时间步长,
m
是
l
维
度
的
向
量
m
=
[
m
1
,
m
2
,
.
.
.
,
m
l
]
m是l维度的向量m =[m_1,m_2,...,m_l]
m是l维度的向量m=[m1,m2,...,ml].计算公式为:
m
k
=
c
o
s
i
n
e
(
W
k
⋅
v
1
,
W
k
⋅
v
2
)
m_k = cosine(W_k \sdot v_1,W_k \sdot v_2)
mk=cosine(Wk⋅v1,Wk⋅v2)
我们定义了四种策略将P的每一个时间步长去匹配Q的所有时间步长,具体如下:
1.全匹配(Full-Matching)(a):
在这个匹配策略中,每一个时间步长
h
i
p
⇀
(
h
i
p
↼
)
\overrightharpoon{h_i^p}(\overleftharpoon{h_i^p})
hip(hip)和Q的最后一步进行匹配
h
N
q
⇀
(
h
1
q
↼
)
\overrightharpoon{h_N^q}(\overleftharpoon{h_1^q})
hNq(h1q)
m
i
f
u
l
l
⇀
=
f
m
(
h
i
p
⇀
,
h
N
q
⇀
;
W
1
)
\overrightharpoon{m_i^{full}}=f_m(\overrightharpoon{h_i^p},\overrightharpoon{h_N^q};W^1)
mifull=fm(hip,hNq;W1)
m
i
f
u
l
l
↼
=
f
m
(
h
i
p
↼
,
h
1
q
⇀
;
W
2
)
\overleftharpoon{m_i^{full}}=f_m(\overleftharpoon{h_i^p},\overrightharpoon{h_1^q};W^2)
mifull=fm(hip,h1q;W2)
2.最大池化匹配(maxpooling-Matching)(b):
在这个策略中,每一个时间步长
h
i
p
⇀
(
h
i
p
↼
)
\overrightharpoon{h_i^p}(\overleftharpoon{h_i^p})
hip(hip)和另一个文本中的每一个时间步长做匹配
h
j
q
⇀
(
h
j
q
↼
)
\overrightharpoon{h_j^q}(\overleftharpoon{h_j^q})
hjq(hjq),然后返回匹配值最大的元素。公式如下:
m
i
m
a
x
⇀
=
m
a
x
j
∈
(
1
,
.
.
.
,
N
)
f
m
(
h
i
p
⇀
,
h
j
q
⇀
;
W
3
)
\overrightharpoon{m_i^{max}}=max_{j \in (1,...,N)}f_m(\overrightharpoon{h_i^p},\overrightharpoon{h_j^q};W^3)
mimax=maxj∈(1,...,N)fm(hip,hjq;W3)
m
i
m
a
x
↼
=
m
a
x
j
∈
(
1
,
.
.
.
,
N
)
f
m
(
h
i
p
↼
,
h
j
q
↼
;
W
4
)
\overleftharpoon{m_i^{max}}=max_{j \in (1,...,N)}f_m(\overleftharpoon{h_i^p},\overleftharpoon{h_j^q};W^4)
mimax=maxj∈(1,...,N)fm(hip,hjq;W4)
3.注意力匹配(attentive-Matching)(c)
首先,我们计算出每一个时间步长
h
i
p
⇀
(
h
i
p
↼
)
\overrightharpoon{h_i^p}(\overleftharpoon{h_i^p})
hip(hip)和另一个文本中的每一个时间步长
h
j
q
⇀
(
h
j
q
↼
)
的
匹
配
值
\overrightharpoon{h_j^q}(\overleftharpoon{h_j^q})的匹配值
hjq(hjq)的匹配值,:
α
i
,
j
⇀
=
c
o
s
i
n
e
(
h
i
p
⇀
,
h
j
q
⇀
)
\overrightharpoon{\alpha_{i,j}} = cosine(\overrightharpoon{h_i^p},\overrightharpoon{h_j^q})
αi,j=cosine(hip,hjq)
α
i
,
j
↼
=
c
o
s
i
n
e
(
h
i
p
↼
,
h
j
q
↼
)
\overleftharpoon{\alpha_{i,j}} = cosine(\overleftharpoon{h_i^p},\overleftharpoon{h_j^q})
αi,j=cosine(hip,hjq)
然后将
α
i
,
j
⇀
(
α
i
,
j
↼
)
作
为
h
j
q
⇀
(
h
j
q
↼
)
\overrightharpoon{\alpha_{i,j}}(\overleftharpoon{\alpha_{i,j}})作为\overrightharpoon{h_j^q}(\overleftharpoon{h_j^q})
αi,j(αi,j)作为hjq(hjq)的权重值,然后进行加权相加,公式如下:
h
i
m
e
a
n
⇀
=
∑
j
=
1
N
α
i
,
j
⇀
.
h
j
q
⇀
∑
j
=
1
N
α
i
,
j
⇀
\overrightharpoon{h_i^{mean}} = \frac{\sum_{j=1}^N\overrightharpoon{\alpha_{i,j}}.\overrightharpoon{h_j^q}}{\sum_{j=1}^N\overrightharpoon{\alpha_{i,j}}}
himean=∑j=1Nαi,j∑j=1Nαi,j.hjq
h
i
m
e
a
n
↼
=
∑
j
=
1
N
α
i
,
j
↼
.
h
j
q
↼
∑
j
=
1
N
α
i
,
j
↼
\overleftharpoon{h_i^{mean}} = \frac{\sum_{j=1}^N\overleftharpoon{\alpha_{i,j}}.\overleftharpoon{h_j^q}}{\sum_{j=1}^N\overleftharpoon{\alpha_{i,j}}}
himean=∑j=1Nαi,j∑j=1Nαi,j.hjq
最后将每个时间步长
h
i
p
⇀
(
h
i
p
↼
)
\overrightharpoon{h_i^p}(\overleftharpoon{h_i^p})
hip(hip)和对应的加权向量进行匹配
4.最大注意力匹配(Max-Attentive-Matching)(d):
这种策略与第三种类似,区别是不用加权相加,而是取匹配值的最大值对应的向量进行匹配。
然后,我们使用了该四种策略,共八种输出结果,然后进行拼接,获得最终的向量表示。
聚合层
采用双向LSTM,分别将匹配曾获得的输出向量送入,得到双向的结果,然后进行拼接。
预测层
该层我们采用两层全连接神经网络,然后采用softmax函数获得输出值。
实验参数
1.预向量模型Glove获取静态词向量:
维度:300
OOV词:随机初始化
2.字向量:初始化向量长度为20
3.LSTM hidden_size:50
4.BiLSTM hidden_size:100
5.drop out 比例:0.1
6.优化器:ADAM
7.学习率:0.001