作者:朱帅
学校:华中科技大学
研究方向:文本匹配,对话系统
原文链接,点击“阅读原文”直达:
https://zhuanlan.zhihu.com/p/111769969
1. 关于文本匹配
文本匹配是NLP的基础任务之一,按照论文中的实验对传统的文本匹配任务进行分类,大致可以分为文本检索(ad-hoc),释义识别(Paraphrase Identification),自然语言推理(NLI)以及问答匹配(QA)。除此之外,像实体消歧等其他任务都可以采用文本匹配的思路来解决。不同的文本匹配任务,虽然实现的目标有所不同,但是从模型层面都是大同小异的,针对不同任务的模型大多是可以通用的,只不过效果上可能会有所差异。文本匹配任务的目标是:给定一个query和一些候选的documents,从这些documents中找出与query最匹配的一个或者按照匹配度排序;本文将两个待匹配的文本定用
text_left
和
text_right
,前者表示query文本,后者表示documents中一个候选文本。传统的文本匹配任务还是采用基于特征的方式,无非就是抽取两个文本tf-idf、BM25、词法等层面的特征,然后使用传统的机器学习模型(LR,SVM)等进行训练。虽然基于特征的方法可解释性较好,但是这种依赖于人工寻找特征和不断试错的方法,泛化能力就显得比较一般,而且由于特征数量的限制,导致参数量受到限制,模型的性能比较一般。2012年以来,深度学习技术的快速发展以及GPU的出现,使得人们有机会并且有能力训练大型的深度神经网络。深度学习技术开始对计算机视觉、自然语言处理等各个领域产生了冲击,作为自然语言处理的一个分支,文本匹配当然也不例外。2013年,微软提出 DSSM (2013),率先将深度学习技术引入到了文本检索任务中,开启了文本匹配方向的深度学习时代。不同于传统基于特征的匹配方式,深度学习时代的文本匹配方法可以概括为两种类型:基于表征(representation)的匹配和基于交互(interaction)的匹配方式。
所谓基于表征的匹配方式,初始阶段对两个文本各自单独处理,通过深层的神经网络进行编码,得到文本的表征,然后基于得到的文本表征,采用相似度计算的函数得到两个文本的相似度。
而基于交互的匹配方式,则认为在最后阶段才计算文本的相似度会过于依赖表征的质量,同时也会丢失基础的文本特征(比如词法、句法等),所以提出尽可能早的对文本特征进行交互,捕获更基础的特征,最后在高层基于这些基础匹配特征计算匹配分数。
2. 基于表征的文本匹配
根据不同匹配方式出现的时间顺序以及当下的流行度,首先介绍基于表征的匹配方式。上文提到的DSSM (2013) 就是最早的基于表征的匹配方法,整体流程比较简单:首先基于bag-of-words得到文本的向量表征,再基于word-hashing方法降维,接着就是多层的线性层得到最终128维的文本Embedding,最后对两个文本Embedding计算cosine相似度得到相似度分数。其实,这篇论文也基本奠定了基于表征匹配的基本范式(paradigm),即Embedding层->Encoding层->DNN层->Prediction层。之后的基于表征的匹配大抵都是类似的流程。2014年,微软继续提出 CDSSM (2014),基本流程和DSSM完全一样,无非就是将MLP替换成了CNN模型,可以提取N-gram特征,不再赘述。其实,基于表征的方式可创新的地方并不多,Embedding层是固定的,Encoding层无非再加上各种char-embedding,或者entity-embedding来引入先验知识;可以稍微有点创新的就只有DNN层,但是由于表征模型从头到尾对两个待匹配文本都是独立处理的,能做的只能是怎么得到更好的表征向量,很容易想到的就是把DNN替换为RNN型网络或者后来的Attention网络;Prediction层则是寻找不同的相似度计算函数,或者直接使用一层线性层代替。2014年,华为也提出了一种基于表征的匹配模型 ARC I (2014),基本范式和上述结构一致。之后,还有一些基于表征的匹配方法,包括孪生网络Siamese Network (2016)以及其变种,但是在2017年之后基本就没有基于表征的模型出现了。
3. 基于交互的文本匹配
基于表征的方式简单有效,但是其缺点也非常明显。表征用来表示文本的高层语义特征,但是文本中单词的关系、句法的特征高层的表征比较难捕获,很难判定一个表征是否能很好的表征一段文本。要想能够建模文本各个层级的匹配关系,最好能够尽早地让文本产生交互。通俗来讲就是,认识的越早,两个文本对彼此的了解就可能越多。2014年,华为在ARC I的那篇文章中,提出了 ARC II (2014) 。首先,对输入语句得到每个单词的Embedding,然后经过一层的CNN得到两个句子N-gram级别的表征(这个使用多个不同大小的卷积核,得到多个N-gram级别表征);接着计算基于每一个N-gram级别的表征计算交互矩阵(即一个句子中某一个位置的向量和另一个句子中其他位置的向量计算相似度,可以是点积或者cosine相似度),并在channel维度上进行拼接得到3维的张量;对上面得到的3维张量采用2D-CNN,再经过max-pooling得到最终的表征;Flatten之后经过MLP得到最终的匹配分数。从2014年开始,中科院郭嘉丰老师团队开始在文本匹配领域发力,发表了多篇经典的论文,包括MV-LSTM (2015),MatchPyramid (2016),DRMM (2016),Match-SRNN (2016)等等。前两者基本是对ARC II的补充,MV-LSTM主要是使用Bi-LSTM对Embedding进行强化编码,而MatchPyramid则提出了计算交互矩阵时多种匹配模式(Indicator, Cosine, Dot)。前面说过文本匹配中不同任务的模型大多是通用的,但针对不同任务的特点也可以有一些针对性的创新。上文提到的DRMM就是针对检索领域任务的特点进行了创新。传统的文本匹配大多考虑语义匹配(Semantic Matching),而检索任务中的匹配通常是相关性匹配(Relevance Matching),关键词在其中起到至关重要的作用。DRMM在计算得到匹配矩阵之后,采用match histogram的方式将query中每个单词的相似度的值映射到不同的bin中,
[1, 1]
这个bin表示exact match,
[-1, 1)
区间均匀划分得到的每个bin都表示soft match;使用直方图中的计数作为向量中每一维的值,得到每个单词编码后的向量