• 《【深度语义匹配模型 】》


    【深度语义匹配模型 】原理篇一:表示型

    – 闪念基因 – 个人技术分享深度语义匹配模型系列文章会向大家介绍几种经典的表示型和交互型模型原理及其优缺点,同时后续的实践篇将会介绍匹配模型在智能客服中的实践应用。

    深度语义匹配模型系列文章会向大家介绍几种经典的表示型和交互型模型原理及其优缺点,同时后续的实践篇将会介绍匹配模型在智能客服中的实践应用。

    一、背景

    工业界的很多应用都有在语义上衡量本文相似度的需求,直接目标就是判断两句话是否表达了相同或相似意思,我们将这类需求统称为 “语义匹配”,nlp 中的许多任务都可以抽象为语义匹配任务。语义匹配的相关应用场景主要有搜索引擎、问答系统、推荐系统、文本去重等,主要是为了找到与目标文本最相关的文本,比如在问答系统中找到和问题最相关的答案,在搜索引擎中找到与搜索框中关键词最相关的网页等。

    传统的文本匹配技术有 BoW、TF-IDF、BM25、Jaccard、SimHash 等算法,主要能够解决词汇层面的匹配问题,但基于词汇重合度的匹配算法有很大的局限性:

    词义局限:例如 “苹果” 在不同的语境下表示不同的含义,既可以表示一种水果,也能表示苹果公司。

    结构局限:“深度学习”和 “学习深度” 虽然词汇完全重合,但表达的意思不同。

    二、表示型深度语义匹配模型

    随着深度学习在计算机视觉、语音识别等领域的成功运用,近年来有很多研究致力于将深度神经网络模型应用于自然语言匹配任务,以降低特征工程的成本。

    从匹配模型的发展来看,可以将模型分为:

    单语义模型:对两个句子编码后计算相似度,不考虑句子中短语的局部特征。

    多语义模型:从多个粒度对待匹配的句子进行解读,考虑字、短语等局部特征。

    匹配矩阵模型:考虑待匹配句子的两两交互,交互之后用深度网络提取特征,能获得更深层次的句子之间的联系。

    而换个角度,从模型的本质来看可以分为两种类型: 表示型和交互型 。表示型的模型会在最后一层对待匹配的两个句子进行相似度计算,交互型模型会尽早的让两个句子交互,充分应用交互特征。本次为大家介绍几种表示型的匹配算法。

    表示型的模型更侧重于对表示层的构建,其基本模型结构如下图所示:

    表示型匹配模型的特点是:

    采用 Siamese 结构,共享网络参数。

    对表示层进行编码,使用 CNN, RNN, Self-attention 均可。

    匹配层进行交互计算,采用点积、余弦相似度、高斯距离、相似度矩阵均可。

    表示型匹配模型的代表算法有: DSSM、CDSSM, MV-LSTM, ARC-I, CNTN, CA-RNN, MultiGranCNN 等。

    2.1 DSSM

    DSSM 的全称是 Deep Structured Semantic Models,是匹配模型的鼻祖。原文传送门: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf ,这篇 paper2013 年由微软 Redmond 研究院发表,短小但是精炼。下图为 DSSM 的整体网络结构

    2.1.1 输入层及 word hash

    输入层做的事情是把句子映射到一个向量空间里并输入到深度神经网络(Deep Neural Networks,DNN)中,这里英文和中文的处理方式有很大的不同。

    (1) 英文

    英文的输入方式采用了 word-hashing,其主要目的是减少维度,压缩空间,采用 letter-ngrams 对英文单词进行切分,并以 “#” 作为单词的开头和结尾。本文用的是 letter-trigram,50w 个词的 one-hot 向量空间可以通过 letter-trigram 压缩为一个 3 万维的向量空间,例如单词 “good” 会被切分成(#go,goo,ood,od#)。

    (2) 中文

    在单纯的 DSSM 模型中,中文是按照 “字袋模型” 来处理的,因为汉字部首偏旁特征的研究目前还不很成功。因为中文字个数是有限的,常用的字大概有 15K 左右,而常用的双字大约到百万级别,这里采用字向量(one-hot)作为输入,因此这种做法不会有维度过大的问题。

    2.1.2 表示层

    DSSM 的特征抽取层,其实就是 3 个全连接层串行的连接起来,在 DSSM 中采用 tanh 作为激活函数。

    2.1.3 匹配层

    通过表示层得到了一些 128 维的特征向量,在匹配层采用 cosine 距离 (即余弦相似度) 来表示:

    通过 softmax 函数可以把 Query 与正样本 Doc 的语义相似性转化为一个后验概率:

    在训练阶段,通过极大似然估计,最小化损失函数为:

    2.1.4 模型优缺点分析

    DSSM 的优点在于能够快速的计算多个 query 和 Doc 对之间的语义相似度;相对于词向量的方式,它采用有监督的方法,准确度要高很多,同时单个词或单个字处理不依赖切词的正确与否。缺点是在词向量表示时采用词袋模型,不考虑词语的位置信息,这对语义理解是一个大的损失。此外,DSSM 是弱监督模型,因为引擎的点击曝光日志里 Query 和 Title 的语义信息比较弱,从这种非常弱的信号里提取出语义的相似性或者差别,那就需要有海量的训练样本,因此训练成本会比较高。

    2.2 变种 1: CDSSM

    针对 DSSM 词袋模型丢失上下文信息的缺点,CDSSM(convolutional latent semantic model)2014 年由微软提出,又叫 CLSM。CNN-DSSM 与 DSSM 的区别主要在于输入层和表示层, 与 DSSM 相比,该算法相比原始 DSSM 将近会有 10% 的效果提升。原文传送门 https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2014_cdssm_final.pdf

    2.2.1 输入层

    (1)英文: 除了 DSSM 用到的 letter-trigram,CDSSM 也用了滑动窗口策略。word-trigram 其实就是一个包含了上下文信息的滑动窗口,对窗口里的每个词进行 letter-trigram,将三个向量 concat 起来,最终映射到一个 9 万维的向量空间里

    (2)中文: 采用 one-hot 编码时,依然是使用字向量维度更可控,此处与 DSSM 的中文处理方法一致。

    2.2.2 表示层

    CDSSM 的表示层是将全连接层替换为一个卷积神经网络。

    (1)卷积层: 每个英文单词经过 word hash 之后由一个 30K 大小的向量表示,窗口大小为 3,即将待卷积部分三个单词拼接成一个 90K 的向量,而卷积核为一个 90K * 300 的矩阵,每次卷积输出一个 1*300 的向量。

    (2)池化层: 池化层也是经常和卷积一起配合使用的操作了,它的作用是为句子找到全局的上下文特征,这里之所以选择 max-pooling 是因为,语义匹配的目的是为了找到 query 和 doc 之间的相似度,那幺就需要去找到两者相似的点,max-pooling 则可以找到整个 Feature map 中最重要的点。最终池化层的输出为各个 Feature Map 的最大值,即一个 300*1 的向量。

    (3)全连接层:最后通过全连接层把一个 300 维的向量转化为一个 128 维的低维语义向量。全连接层采用 tanh 函数。

    CDSSM 的最后的损失函数,相似度度量等和 DSSM 一致,这里省略。

    2.2.3 模型优缺点分析

    CDSSM 通过输入层提取了滑动窗口下的上下文信息,又通过卷积层和池化层提取了全局的上下文信息,上下文信息得到较为有效的保留。但因为滑动窗口大小的限制,仍无法获得较长距离的上下文依赖关系

    2.3 变种 2 : LSTM-DSSM

    针对 CDSSM 无法捕获较远距离上下文特征的缺点,有人提出了用 LSTM-DSSM(Long-Short-Term Memory)来解决该问题。原文传送门 https://arxiv.org/pdf/1412.6629.pdf 。这篇文章是对 DSSM 模型的修改,相比于 CDSSM 更简单,毕竟全连接网络是最简单的神经网络,替换一下模型就能提升效果。

    该模型与 DSSM 的本质区别其实就是把 DSSM 里的全连接改成 LSTM。这里的输入层个人感觉也不需要做 word hashing,直接把每个单词映射到一个 word representation,就是 embedding,然后把整个句子送入 LSTM 并训练,拿出最后输出的状态作为隐语义向量,有了这个最后的语义向量后就和 DSSM 模型一样,进行相似度度量,softmax 计算概率等等。

    2.4 变种 3: MV-DSSM

    MV 为 Multi-View,一般可以理解为多视角的 DSSM,原文传送门 https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/frp1159-songA.pdf ,该文章 2016 年由微软发表,并将其用于用户推荐。这个工作同样是对 DSSM 的改进,与 CDSSM 和 LSTM-DSSM 不同的是,它没有改变网络结构,而是从信息源入手解决这个问题。

    放在我们的场景可以这样理解 multi-view: 比如我们的经纪人,可能在 app 上产生了带看信息,也可能在 link 上问了房源修改的问题。不同的信息源都对同一个经纪人进行了一些刻画,所以综合各种信息源可以描述出经纪人画像,然后进行推荐。MV-LSTM 的核心思想是把经纪人的特征与不同的信息源统一到一个相同的语义空间,通过 Cosine 距离表征相关性。这里的每一个信息源与经纪人的匹配都是一个独立的 DSSM 模型,但是共享一个 user 模型

    那幺问题来了

    DSSM 系列的模型看起来在真实文本场景下可行性很高,但不一定适合所有的业务。

    DSSM 是端到端的模型,对于一些要保证较高准确率的场景,最好先用人工标注的有监督的数据,再结合无监督的 w2v 等方法进行语义特征的向量化,效果会更加可控。

    DSSM 是弱监督模型。dssm 的训练样本都是点击曝光日志里的 Query 与 Tiltle,但点击的 title 不一定与 query 是语义匹配的,因此想要从这种非常弱的信号里提取出语义相似性就需要有海量的训练样本。

    DSSM 均使用 cosine 相似度作为匹配的结果,而余弦相似度是无参匹配公式,个人感觉加一层 MLP 会更好一点

    接下来介绍两个 DSSM 系列之外的匹配模型。

    2.5 ARC-I

    ARC-I, ARC-II 模型是 2014 年华为诺亚方舟实验室提出,前者是表示型匹配,后者是交互型匹配(将在下期讲到),原文传送门: https://papers.nips.cc/paper/5550-convolutional-neural-network-architectures-for-matching-natural-language-sentences.pdf . 该模型相比于 DSSM,最大特点是通过逐层构图和合并充分表达句子的词序信息,并且匹配计算公式采用了带参数的计算公式。

    2.5.1 基于 CNN 的句子建模

    本文基于 CNN 为句子建模,对于长度较短的句子作补 0 处理,卷积的计算和传统的 CNN 卷积计算无异,可参考上文的 CDSSM。卷积的作用是从句子中提取出局部的语义组合信息,pooling 的作用是对多种语义组合进行选择,找出置信度高的特征组合

    2.5.2 句子匹配

    从图中可以看出,两个句子分别进行特征提取,得到两个相同且固定长度的向量,向量为句子经过建模后抽象得来的特征信息,然后将这两个向量作为一个多层感知机 (MLP) 的输入,最后计算匹配的分数。

    这个模型比较简单,但最大的缺点是两个句子在建模过程中完全独立,没有任何交互行为,最后抽象为特征信息后再进行匹配计算,因此过早失去了句子间语义交互的机会

    2.6 MV-LSTM

    该模型是 2015 年中国科学院提出,原文传送门: https://arxiv.org/abs/1511.08277 。这篇论文采用双向 LSTM 处理两个句子,然后对 LSTM 的输出进行匹配度计算,作者认为这是一个 multi-view 的过程。

    2.6.1 表示层

    LSTM 能够获取长距离上的特征,但是单向的 LSTM 会使输出受到句尾的影响较大,而双向的 LSTM 能够获得更全面的句子信息。用 Bi-LSTM 同时处理两个待匹配的句子,得到每个时刻的向量表达。

    --> 信息泄露??

    2.6.2 匹配层

    将两个句子各个时刻的向量进行交互,利用张量函数生成交互张量,张量函数的公式如下:

    其中,u,v 分别代表两个向量,Mi,i∈[1,…,c] 是张量的一个切片。Wuv 和 b 是线性变换的参数。f 是非线性函数。经过张量函数变换后的结果是一个向量。然后对匹配矩阵进行 K-Max 的动态池化操作,也就是挑选 K 个最大的特征,最后采用全连接层进行维度压缩和分类。

    该模型的亮点在于提出了一种新的带参数的相似度计算方法,因为语言的表示有多样性,带参数的公式比不带参数的公式更加合理

    三、总结

    本文介绍了六种表示型的深度语义匹配模型,包括四种 DSSM 及其变种和两种改善相似度计算方式的模型。表示型匹配模型的共同特点是:对将要匹配的两个句子分别进行编码与特征提取,最后进行相似度交互计算。其优点是:

    将文本映射为一个简洁的表达,便于储存。

    匹配的计算速度快。

    模型在表示层可以用大量无监督的数据进行预训练。因此非常适合于信息检索这种对存储和速度要求都比较高的任务。

    但缺点是 匹配不仅仅是一元的一一对应,而且是有层次、 有结构的 ,分别从两个对象单独提取特征,很难捕获匹配中的结构信息。如何让两个句子在模型中更早的交互产生交互特征,下期精彩: 【深度语义匹配模型 】原理篇二:交互型。

    四、参考文献

    https://blog.csdn.net/ling620/article/details/95468908

    https://zhuanlan.zhihu.com/p/39920446

    https://www.cnblogs.com/guoyaohua/p/9229190.html

    https://cloud.tencent.com/developer/article/1562482

    http://www.wangqingbaidu.cn/article/dlp1516351259.html

    https://www.jianshu.com/p/c578a77e7111

    作者介绍

    卢新洁,2018 年毕业于澳大利亚新南威尔士大学,毕业后加入贝壳找房语言智能与搜索部,主要从事 NLP 及智能客服相关工作。


    贝壳找房【深度语义匹配模型】原理篇二:交互篇

    - AIQ上期: 贝壳找房【深度语义匹配模型 】原理篇一:表示型 上期我们介绍了六种表示型的深度语义匹配模型,本期将为大家带来六种交互型的深度语义匹配模型。

    上期: 贝壳找房【深度语义匹配模型 】原理篇一:表示型

    上期我们介绍了六种表示型的深度语义匹配模型,本期将为大家带来六种交互型的深度语义匹配模型。

    一、前篇回顾

    上期我们介绍了六种表示型的深度语义匹配模型,表示型的模型更侧重于对表示层的构建,其特点是对将要匹配的两个句子分别进行编码与特征提取,最后进行相似度交互计算。缺点是分别从两个对象单独提取特征,很难捕获匹配中的结构信息。因此可以更早的将两个对象进行交互,获取交互产生的特征,交互型的深度语义匹配模型完美的应用到了交互特征。

    二、交互型深度语义匹配模型

    交互型模型摒弃后匹配的思路,假设全局的匹配度依赖于局部的匹配度,在输入层就进行词语间的先匹配,并将匹配的结果作为灰度图进行后续的建模,其基本模型结构如下图所示:

    交互型匹配模型的特点是:

    1. 捕捉直接的匹配信号,将匹配信号作为特征建模。
    2. 交互层:两文本词与词构成交互矩阵,交互运算类似于 attention,加性乘性都可以
    3. 表示层:负责对交互矩阵进行抽象表征,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 匹配矩阵的构造

    文中提出了三种构造匹配矩阵的方法:

    1. Indicator: 0-1 类型,每个序列对应的词相同为 1,不同为 0。
    2. Cosine: cosine 距离,使用预训练的 Glove 将词转为向量,之后计算序列对应的词的 cosine 距离。
    3. 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

    从图中可以看出,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 输出最终匹配结果。

    三、总结

    本文介绍了六种交互型的深度语义匹配模型。交互型匹配模型的共同特点是:不存在单个文本的表达,从模型的输入开始两段文本就进行了交互,得到细粒度的匹配信息。其优点是:保持细粒度的匹配信息,避免在一段文本抽象成一个表达时,细节的匹配信息丢失。但缺点是:

    • 需要大量的有监督的文本匹配的数据训练。
    • 网络复杂,模型训练的时候资源消耗较大,每一对文档都得完全通过一遍网络

    因此这类模型一般都是用于类似问答系统、翻译模型、对话系统这种语义匹配程度高、句式变化复杂的任务中。

    说了这么多原理,深度语义匹配模型如何在工业界中应用?下期精彩:【深度语义匹配模型】实践篇:匹配在智能客服中的应用。

    四、参考文献

    1. http://cjc.ict.ac.cn/online/onlinepaper/pl-201745181647.pdf
    2. https://www.sohu.com/a/140243692_500659
    3. https://blog.csdn.net/ling620/article/details/95468908
    4. https://blog.csdn.net/coraline_m/article/details/78796786
    5. https://zhuanlan.zhihu.com/p/47580077
    6. https://zhuanlan.zhihu.com/p/72403578
    7. https://blog.csdn.net/Xwei1226/article/details/82081583
    8. https://zhuanlan.zhihu.com/p/50160263

    作者介绍

    卢新洁,2018 年毕业于澳大利亚新南威尔士大学,毕业后加入贝壳找房语言智能与搜索部,主要从事 NLP 及智能客服相关工作。

  • 相关阅读:
    每日总结
    团队冲刺9
    团队冲刺8
    团队冲刺7
    团队冲刺6
    团队冲刺5
    团队冲刺4
    团对冲刺3
    团队冲刺2
    每日博客
  • 原文地址:https://www.cnblogs.com/cx2016/p/12910342.html
Copyright © 2020-2023  润新知