上期我们介绍了六种表示型的深度语义匹配模型,本期将为大家带来六种交互型的深度语义匹配模型。
一、前篇回顾
上期我们介绍了六种表示型的深度语义匹配模型,表示型的模型更侧重于对表示层的构建,其特点是对将要匹配的两个句子分别进行编码与特征提取,最后进行相似度交互计算。缺点是分别从两个对象单独提取特征,很难捕获匹配中的结构信息。因此可以更早的将两个对象进行交互,获取交互产生的特征,交互型的深度语义匹配模型完美的应用到了交互特征。
二、交互型深度语义匹配模型
交互型模型摒弃后匹配的思路,假设全局的匹配度依赖于局部的匹配度,在输入层就进行词语间的先匹配,并将匹配的结果作为灰度图进行后续的建模,其基本模型结构如下图所示:
交互型匹配模型的特点是:
- 捕捉直接的匹配信号,将匹配信号作为特征建模。
- 交互层:两文本词与词构成交互矩阵,交互运算类似于 attention,加性乘性都可以。
- 表示层:负责对交互矩阵进行抽象表征,CNN、RNN 均可。
交互型匹配模型的代表算法有: ARC-II、MatchPyramid、DeepMatch、ESIM、ABCNN、BIMPM 等。
2.1 ARC-II
ARC-I,ARC-II 2014 年由华为诺亚方舟实验室提出, ARC-I 是表示型匹配模型,上篇有讲解,ARC-II 是交互型匹配模型,中文名是卷积网络深度匹配模型,通过中文名称就可以 get 到两个点:卷积、深度,所以可以理解为多次应用卷积计算来建模,原文传送门 https://papers.nips.cc/paper/5550-convolutional-neural-network-architectures-for-matching-natural-language-sentences.pdf
.
句子中每个词表示为词向量后,每个句子构成一个矩阵,用滑动窗口来选择词向量组作为基本单元进行卷积操作。假设有两个句子 x 和 y,首先从 sentence x 中选取一个向量 a,再从 sentence y 中将每一个向量和 a 进行卷积操作,通过这种操作,将两个句子中的向量进行两两组合,构成 2D 矩阵,该矩阵作为两个句子交互作用的一个初步表示。随后的卷积以这个 2D 矩阵为基础进行“卷积 +池化”的操作若干次,最后得到一个描述两个句子整体关联的向量,最终由一个 MLP 来综合这个向量的每个维度得到匹配值。
ARC-II 模型考虑了句子中词的顺序和交互信息,从而可以对两个句子的匹配关系进行相对完整的描述;然而还缺乏对于细微匹配关系的捕捉,在精确匹配上面还存在缺陷。
2.2 PairCNN
这篇文章 2015 年出自 University of Trento,也是用 CNN 模型对文本进行语义表示。原文传送门:https://dl.acm.org/doi/pdf/10.1145/2766462.2767738
.
模型先分别对 query 和 document 做卷积和 max 池化,得到文本的语义向量,接着通过 M 矩阵变换得到语义向量的相似度,然后把 query 语义向量、query&document 的语义相似度、document 语义向量、外部特征拼接成 n 维向量,外部特征的加入是作者考虑到可能无法在词表中找到某些专有名词,从而会造成信息缺失,因此文中使用 word overlap(单词重叠)和 IDF word overlap(IDF 加权后的单词重叠)作为外部特征,以加强 query 和 document 之间的关联关系。将拼接好的 n 维向量输入一个非线性变换隐层,最终用 softmax 做概率归一化。用 softmax 的输出作为监督信号,采用 cross-entropy 作为损失函数进行模型训练。
本文的改进点包括:1. 将 query 和 document 的语义向量及其相似度拼接成新的特征向量输入 MLP;2.可以在模型的输入向量中方便地融入外部特征。
2.3 MatchPyramid
虽然 ARC-II 和 PairCNN 更早地让两段文本进行了交互,但是这个交互的意义其实并不明确,层次化的过程也比较模糊。MatchPyramid 重新定义了两段文本交互的方式---- 匹配矩阵,该模型 2016 年由中科院提出,原文传送门 https://arxiv.org/abs/1602.06359
。作者基于此模型,在 2017.3-2017.6 Kaggle 的 Quora Question Pairs 比赛上,取得了全球第四的好成绩。
MatchPyramid 模型的核心思想是层次化的构建匹配过程,借鉴了 CNN 在处理图像时的原理,因为 CNN 就是在提取像素、区域之间的相关性,进而提取图像的特征。我们看看文中举的例子:Query1:down the ages dumplings and noodles were popular in China. Query2: down the ages noodles and dumplings were famous Chinese food. 作者将每个单词看成一个像素,那么对于两个单词数为 M,N 的句子,构建相似度矩阵的大小就是 M*N。
2.3.1 匹配矩阵的构造
文中提出了三种构造匹配矩阵的方法:
- Indicator: 0-1 类型,每个序列对应的词相同为 1,不同为 0。
- Cosine: cosine 距离,使用预训练的 Glove 将词转为向量,之后计算序列对应的词的 cosine 距离。
- Dot Product: 点积,同上,但是将 cosine 距离改为点积距离。
2.3.2 卷积层细节
利用两层的 CNN 对相似度矩阵进行特征抽取,这里要注意的是由于上一层的相似度矩阵 shape 不一致,在第一层 CNN 后面进行 maxpool 的时候,要使用动态 pool。最后用两层的全连接对 CNN 的结果进行转换,使用 sigmoid 激活,使用 softmax 函数得到最终分类概率。
总的来说,通过多层的卷积,MatchPyramid 可以在单词或者句子级别自动捕获重要的匹配模式。
2.4 ABCNN
AB 为 Attention-Based,即基于注意力机制的卷积神经网络。这篇文章来自于慕尼黑大学信息语言处理中心,原文传送门:https://www.transacl.org/ojs/index.php/tacl/article/view/831/194
。本文的作者也采用了 CNN 的结构来提取特征,并用 attention 机制进行进一步的特征处理,作者一共提出了三种 attention 的建模方法。
ABCNN 的基础是 BCNN(Bi-CNN),BCNN 的网络结构如下图所示,四层分别是:输入层、卷积层、池化层和输出层。
BCNN 方式就是正常的一个 CNN 网络架构,并没有进行交互产生交互信息,因此引入了 Attention 机制,文章提了三种结构:ABCNN-1, ABCNN-2 和 ABCNN-3.
2.4.1 ABCNN-1
ABCNN-1 是在输入层之后,卷积层之前添加注意力矩阵 A,A 用来定义两个句子之间词的关系。图中红色矩阵与 BCNN 的输入层一致,表示 word 级别的词向量,蓝色矩阵为 phrase 级,是高一级的词向量表示。蓝色矩阵是由注意力矩阵 A 和红色词向量矩阵计算生成。注意力矩阵 A 的计算方式为:
即 Matrix A 中数值 Ai,j 的计算是由 sentence1 第 i 个单词的向量与 sentence2 中第 j 个单词的距离度量。作者使用的是两个向量的欧几里德距离。得到了 attention 矩阵 A,则可以计算句子的 attention 特征:
接下来将句子的原始词向量表示和 Attention 特征表示叠加,输入到卷积层进行计算。
2.4.2 ABCNN-2
ABCNN-2 是在卷积层之后,池化层之前添加注意力矩阵 A。其计算方式与 ABCNN-1 相同,sentence0 第 j 个词的词权重为 a0j,sentence1 第 j 个词的词权重为 a1j。
ABCNN-2 模型中的 pooling 方法,是根据计算出的 Attention 权重向量加权求和计算得到的。公式如下:
其中表示第 i 个 sentence 中第 r 个词池化后的特征,表示第 i 句话第 r 个词卷积后的词向量。剩余层操作和 BCNN 相同。
2.4.3 ABCNN-3
- 本文地址:贝壳找房【深度语义匹配模型】原理篇二:交互篇
- 本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出
从图中可以看出,ABCNN-3 是 ABCNN-1 和 ABCNN-2 的结合,卷积层和池化层都添加了 attention 机制,这里就不再多说了。
2.5 ESIM
2017 年提出的 ESIM, 全称为 Enhanced Sequential Inference Model,该模型本身是用来文本推理的,给定前提 p 和假设 h,判断 p 和 h 是否有关联,也可以用来作文本匹配。该模型综合应用了 BiLSTM 和注意力机制,在文本匹配中效果十分强大,号称短文本匹配神器。原文传送门 https://arxiv.org/abs/1609.06038
,下图中左侧为 ESIM 的模型结构。
ESIM 一共包含四部分,输入层、交互层、聚合层和预测层。
2.5.1 输入层
输入一般可以采用预训练好的词向量或者添加 embedding 层,接下来就是一个 BiLSTM,作用是为 embedding 做特征提取,最后把其隐藏状态的值保留下来。
2.5.2 交互层
接下来就是需要分析这两个句子之间的联系了,这层是 ESIM 的点睛之笔, 主要在句子基础上表征了两个句子词语之间的关系,并凸显了某一句中的单词对另一句各单词之间的产生的影响。首先,使用点积的方式计算 a 句中第 i 个词和 b 句中第 j 个词之间的 attention 权重。
然后对两句各单词之间进行交互性计算,该词与另一句子联系越大,则计算出的值也会越大:
上述两步称为 Local Inference Modelling,相当于先用 attention 机制计算出 a 句某一单词和 b 句中各个单词的权重,然后再将权重赋予 b 句各个单词,用来表征 a 句中的该单词,形成一个新的序列,b 句亦然。简单来说可以这样理解:a 句中有个单词“boy”,首先分析这个词和另一句话中各个词之间的联系,计算得到的结果标准化之后作为权重,用另一句话中的各个词向量按照权重去表示"boy"。
得到了新的序列之后进行差异分析,判断两个句子之间的联系是否足够大,将每句话的原 BiLSTM 序列和新序列进行差和积操作,并将所有序列拼接起来形成一个序列。这步称为 Enhancement of local inference information。
2.5.3 聚合层
在综合所有信息之后进行一个全局分析,使用一个组合层来合成增强的局部推断信息。此处再用 BiLSTM 进行一次编码,将新序列信息内容在内部进行一个融合,使用 relu 函数降低模型复杂度。
2.5.4 预测层
对聚合层输出进行一个 pooling 操作,并将 pooling 后的结果简单拼接为最后进入分类器的向量。
将向量 V 放入一个多层感知器进行分类,输出层使用 softmax,得到最后的预测结果。
2.6 Bimpm
Bimpm(Bilateral Multi-perspective Matching) 即双向多角度匹配,2017 年由 IBM 提出,原文传送门:https://arxiv.org/pdf/1702.03814.pdf
。 相信在阅读了 ESIM 之后对“双向”有了一定的理解,该模型的亮点在于如何“多角度”进行匹配。
2.6.1 输入层
该模型的输入层与 ESIM 略有差别:字向量经过一层 LSTM,取最后一个 time 作为 char embedding ,然后与预训练好的词向量进行拼接,拼接之后经过 BiLSTM,保存两个 query(P,Q)的每个 time-step 值。
2.6.2 匹配层
在匹配层,模型采用了 4 种方法进行匹配 BiLSTM 输出的上下文向量,每种都是双向的,下面仅从一个方向 P->Q 解释匹配算法,另一方向与其相同。
1. full-matching:在这种匹配策略中,用 P 中每一个 time step 的上下文向量(包含前向和后向)分别与句子 Q 中最后一个 time step 的上下文向量(包含前向和后向)计算匹配值,即
2. maxpooling-matching:在第一种匹配方法中选取最大的匹配值,即
3. attentive-matching:先对 P 和 Q 中每一个 time step 的上下文向量(包含前向和后向)计算余弦相似度,得到相似度矩阵
然后将相似度矩阵作为 Q 中每一个 time step 权重,通过对 Q 的所有上下文向量(包含前向和后向)加权求和,计算出整个句子 Q 的注意力向量
最后,将 P 中每一个 time step 的上下文向量(包含前向和后向)分别与句子 Q 的注意力向量计算匹配值
4. max-attentive-matching:与 attentive-matching 的匹配策略相似,不同之处在于选择句子 Q 所有上下文向量中余弦相似度最大的向量作为句子 Q 的注意力向量。
2.6.3 聚合层与输出层
获得 16 个匹配向量后(P->Q,Q->P 各 8 个),再次使用 BiLSTM 将两个序列的匹配向量聚合成一个固定长度的匹配向量。经过两层全连接层后,softmax 输出最终匹配结果。
三、总结
本文介绍了六种交互型的深度语义匹配模型。交互型匹配模型的共同特点是:不存在单个文本的表达,从模型的输入开始两段文本就进行了交互,得到细粒度的匹配信息。其优点是:保持细粒度的匹配信息,避免在一段文本抽象成一个表达时,细节的匹配信息丢失。但缺点是:
- 需要大量的有监督的文本匹配的数据训练。
- 网络复杂,模型训练的时候资源消耗较大,每一对文档都得完全通过一遍网络。
因此这类模型一般都是用于类似问答系统、翻译模型、对话系统这种语义匹配程度高、句式变化复杂的任务中。
说了这么多原理,深度语义匹配模型如何在工业界中应用?下期精彩:【深度语义匹配模型】实践篇:匹配在智能客服中的应用。
四、参考文献
- http://cjc.ict.ac.cn/online/onlinepaper/pl-201745181647.pdf
- https://www.sohu.com/a/140243692_500659
- https://blog.csdn.net/ling620/article/details/95468908
- https://blog.csdn.net/coraline_m/article/details/78796786
- https://zhuanlan.zhihu.com/p/47580077
- https://zhuanlan.zhihu.com/p/72403578
- https://blog.csdn.net/Xwei1226/article/details/82081583
- https://zhuanlan.zhihu.com/p/50160263
作者介绍
卢新洁,2018 年毕业于澳大利亚新南威尔士大学,毕业后加入贝壳找房语言智能与搜索部,主要从事 NLP 及智能客服相关工作。
注意:本文归作者所有,未经作者允许,不得转载