无监督语义相似度哪家强?我们做了个比较全面的评测
By 苏剑林 | 2021-04-11 | 161361位读者 |一月份的时候,笔者写了《你可能不需要BERT-flow:一个线性变换媲美BERT-flow》,指出无监督语义相似度的SOTA模型BERT-flow其实可以通过一个简单的线性变换(白化操作,BERT-whitening)达到。随后,我们进一步完善了实验结果,写成了论文《Whitening Sentence Representations for Better Semantics and Faster Retrieval》。这篇博客将对这篇论文的内容做一个基本的梳理,并在5个中文语义相似度任务上进行了补充评测,包含了600多个实验结果。
方法概要 #
BERT-whitening的思路很简单,就是在得到每个句子的句向量{xi}Ni=1后,对这些矩阵进行一个白化(也就是PCA),使得每个维度的均值为0、协方差矩阵为单位阵,然后保留k个主成分,流程如下图:
当然,理论上来说,我们也可以将BERT-whitening看成是BERT-flow的最简单实现,而之前的博客中已经指出,就是这样简单的实现足以媲美一般的BERT-flow模型,有时候甚至更好。同时,BERT-whitening在变换的同时还对特征重要性进行了排序,因此我们可以对句向量进行降维来提高检索速度。实验结果显示,在多数任务中,降维不但不会带来效果上的下降,反而会带来效果上的提升。
英文任务 #
首先介绍BERT-whitening在英文任务上的测试结果,主要包含三个图表,基本上实现了与BERT-flow进行了严格对照。
纯无监督 #
首先,第一个表格介绍的是在完全无监督的情况下,直接使用预训练的BERT抽取句向量的结果。在BERT-flow的论文中,我们已经确实,如果不加任何后处理手段,那么基于BERT抽取句向量的最好Pooling方法是BERT的第一层与最后一层的所有token向量的平均,即fisrt-larst-avg(BERT-flow论文误认为是最后两层的平均,记为了last2avg,实际上是第一层与最后一层)。所以后面的结果,都是以fisrt-larst-avg为基准来加flow或者whitening。
NLI监督 #
然后,第二个表格介绍的是基于NLI数据集微调后的Sentence-BERT模型(SBERT)抽取句向量的结果,在此情况下同样是fisrt-larst-avg最好,所以flow和whitening的基准都是fisrt-larst-avg出来的句向量。NLI数据集是自然语言推理数据集,跟语义相似度类似但不等价,它可以作为语义相似度任务的有监督预训练,但由于没有直接用到语义相似度数据,因此相对于语义相似度任务来说依然属于无监督的。
维度-效果 #
在这两个表格中,加粗的是最优结果;绿色箭头↑意味着BERT-whitening的结果优于同样情况下的BERT-flow模型,而红色箭头↓则相反,也就是说,绿色箭头越多意味着BERT-whitening的效果也好;whitening后面接的数字256、384指的是降维后保留的维度。所以,从这两个表格可以看出,BERT-whitening总体而言优于BERT-flow,实现了大多数任务的SOTA,并且多数情况下,降维还能进一步提升效果。
为了进一步确认降维所带来的效果,我们绘制了如下的保留维度与效果关系图:
上图演示了各个模型在各个任务上经过whitening之后,保留的维度与评测指标的变化曲线。可以看到,对于每个任务来说,最优效果都不是在全部维度取到,这意味着降维都可以带来一定的效果提升,并且可以看到,不少任务甚至可以降维到原来的1/8甚至更多而保持效果不减甚至增加,这充分显示了BERT-whitening的工程价值,因为降维意味着我们能大大加快检索速度。
中文任务 #
秉承着“没有在中文测试过的模型是没有灵魂的”的理念,笔者整理了一些中文语义相似度数据集,结合不同的中文预训练模型、Pooling方式以及whitening与否进行了评测,结果汇总于此,供大家对比。
评测情况 #
本次评测涉及到11个模型、5个数据集、4种Pooling方式,每种组合比较“不whitening”、“whitening”、“whitening且降维”3种后处理方式的效果,所以共有将近
11×5×4×3=660
个实验结果,算是比较全面了。说“将近”是因为某些Pooling方式在某些模型不可用,所以离660还差一点。由于BERT-flow计算成本明显大于BERT-whitening,因此我们没有复现对比BERT-flow的效果,但是从英文任务上可以看出,BERT-whitening和BERT-flow的效果通常是接近的,并且BERT-whitening通常还优于BERT-flow,因为whitening的效果应该是有代表性的了。
评测指标跟前述英文任务一样,都是用spearman相关系数,这是一个类似AUC的排序指标,只依赖于预测分数的顺序,并且不依赖于阈值,所以用来评测效果是比较适合的。之所以没有用大家更熟悉的准确率(accuracy)指标,一是因为准确率依赖于具体的阈值,二是因为STS-B数据集的标签是1~5的数字,并不是0/1标签,要算准确率也无从算起,因此统一用spearman相关系数了。如果读者非要从准确率角度理解,那么大概可以认为“accuracy ≈ 0.5 + spearman / 2”吧。
其中11个模型如下:
BERT:Google开源的中文BERT base版,链接;
RoBERTa:哈工大开源的roberta_wwm_ext的base版,链接;
NEZHA:华为开源的相对位置编码的BERT base版(wwm),链接;
WoBERT:以词为单位的BERT,这里用的是Plus版,链接;
RoFormer:加入了新型位置编码的BERT,链接;
BERTlarge:腾讯UER开源的BERT large版本,链接;
RoBERTalarge:哈工大开源的roberta_wwm_ext的large版,链接;
NEZHA-large:华为开源的相对位置编码的BERT large版(wwm),链接;
SimBERT:经过相似句训练的BERT base版,链接;
SimBERTsmall:经过相似句训练的BERT small版,链接;
SimBERTtiny:经过相似句训练的BERT tiny版,链接。
5个任务如下:
ATEC:ATEC语义相似度学习赛数据集,金融领域客服场景,原比赛链接已经失效,当前数据来自链接;
BQ:哈工大BQ Corpus数据集,银行金融领域的问题匹配,详情可看链接;
LCQMC:哈工大LCQMC数据集,覆盖多个领域的问题匹配,详情可看链接;
PAWSX:谷歌发布的数据集(链接),数据集里包含了多语种的释义对和非释义对,即识别一对句子是否具有相同的释义(含义),特点是具有高度重叠词汇,对无监督方法来说算是比较难的任务,这里只保留了中文部分;
STS-B:计算两句话之间的相关性,原数据集为英文版,通过翻译加部分人工修正的方法生成中文版,来源链接。
4种Pooling方式如下:
P1:把encoder的最后一层的[CLS]向量拿出来;
P2:把Pooler(BERT用来做NSP任务)对应的向量拿出来,跟P1的区别是多了个线性变换;
P3:把encoder的最后一层的所有向量取平均;
P4:把encoder的第一层与最后一层的所有向量取平均。
结果汇总 #
所有的实验结果汇总在如下三个表格中。其中表格中的每个元素是a/b/c的形式,代表该任务在该模型下“不加whitening”的得分为a、“加whitening”的得分为b、“加whitening并适当降维”的得分为c;如果b≥a,那么b显示为绿色,否则显示为红色;如果c≥a,那么c显示为绿色,否则显示为红色;所谓“适当降维”,对于base版本的模型是降到256维,对于large版本的模型是降到384维,对于tiny和small版则降到128维。
第一个表格是11个模型中的6个base版模型的对比,其中WoBERT和RoFormer没有NSP任务,所以没有P2的权重,测不了P2:
ATECBQLCQMCPAWSXSTS-BBERT-P116.59/20.61/25.5829.35/25.76/34.6641.71/48.92/49.1815.15/17.03/15.9834.65/61.19/60.07BERT-P29.46/22.16/25.1316.97/18.97/33.9928.42/49.61/49.5913.93/16.08/16.1921.66/60.75/60.13BERT-P320.79/18.27/28.9833.08/22.58/38.6259.22/60.12/62.0016.68/18.37/17.3857.48/63.97/68.27BERT-P424.51/27.00/27.9138.81/32.29/37.6764.75/64.75/65.6515.12/17.80/15.3461.66/69.45/69.37RoBERTa-P124.61/29.59/29.4940.54/28.95/38.3570.55/70.82/68.8416.23/17.99/16.8766.91/69.19/71.16RoBERTa-P220.61/28.91/29.4931.14/27.48/38.4665.43/70.62/68.7615.71/17.30/17.0159.50/70.77/71.16RoBERTa-P326.94/29.94/30.5740.71/30.95/39.8966.80/68.00/67.3016.08/19.01/16.7961.67/66.19/69.36RoBERTa-P427.94/28.33/29.0643.09/33.49/38.8368.43/67.86/68.3615.02/17.91/15.2664.09/69.74/70.09NEZHA-P117.39/18.83/24.9729.63/21.94/33.6540.60/50.52/46.5714.90/18.15/16.6935.84/60.84/58.98NEZHA-P210.96/23.08/24.2117.38/28.81/32.2122.66/49.12/47.0313.45/18.05/17.1521.16/60.11/58.68NEZHA-P323.70/21.93/28.6535.44/22.44/37.9560.94/62.10/62.5018.35/21.72/18.7860.35/68.57/68.97NEZHA-P427.72/25.31/26.1844.18/31.47/36.0265.16/66.68/66.5413.98/16.66/14.0261.94/69.55/69.14WoBERT-P123.88/22.45/27.8843.08/32.52/37.5468.56/67.89/65.8018.15/19.92/18.7364.12/66.53/69.03WoBERT-P2-----WoBERT-P324.62/22.74/29.0140.64/28.12/38.8264.89/65.22/65.1416.83/20.56/17.8759.43/66.57/67.76WoBERT-P425.97/27.24/28.3842.37/32.34/38.0666.53/65.62/66.3615.54/18.85/15.9861.37/68.11/68.42RoFormer-P124.29/26.04/28.2041.91/28.13/38.2164.87/60.92/60.8320.15/23.08/21.3059.91/66.96/66.86RoFormer-P2-----RoFormer-P324.09/28.51/29.3739.09/34.92/39.0563.55/63.85/63.5816.53/18.43/17.5258.98/55.30/67.32RoFormer-P425.92/27.38/28.3741.75/32.36/38.0566.18/65.45/65.6315.30/18.36/15.6961.40/68.02/68.27SimBERT-P138.50/23.64/30.7948.54/31.78/40.0176.23/75.05/74.5015.10/18.49/15.6474.14/73.37/75.29SimBERT-P238.93/27.06/30.7949.93/35.38/40.1475.56/73.45/74.3914.52/18.51/15.7473.18/73.43/75.12SimBERT-P336.50/31.32/31.2445.78/29.17/40.9874.42/73.79/73.4315.33/18.39/15.8767.31/70.70/72.00SimBERT-P433.53/29.04/28.7845.28/34.70/39.0073.20/71.22/72.0914.16/17.32/14.3966.98/70.55/71.43
第二个表格则是3个large版模型的对比:
ATECBQLCQMCPAWSXSTS-BBERTlarge-P113.15/22.42/24.3219.81/17.61/31.0923.45/44.31/41.3216.88/19.37/19.8725.93/52.70/56.74BERTlarge-P28.16/16.57/24.349.43/18.23/30.9116.66/39.50/41.4014.72/20.00/19.9215.82/56.79/56.73BERTlarge-P324.31/18.25/30.2435.87/32.56/37.5159.29/65.06/63.7816.94/20.01/18.6260.22/68.07/68.87BERTlarge-P425.62/27.64/28.1538.45/31.30/36.4765.43/66.54/67.0215.33/19.06/15.9562.02/69.74/69.99RoBERTalarge-P119.32/15.90/29.3234.21/23.16/37.1164.89/67.05/66.4917.78/20.66/19.7360.16/69.46/70.44RoBERTalarge-P219.32/22.16/29.2334.33/33.22/37.1065.00/67.12/66.5017.77/18.90/19.7960.09/61.35/70.32RoBERTalarge-P324.83/21.05/30.8539.23/26.85/38.3966.86/68.62/67.2517.67/20.06/19.0962.98/55.75/69.72RoBERTalarge-P425.69/28.19/28.3940.18/32.06/36.9168.58/68.74/68.7116.01/19.87/16.5063.75/70.08/70.39NEZHAlarge-P118.91/24.98/25.6830.39/29.30/33.2941.68/52.42/49.8018.89/23.31/21.7439.04/60.36/61.13NEZHAlarge-P27.92/21.60/25.3312.03/24.63/33.2212.33/52.40/49.6816.26/23.11/21.9516.59/57.70/60.82NEZHAlarge-P322.74/25.63/27.4836.48/22.33/35.4759.65/59.90/59.9418.09/23.12/19.7159.66/67.80/68.55NEZHAlarge-P427.45/24.83/24.9044.33/29.73/34.0566.19/66.89/67.8813.74/16.66/13.9562.91/69.87/69.71
第三个表格则是不同大小的SimBERT模型之间的对比:
ATECBQLCQMCPAWSXSTS-BSimBERT-P138.50/23.64/30.7948.54/31.78/40.0176.23/75.05/74.5015.10/18.49/15.6474.14/73.37/75.29SimBERT-P238.93/27.06/30.7949.93/35.38/40.1475.56/73.45/74.3914.52/18.51/15.7473.18/73.43/75.12SimBERT-P336.50/31.32/31.2445.78/29.17/40.9874.42/73.79/73.4315.33/18.39/15.8767.31/70.70/72.00SimBERT-P433.53/29.04/28.7845.28/34.70/39.0073.20/71.22/72.0914.16/17.32/14.3966.98/70.55/71.43SimBERTsmall-P130.68/27.56/29.0743.41/30.89/39.7874.73/73.21/73.5015.89/17.96/16.7570.54/71.39/72.14SimBERTsmall-P231.00/29.14/29.1143.76/36.86/39.8474.21/73.14/73.6716.17/18.12/16.8170.10/71.40/72.28SimBERTsmall-P330.03/21.24/29.3043.72/31.69/40.8172.12/70.27/70.5216.93/21.68/18.7566.55/66.11/69.19SimBERTsmall-P429.52/28.41/28.5743.52/36.56/40.4970.33/68.75/69.0115.39/21.57/16.3464.73/68.12/68.24SimBERTtiny-P130.51/24.67/27.9844.25/31.75/39.4274.27/72.25/73.2416.01/18.07/17.0770.11/66.39/71.92SimBERTtiny-P230.01/27.66/27.9244.47/37.33/39.3973.98/72.31/73.3116.55/18.15/17.1470.35/70.88/72.04SimBERTtiny-P328.47/19.68/28.6042.04/29.49/40.5969.16/66.99/67.7416.18/20.11/17.8764.41/66.72/67.57SimBERTtiny-P427.77/27.67/28.0241.76/37.02/40.1967.55/65.66/66.6015.06/20.49/16.2662.92/66.77/67.01
实验结论 #
跟英文任务的表格类似,绿色意味着whitening操作提升了句向量质量,红色则意味着whitening降低了句向量质量,绿色越多则意味着whitening方法越有效。从上述几个表格中,我们可以得出一些结论:
1、中文任务的测试结果比英文任务复杂得多,更加不规律,比如在英文任务中,P4这种Pooling方式基本上都比其他方式好,而large模型基本上比base好,但这些情况在中文任务中都不明显;
2、除了SimBERT外,整体而言还是绿色比红色多,所以whitening对句向量的改善基本上还是有正面作用的,特别地,在a/b/c中,c的绿色明显比b的绿色要多,这说明降维还能进一步提升效果,也就是说whitening是真正的提速又提效的算法;
3、在BQ任务中,whitening方法几乎都带来了下降,这跟英文任务中的SICK-R任务类似,这说明“天下没有免费的午餐”,总有一些任务会使得“各向同性”假设失效,这时候不管是BERT-whitening还是BERT-flow都不能带来提升;
4、SimBERT是所有除PAWSX外的任务的SOTA,当然SimBERT算是经过语义相似度任务有监督训练过的了(但理论上训练数据与测试任务没有交集),所以跟其他模型比肯定不是特别公平的,但不管怎样,SimBERT已经开源,大家都可以用,所以可以作为一个baseline对待;
5、SimBERT加whitening,要不会带来性能下降,要不就是有提升也不明显,这说明如果通过有监督方法训练出来的句向量,就没有必要进一步做whitening了,基本上不会带来提升;
6、PAWSX确实很难,语义相似度任务还任重道远...
本文小结 #
本文介绍了我们在中英文任务上对无监督语义相似度方法的比较全面评测。在英文任务方面,主要复述了我们的BERT-whitening方法的论文中的结果,里边包含了跟BERT-flow一一对齐的比较;在中文方面,我们收集了5个任务,在11个预训练模型、4种Pooling方式、3种后处理方式共600多种组合进行了评测,以提供一个可以方便大家对比的结果。
一句话总结评测结果,那就是:BERT-whitening方法确实达到了当前无监督语义的SOTA,而SimBERT则是中文语义相似度的一个比较高的开源baseline。
转载到请包括本文地址:https://kexue.fm/archives/8321
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Apr. 11, 2021). 《无监督语义相似度哪家强?我们做了个比较全面的评测 》[Blog post]. Retrieved from https://kexue.fm/archives/8321
@online{kexuefm-8321,
title={无监督语义相似度哪家强?我们做了个比较全面的评测},
author={苏剑林},
year={2021},
month={Apr},
url={\url{https://kexue.fm/archives/8321}},
}
April 22nd, 2022
你好,我有个疑惑,如果对于有监督的中文学习任务,判定两个句子是否相似,这种情况下训练出来的模型也会是fisrt-larst-avg更好一些吗,同时whitening在有监督什么情况下使用会比较合理呢?谢谢解答。
有监督训练的话,各种pooling方法应该都差不多。至于有监督情况下whitening怎么用,这个我后面再写篇文章讨论吧,几句话说不清楚。
December 12th, 2022
苏神,关于BERT-whitening有个地方不理解,如果要把这用在生成无监督句向量,关于用于获得变换的μ和Σ,是不是要把作为query生成的句向量和用来匹配的语料所生成的句向量先计算出来,然后才能计算μ和Σ?
是的。用已有的语料来估计均值方差,使用时不用实时更新均值方差。