摘要
匹配自然语言句子对于许多应用(例如信息检索和问答)至关重要。现有的深度模型依赖于单个句子表示或多个粒度表示进行匹配。但是,这种方法无法在匹配过程中很好地捕获上下文相关的局部信息。为了解决这个问题,我们提出了一种新的深度架构,以匹配两个具有多个位置表示形式的句子。具体地,每个位置句子表示是在该位置的句子表示,由双向长短期记忆(Bi-LSTM)生成。最终,通过k-Max池化和多层感知器变换,通过聚合这些不同位置的句子表示之间的交互,最终产生匹配分数。我们的模型具有以下优点:(1)通过使用Bi-LSTM,整个句子的丰富上下文被用来捕获每个位置句子表示中的上下文局部信息; (2)通过与多个位置句子表示匹配,可以灵活地在句子中聚合不同的重要上下文本地化信息以支持匹配; (3)通过对不同任务(例如问答和句子填空)的实验证明了我们模型的优越性。
1.介绍
语义匹配是自然语言处理(NLP)中许多应用的关键任务,例如信息检索(Li和Xu,2013),问答(Berger等,2000)和释义识别(Dolan,Quirk和Brockett,2004)。以问答为例,给定一对问题和答案,需要一个匹配函数来确定这两个句子之间的相似程度。
最近,基于深度神经网络的模型已在该领域中应用并取得了一些重要进展。许多深度模型遵循该范例,首先将整个句子表示为单个分布式表示,然后计算两个向量之间的相似度以输出匹配分数。 例子包括DSSM(Huang等,2013),CDSMM(Shen等,2014),ARC-1(Hu等,2014),CNTN(Qiu和Huang,2015)和LSTM-RNN(Palangi等,2015)。 通常,这种范例非常简单易行,但是,主要缺点在于,将这样一个复杂的句子压缩为单个向量时会丢失重要的局部信息。以一个问题和两个答案为例:
Q
:
“
W
h
i
c
h
t
e
a
m
s
w
o
n
t
o
p
t
h
r
e
e
i
n
t
h
e
W
o
r
l
d
C
u
p
?
”
Q: “Which~~teams~~won~~top~~three~~in~~the~~World~~Cup?”
Q:“Which teams won top three in the World Cup?”
A
1
:
“
G
e
r
m
a
n
y
i
s
t
h
e
c
h
a
m
p
i
o
n
o
f
t
h
e
W
o
r
l
d
C
u
p
.
”
A1: “Germany~~is~~the~~champion~~of~~the~~World~~Cup.”
A1:“Germany is the champion of the World Cup.”
A
2
:
“
T
h
e
t
o
p
t
h
r
e
e
o
f
t
h
e
E
u
r
o
p
e
a
n
C
u
p
a
r
e
S
p
a
i
n
,
N
e
t
h
e
r
l
a
n
d
s
a
n
d
G
e
r
m
a
n
y
.
”
A2: “The~~top~~three~~of~~the~~European~~Cup~~are~~Spain, Netherlands~~and~~Germany. ”
A2:“The top three of the European Cup are Spain,Netherlands and Germany.”
我们可以看到诸如“前三名”和“世界杯”之类的关键字对于Q在A1和A2之间确定是哪个答案来说非常重要。当加入“前三名”时,显然A2比A1好;如果加入“世界杯”,我们会得出相反的结论。但是,通过将复杂的句子直接表示为单个紧凑向量,单句表示方法无法很好地捕获此类重要的本地信息(Bahdanau,Cho和Bengio 2014)。
其他一些工作着眼于将多粒度的考虑带入到匹配过程,例如单词,短语和句子级别的表示形式。例子包括ARC-II(Hu等人2014),RAE(Socher等人2011),DeepMatch(Lu和Li 2013),Bi-CNN-MI(Yin和Schutze¨2015a)和MultiGranCNN(Yin和Schutze 2015b) 。它们可以缓解上述问题,但距离完全解决语义匹配问题还差很远。这是因为它们被限制为通过直接应用涉及单词和短语级别的表示来很好地捕获上下文相关的本地信息。以下面的答案为例:
A
3
:
“
T
h
e
t
o
p
t
h
r
e
e
a
t
t
e
n
d
e
e
s
o
f
t
h
e
E
u
r
o
p
e
a
n
C
u
p
a
r
e
f
r
o
m
G
e
r
m
a
n
y
,
F
r
a
n
c
e
a
n
d
S
p
a
i
n
.
”
A3: “The~~top~~three~~attendees~~of~~the~~European~~Cup~~are~~from~~Germany, France~~and~~Spain.”
A3:“The top three attendees of the European Cup are from Germany,France and Spain.”
显然,对Q而言,A2优于A3,尽管它们都具有重要的关键字“前三名”。这是因为从整个句子的角度来看,“前三名”的两个术语具有不同的含义。A2中的“前三名”专注于谈论前三名足球队,而A3中的“前三名”则表明来自不同国家的前三名参与者。但是,现有的多个粒度深度模型无法很好地区分两个“前三名”。这主要是因为单词/短语级别表示形式是局部的(通常取决于固定窗口大小的上下文),因此仅限于从以上角度反映这些单词/短语的真实含义(例如“前三名”)。
从以上分析可以看出,两个句子之间的匹配程度要求从上下文局部的角度来表示句子。这种关键的发现促使我们从一个句子的多个角度进行匹配。也就是说,我们可以在匹配过程中使用多个句子表示形式,每个句子表示形式都集中在不同的局部信息上。
在本文中,我们提出了一种新的深度神经网络架构,用于与多个位置句子表示进行语义匹配,即MV-LSTM。首先,每个位置句子表示被定义为一个特定的句子表示。在本文中,我们采用双向长短期记忆(Bi-LSTM)来生成此类位置句子表示形式。专门针对每个位置,Bi-LSTM可以获得两个隐藏的向量,以便在关注该位置时从两个方向反映整个句子的含义。位置句子表示可以通过直接将其连接而生成。第二步是对这些位置句子表示之间的交互进行建模。在本文中,采用三种不同的操作来建模两个句子表示间的相互作用:余弦,双线性和张量层。最后,我们采用k-Max池化策略,以自动选择前k个最强的交互信号,并通过多层感知器(MLP)对其进行汇总以产生最终匹配分数。我们的模型是端到端的,并且通过反向传播和随机梯度下降从训练数据中自动学习所有参数。
我们可以看到我们的模型可以在匹配过程中很好地捕获上下文相关的局部信息。与单句表示方法相比,MV-LSTM通过引入多个位置的句子表示可以很好地捕获重要的局部信息。与多个粒度深层模型相比,MV-LSTM利用Bi-LSTM生成每个位置语句表示,利用丰富的上下文来确定局部信息的重要性。最后,我们在两项任务上进行了广泛的实验,即问答和句子填空,以验证这些论点。我们的实验结果表明,MV-LSTM在这两项任务上的性能均优于几个现有基准,包括ARC-1,ARC-II,CNTN,DeepMatch,RAE,MultiGranCNN和LSTM-RNN。
这项工作的贡献在于三个方面:
- 提出与多个位置的句子表示进行匹配,以捕获重要的上下文相关局部信息;
- 一种新的深度架构,用于聚合那些位置句子表示形式的交互以进行语义匹配,每个位置句子表示形式都由Bi-LSTM生成;
- 通过两个任务(即问答和句子填空)的实验来展示我们模型的优势。
2.我们的方法
在本节中,我们介绍了用于将两个句子以多个位置句子表示的形式进行匹配的新的深度架构,即MV-LSTM。如图1所示,MV-LSTM由三部分组成:首先,每个位置句子表示是一个特定位置的表示,由双向长短期记忆(Bi-LSTM)生成;其次,不同位置表示之间的相互作用通过不同的相似度函数形成相似度矩阵/张量。最后,最终的匹配得分是通过k-Max池化和多层感知器对此类相互作用进行汇总而产生的。
2.1 步骤1:位置句子表示
每个位置句子表示形式都需要反映网络到达该位置时整个句子的表示形式。因此,使用Bi-LSTM生成这种表示形式是很自然的,因为LSTM可以捕获句子中的长期和短期依存关系。此外,它具有很好的属性,可以在表示过程中强调该位置附近的单词(Bahdanau,Cho和Bengio 2014)。
首先,我们对LSTM和Bi-LSTM进行介绍。长短期记忆(LSTM)是循环神经网络的一种高级类型,它通过进一步使用记忆单元和门来学习序列中的长距离依赖性(Hochreiter和Schmidhuber 1997)。 LSTM有几种变体(Greff等人2015),我们采用(Graves,Mohamed和Hinton 2013)中使用的一种常见实现方式,但没有(Palangi等人2015)那样的peephole连接。给定输入句子
S
=
(
x
0
,
x
1
,
.
.
.
,
x
T
)
S =(x_0,x_1,...,x_T)
S=(x0,x1,...,xT),其中
x
t
x_t
xt是在位置
t
t
t处的单词嵌入。LSTM输出位置
t
t
t的表示形式
h
t
h_t
ht,如下所示。
其中
i
,
f
,
o
i,f,o
i,f,o分别表示输入门,遗忘门和输出门。
c
c
c是存储在记忆单元中的信息,
h
h
h是隐藏状态。与单向LSTM相比,双向LSTM通过使用两个单独的LSTM处理来自两个方向的数据以利用从前和将来的上下文(Schuster和Paliwal 1997)。一个LSTM在正向处理输入序列,而另一个LSTM在反向处理输入。因此,对于每个位置,我们可以获得两个向量
h
→
t
\overrightarrow {h}_t
ht和
h
←
t
\overleftarrow {h}_t
ht。
直观上,
h
→
t
\overrightarrow {h}_t
ht和
h
←
t
\overleftarrow {h}_t
ht从两个方向反映整个句子的含义,因此,将该位置的句子表示形式定义为它们的组合是合理的。具体而言,对于每个位置
t
t
t,通过将
h
→
t
\overrightarrow {h}_t
ht和
h
←
t
\overleftarrow {h}_t
ht连接起来生成第
t
t
t个位置句子表示
p
t
p_t
pt,即
p
t
=
[
h
→
t
T
,
h
←
t
T
]
T
p_t = [\overrightarrow {h}_t^T,\overleftarrow {h}_t^T]^T
pt=[htT,htT]T,其中
(
⋅
)
T
(·)^T
(⋅)T表示转置操作,在后面也将使用。
2.2 步骤2:两个句子间交互
基于位置句子表示,我们可以对不同位置的一对句子之间的交互进行建模。许多相似性函数可用于建模
p
X
i
p_{Xi}
pXi和
p
Y
j
p_{Yj}
pYj之间的交互,其中
p
X
i
p_{Xi}
pXi和
p
Y
j
p_{Yj}
pYj分别代表两个句子
S
X
S_X
SX和
S
Y
S_Y
SY的第
i
i
i和第
j
j
j个位置句子表示。在本文中,我们使用三个相似度函数,包括余弦,双线性和张量层。 给定两个向量
u
u
u和
v
v
v,这三个函数将输出如下的相似性得分
s
(
u
,
v
)
s(u,v)
s(u,v)。
(1)余弦相似度
余弦相似函数是建模交互的常用函数。相似度分数被视为两个向量的夹角:
s
(
u
,
v
)
=
u
T
v
∣
∣
u
∣
∣
⋅
∣
∣
v
∣
∣
,
s(u,v)=\frac{u^Tv}{||u||\cdot ||v||},
s(u,v)=∣∣u∣∣⋅∣∣v∣∣uTv,
其中
∣
∣
⋅
∣
∣
||\cdot||
∣∣⋅∣∣表示L2正则。
(2)双线性函数
双线性函数还考虑了不同维度之间的相互作用,因此与余弦函数相比可以捕获更复杂的相互作用。具体而言,相似度得分的计算如下:
s
(
u
,
v
)
=
u
T
M
v
+
b
,
s(u,v)=u^TMv+b,
s(u,v)=uTMv+b,
其中
M
M
M是重新加权不同维度之间的相互作用的矩阵,b是偏差。当应用双线性函数来计算句子
S
X
S_X
SX和
S
Y
S_Y
SY的两个对应位置句子表示
p
X
i
p_{Xi}
pXi和
p
Y
j
p_{Yj}
pYj之间的相互作用时,显然双线性可以很好地捕获
h
X
i
→
\overrightarrow{h_{Xi}}
hXi和
h
Y
j
←
\overleftarrow{h_{Yj}}
hYj之间的相互作用,而余弦函数则不能。因此,与余弦函数相比,双线性函数可以捕获两个位置句子表示之间更有意义的交互。
(3)张量层
张量层比上述两个函数更强大,它可以回滚到其他相似性指标,例如双线性和点积。在建模两个向量之间的相互作用时,它也显示出极大的优势(Socher等人2013b; Socher等人2013a; Qiu和Huang 2015)。这就是我们在本文中选择它作为交互函数的原因。除了像双线性和余弦那样输出标量值之外,张量层还输出矢量,其计算公式如下所述:
s
(
u
,
v
)
=
f
(
u
T
M
[
1
:
c
]
v
+
W
u
v
[
u
v
]
+
b
)
,
s(u,v)=f(u^TM^{[1:c]}v+W_{uv}\left[\begin{matrix}u\\v\end{matrix}\right]+b),
s(u,v)=f(uTM[1:c]v+Wuv[uv]+b),
其中
M
i
,
i
∈
[
1
,
.
.
.
,
c
]
M_i,i∈[1,...,c]
Mi,i∈[1,...,c]是张量参数的一层,
W
u
v
W_{uv}
Wuv和
b
b
b是线性部分的参数。
f
f
f是一个非线性函数,在本文中我们使用修正线性单元
f
(
z
)
=
m
a
x
(
0
,
z
)
f(z)= max(0,z)
f(z)=max(0,z)(Glorot,Bordes和Bengio 2011),因为它总是输出一个正值,该值可以作为相似性兼容。
2.3 步骤3:交互整合
现在我们介绍架构的第三步,即如何整合不同位置句子表示之间的这种交互以输出两个句子的匹配分数。
(1)K-Max池化
两个句子之间的匹配通常由一些较强的交互信号确定。因此,我们使用k-Max池化来自动提取矩阵/张量中的前k个最强的交互值,类似于(Kalchbrenner,Grefenstette和Blunsom 2014)。对于交互矩阵,我们扫描整个矩阵,并根据降序将前k个值直接返回以形成向量
q
q
q。对于交互张量,返回张量的每个切片的前k个值以形成向量,最后,将这些向量进一步串联到单个向量
q
q
q上。
k-Max池化是有意义的:假设我们使用余弦相似度,当
k
=
1
k=1
k=1时,它直接输出矩阵中最大的交互值,这意味着在我们的模型中仅考虑“最佳匹配位置”;而
k
k
k大于1表示我们利用前
k
k
k个匹配位置进行语义匹配。因此,很容易检测出最佳匹配位置在哪里,以及是否需要聚合来自不同位置的多个交互以进行匹配。我们的实验表明,最佳匹配位置通常不是第一个或最后一个位置,并且通过在多个位置上进行匹配可以获得更好的结果。
(2)多层感知
最后,我们使用MLP通过汇总由k-Max池化过滤的强交互信号来输出匹配分数。具体而言,首先将通过k-Max池化获得的特征向量
q
q
q带入全连接隐藏层,以获得更高级别的表示
r
r
r。 然后通过线性变换获得匹配分数
s
s
s:
r
=
f
(
W
r
q
+
b
r
)
,
s
=
W
s
r
+
b
s
,
r=f(W_rq+b_r),s=W_sr+b_s,
r=f(Wrq+br),s=Wsr+bs,
其中
W
r
W_r
Wr和
W
s
W_s
Ws代表参数矩阵,而
b
r
b_r
br和
b
s
b_s
bs是相应的偏差。
(3)模型训练
对于不同的任务,我们需要利用不同的损失函数来训练我们的模型。例如,如果将任务形式化为排名问题,我们可以利用成对排名损失(例如铰链损失)进行训练。 给定一个三元组
(
S
X
,
S
Y
+
,
S
Y
−
)
(S_X,S^+_Y,S^-_Y)
(SX,SY+,SY−),其中当
S
Y
+
S^+_Y
SY+与
S
X
S_X
SX匹配时,其评分高于
S
Y
−
S^-_Y
SY−,则损失函数定义为:
L
(
S
X
,
S
Y
+
,
S
Y
−
)
=
m
a
x
(
0
,
1
−
s
(
S
X
,
S
Y
+
)
+
s
(
S
X
,
S
Y
−
)
)
\mathcal L(S_X, S^+_Y, S^−_Y) = max(0, 1 − s(S_X, S^+_Y) + s(S_X, S^−_Y))
L(SX,SY+,SY−)=max(0,1−s(SX,SY+)+s(SX,SY−))
其中
s
(
S
X
,
S
Y
+
)
s(S_X,S^+_Y)
s(SX,SY+)和
s
(
S
X
,
S
Y
−
)
s(S_X,S^-_Y)
s(SX,SY−)是相应的匹配分数。
该模型的所有参数,包括单词嵌入,Bi-LSTM,交互函数和MLP的参数,均由反向传播和随机梯度下降共同训练。具体来说,我们在训练的所有参数上都使用Adagrad(Duchi,Hazan和Singer 2011)。
2.4 讨论
MV-LSTM作为特殊情况可以涵盖LSTM-RNN(Palangi等人,2015年)。具体来说,如果仅考虑由单个方向性LSTM生成的每个句子的最后位置句子表示,则MV-LSTM会直接归结为LSTM-RNN。因此,与LSTM-RNN相比,MV-LSTM更通用,并且能够利用更多的位置句子表示进行匹配。
MV-LSTM隐式考虑了多个粒度。通过使用Bi-LSTM(具有在表示句子时涉及长期和短期依赖关系的能力),MV-LSTM有可能捕获重要的n-gram匹配模式。此外,与使用固定窗口大小的基于CNN的模型相比,MV-LSTM灵活地自适应地包含重要的粒度。