本文旨在帮大家快速了解文本语义相似度领域的研究脉络和进展,其中包含了本人总结的文本语义相似度任务的处理步骤,文本相似度模型发展历程,相关数据集,以及重要论文分享。
文本相似度任务处理步骤
通过该领域的大量论文阅读,我认为处理文本相似度任务时可以分为一下三个步骤:
预处理:如数据清洗等。此步骤旨在对文本做一些规范化操作,筛选有用特征,去除噪音。
文本表示:当数据被预处理完成后,就可以送入模型了。在文本相似度任务中,需要有一个模块用于对文本的向量化表示,从而为下一步相似度比较做准备。这个部分一般会选用一些 backbone 模型,如 lstm,bert 等。
学习范式的选择:这个步骤也是文本相似度任务中最重要的模块,同时也是区别于 nlp 领域其他任务的一个模块。其主要原因在于相似度是一个比较的过程,因此我们可以选用各种各样的比较的方式来达成目标。可供选择的学习方式有:孪生网络模型,交互网络模型,对比学习模型等。
文本相似度模型发展历程
从传统的无监督相似度方法,到孪生模型,交互式模型,bert,以及基于bert的一些改进工作,如下图:
总体来说,在 bert 出现之前,文本相似度任务可以说是一个百花齐放的过程。大家通过各种方式来做相似度比较的都有。从 bert 出现之后,由于 bert 出色的性能,之后的工作主要是基于 bert 的改进。在这个阶段,大家所采用的数据集,评价指标等也逐渐进行了统一。
数据集
在 bert 以后,大家在文本相似度任务上逐渐统一了数据集的选择,分别为 sts12,sts13,sts14,sts15,sts16,sts-b,sick-r 七个数据集。sts12-16 分别为 semeval 比赛 2012~2016 年的数据集。此外,sts-b 和 sick-r 也是 semeval 比赛数据集。在这些数据集中,每一个文本对都有一个 0~5 分的人工打标相似度分数(也称为 gold label),代表这个文本对的相似程度。
评价指标
首先,对于每一个文本对,采用余弦相似度对其打分。打分完成后,采用所有余弦相似度分数和所有 gold label 计算 spearman correlation。
其中,pearson correlation 与 spearman correlation 都是用来计算两个分布之间相关程度的指标。pearson correlation 计算的是两个变量是否线性相关,而 spearman correlation 关注的是两个序列的单调性是否一致。并且论文《task-oriented intrinsic evaluation of semantic textual similarity》证明,采用 spearman correlation 更适合评判语义相似度任务。pearson correlation 与 spearman correlation 的公式如下:
论文分享
siamese recurrent architectures for learning sentence similarity, aaai 2016
https://www.aaai.org/ocs/index.php/aaai/aaai16/paper/download/12195/12023
siamese lstm 是一个经典的孪生网络模型,它将需要对比的两句话分别通过不同的 lstm 进行编码,并采用两个 lstm 最后一个时间步的输出来计算曼哈顿距离,并通过 mse loss 进行反向传导。
bilateral multi-perspective matching for natural language sentences, ijcai 2017
https://arxiv.org/abs/1702.03814
bimpm 是一个经典的交互式模型,它将两句话用不同的 bi-lstm 模型分别编码,并通过注意力的方式使得当前句子的每一个词都和另一个句子中的每一个词建立交互关系(左右句子是对称的过程),从而学习到更深层次的匹配知识。在交互之后,再通过 bi-lstm 模型分别编码,并最终输出。
对于交互的过程,作者设计了四种交互方式,分别为:
句子 a 中每个词与句子 b 的最后一个词进行交互
句子 a 中每个词与句子 b 的每个词进行交互,并求 element-wise maximum
通过句子 a 中的词筛选句子 b 中的每一个词,并将句子 b 的词向量加权求和,最终于 a 词对比
与 c 几乎一致,只不过将加权求和操作变成 element-wise maximum
具体的交互形式是由加权的余弦相似度方式完成。
其中,wk 是参数矩阵,可以理解为 attention 的 query 或者 key,v1 和 v2 分别是要进行交互的两个词,这样计算 l 次余弦相似度,就会得到 m 向量(一个 l 维向量)。
bert: pre-training of deep bidirectional transformers for language understanding
https://arxiv.org/abs/1810.04805
bert 可以认为是语义相似度任务的分水岭。bert 论文中对 sts-b 数据集进行有监督训练,最终达到了 85.8 的 spearman correlation 值。这个分数相较于后续绝大部分的改进工作都要高,但 bert 的缺点也很明显。对于语义相似度任务来说:
在有监督范式下,bert 需要将两个句子合并成一个句子再对其编码,如果需要求很多文本两两之间的相似度,bert 则需要将其排列组合后送入模型,这极大的增加了模型的计算量。
在无监督范式下,bert 句向量中携带的语义相似度信息较少。从下图可以看出,无论是采用 cls 向量还是词向量平均的方式,都还比不过通过 glove 训练的词向量求平均的方式要效果好。
基于以上痛点,涌现出一批基于 bert 改进的优秀工作。
sentence-bert: sentence embeddings using siamese bert-networks, emnlp 2019
https://arxiv.org/abs/1908.10084
sentence-bert 是一篇采用孪生 bert 架构的工作。sentence-bert 作者指出,如果想用 bert 求出 10000 个句子之间两两的相似度,排列组合的方式在 v100 gpu 上测试需要花费 65 小时;而如果先求出 10000 个句子,再计算余弦相似度矩阵,则只需要花费 5 秒左右。因此,作者提出了通过孪生网络架构训练 bert 句向量的方式。
sentence-bert 一共采用了三种 loss,也就是三种不同的方式训练孪生 bert 架构,分别为 cross-entropy loss,mse loss 以及 triple loss,模型图如下:
on the sentence embeddings from pre-trained language models, emnlp 2020
https://arxiv.org/abs/2011.05864
bert-flow 是一篇通过对 bert 句向量做后处理的工作。作者认为,直接用 bert 句向量来做相似度计算效果较差的原因并不是 bert 句向量中不包含语义相似度信息,而是其中包含的相似度信息在余弦相似度等简单的指标下无法很好的体现出来。
首先,作者认为,无论是 language modelling 还是 masked language modelling,其实都是在最大化给定的上下文与目标词的共现概率,也就是 ct 和 xt 的贡献概率。language modelling 与 masked language modelling 的目标函数如下:
因此,如果两句话预测出的 xt 一致,那么两句话的 ct 向量很有可能也是相似的!考虑如下两句话:
今天中午吃什么?
今天晚上吃什么?
通过这两句话训练出的语言模型都通过上下文预测出了“吃“这个字,那说明这两句话的句向量也很可能是相似的,具有相似的语义信息。
其次,作者通过观察发现,bert 的句向量空间是各向异性的,且高频词距离原点较近,低频词距离较远,且分布稀疏。因此 bert 句向量无法体现出其中包含的相似度信息。
因此,作者认为可以通过一个基于流的生成模型来对 bert 句向量空间进行映射。具体来说,作者希望训练出一个标准的高斯分布,使得该分布中的点可以与 bert 句向量中的点一一映射。由于该方法采用的映射方式是可逆的,因此就可以通过给定的 bert 句向量去映射回标准高斯空间,然后再去做相似度计算。由于标准高斯空间是各向同性的,因此能够将句向量中的语义相似度信息更好的展现出来。
simcse: simple contrastive learning of sentence embeddings, emnlp 2021
https://arxiv.org/abs/2104.08821
simcse 是一篇基于对比学习的语义相似度模型。首先,对比学习相较于文本对之间的匹配,可以在拉近正例的同时,同时将其与更多负例之间的距离拉远,从而训练出一个更加均匀的超球体向量空间。作为一类无监督算法,对比学习中最重要的创新点之一是如何构造正样本对,去学习到类别内部的一些本质特征。
simcse 采用的是一个极其朴素,性能却又出奇的好的方法,那就是将一句话在训练的时候送入模型两次,利用模型自身的 dropout 来生成两个不同的 sentence embedding 作为正例进行对比。模型图如下:
consert: a contrastive framework for self-supervised sentence representation transfer, acl 2021
https://arxiv.org/abs/2105.11741
consert 同样也是一篇基于对比学习的文本相似度工作。consert 是采用多种数据增强的方式来构造正例的。其中包括对抗攻击,打乱文本中的词顺序,cutoff以及 dropout。这里需要注意的是,虽然 consert 与 simcse 都采用了 dropout,但 consert 的数据增强操作只停留在 embedding layer,而 simcse 则是采用了 bert 所有层中的 dropout。此外,作者实验证明,在这四种数据增强方式中,token shuffling 和 token cutoff 是最有效的。
exploiting sentence embedding for medical question answering, aaai 2018
https://arxiv.org/abs/1811.06156
注:由于本人工作中涉及的业务主要为智慧医疗,因此会有倾向的关注医疗人工智能领域的方法和模型。
macse 是一篇针对医学文本的句向量表征工作,虽然其主要关注的是 qa 任务,但他的句向量表征方式在文本相似度任务中同样适用。
医学文本区别于通用文本的一大特征就是包含复杂的多尺度信息,如下:
因此,我们就需要一个能够关注到医学文本多尺度信息的模型。
在本文中,通过多尺度的卷积操作,就可以有效的提取到文本中的多尺度信息,并且通过注意力机制对多尺度信息进行加权,从而有效的关注到特定文本中在特定尺度上存在的重要信息。
实验结果汇总
以下为众多基于 bert 改进的模型在标准数据集上测试的结果,出自 simcse 论文:
可以看到,bert-flow 相较于原生 bert 提升了将近 10 个点,而基于对比学习的工作又要比基于后处理的工作的效果好很多。此外需要注意的是,在这里 sentence-bert 被归为了有监督模型中。这是因为 sentence-bert 虽然没有用到 sts 标签,但训练时用的是 nli 数据集,也用到了 nli 中人工打标的标签,因此 simcse 作者将 sentence-bert 归为了有监督模型中。
好了,以上就是文本语义相似度领域的研究脉络和进展,希望能对大家有所帮助。当然 2022 年也有不少优秀的工作出现,不过这一部分就留到以后吧!
模拟知识:二极管、三极管、场效应管和运算放大器
四种TI霍尔传感器的开关解决方案
红米S2真机曝光 完美贯彻“科技以换壳为本”宗旨
滤波和放大电路
将模拟组件与Arm微控制器内核相结合解决嵌入式系统问题
快速了解文本语义相似度领域的研究脉络和进展
百度、商米科技、众趣科技齐聚一堂 共同探讨AI技术
一站式开发工具RT-Thread Studio发布,明年还将推出新一代混合微内核!
如何选购HDMI线?需要注意哪些细节?
三星召开紧急救援会议,应对日本扩大出口管制,提前做出措施
三态门逻辑电路图大全(三款三态门逻辑电路图)
欧菲光拟筹划出售广州得尔塔影像技术有限公司等资产
OPPO将在2022未来科技大会上发布第二颗自研芯片
开关电源中的各元器件检验方法及步骤
保险丝陶瓷管
贴片电容知识详解
用于智能家电的高压电机驱动IC
基于Saas服务云端MES如何采集数据做过程管控
现场控制器的组成结构
什么是51单片机?又该如何自学51单片机