从局部到全局:语义相似度的测地线距离
By 苏剑林 | 2022-12-07 | 29886位读者 |前段时间在最近的一篇论文《Unsupervised Opinion Summarization Using Approximate Geodesics》中学到了一个新的概念,叫做“测地线距离(Geodesic Distance)”,感觉有点意思,特来跟大家分享一下。
对笔者来说,“新”的不是测地线距离概念本身(以前学黎曼几何的时候就已经接触过了),而是语义相似度领域原来也可以巧妙地构造出测地线距离出来,并在某些场景下发挥作用。如果乐意,我们还可以说这是“流形上的语义相似度”,是不是瞬间就高级了不少?
论文梗概 #
首先,我们简单总结一下原论文的主要内容。顾名思义,论文的主题是摘要,通常我们的无监督摘要是这样做的:假设文章由$n$个句子$t_1,t_2,\cdots,t_n$组成,给每个句子设计打分函数$s(t_i)$(经典的是tf-idf及其变体),然后挑出打分最大的若干个句子作为摘要。当然,论文做的不是简单的摘要,而是“Opinion Summarization”,这个“Opinion”,我们可以理解为实现给定的主题或者中心$c$,摘要应该倾向于抽取出与$c$相关的句子,所以打分函数应该还应该跟$c$有关,即$s(t_i, c)$。
自从“万物皆Embedding”后,$s(t_i,c)$的一种主流设计方式就是将句子$t_i$和主题$c$都编码为相应的句向量$\boldsymbol{v}(t_i),\boldsymbol{v}(c)$,然后用某种距离的倒数作为打分函数:
\begin{equation}s(t_i, c) = \frac{1}{d(\boldsymbol{v}(t_i), \boldsymbol{v}(c))}\end{equation}
在这种设计中,句向量的编码模型$\boldsymbol{v}(\cdot)$和距离函数$d(\cdot,\cdot)$都是可设计的空间。原论文在$\boldsymbol{v}(\cdot)$和$d(\cdot,\cdot)$上都做了一些工作,其中$\boldsymbol{v}(\cdot)$不是本文关心的内容,暂且略过,有兴趣的读者自行看原论文。至于论文在$d(\cdot,\cdot)$上的贡献,就是将常见的简单距离,换成了本文的主题“测地线距离”。
原理分析 #
为什么要用到测地线距离?这要从我们训练句向量的方案说起。
学习句向量的方式既可以是有监督的,也可以是无监督的。以有监督为例,一般就是正样本对和负样本对做对比学习(参考《CoSENT(一):比Sentence-BERT更有效的句向量方案》),正样本对就是标记出两个语义基本相同的句子,我们可以认为它们相似度很高,或者距离很小。问题出在负样本对,作为两个语义不相同的句子,它们可能是特意标记出来的困难样本,也可能是随机挑出来的两个不相关样本,原则上这两种情况应当赋予不同的距离,但实际都只是标记了同一个标签,即“负”。
这就导致了一个结果,我们用句向量算出来的距离数值,理论上是对语义比较相近的句子才比较准确,对于语义差距比较大的句子,距离数值只能够用来区分出正负样本,但不能在邻近范围内做比较。举个例子,我们可以说距离为$1$的比距离为$2$的更相似,也可以说距离为$1$的比距离为$10$的更相似,但没法说距离为$10$的比距离为$11$的更相似,因为距离大了,其绝对数值就不准了。
检索场景下,通常要召回相似度很高(也就是距离很小)的样本,因此直接用简单的距离函数$d(\cdot,\cdot)$去检索就行。但是,对于原论文的“Opinion Summarization”场景,要计算的是句子$t_i$与主题$c$的距离$d(\boldsymbol{v}(t_i), \boldsymbol{v}(c))$,“句子”与“主题”的相似度就未必很大了(距离偏大),也就是说,它是要在距离相似度偏大的区间做相对比较,这就适合用到测地线距离了。
测地距离 #
测地线距离,简单来说就是两点之间的最短距离,由于流形未必是平直的,因此该距离未必是两点之间的直线距离(欧式距离),经典例子就是从地球的南极走到北极,我们没法穿过地心走直线,只能沿着地球表面先走到赤道然后再走到南极,走了一条曲线(半圆)距离。
在局部范围内(此时距离比较小),地球还是平的,所以欧式距离还是可用的,但是放到“南极-北极”、“南极-赤道”这样的大距离就不够准确了,这就跟刚才的语义相似度场景很相似了——已知的距离(比如欧式距离)在近距离内比较准确,在远距离不准确,本质上就是因为流形不是平直的。
幸运的是,有局部距离就够了,我们将其转化为一个图的问题,可以利用“最短路径”的算法估算出近似的测地线距离。具体来说,我们可以用现有的距离函数算出每个点与剩余点的距离,然后只保留距离最近的$k$个点(也可以按阈值截断,看具体情况),在它们之间连一条边并标记上距离,这样一来所有点和边构成了一个加权图(我们称之为“$k$邻近图”),我们就可以用Dijkstra算法来搜索出图上任意两点的最短路径,并计算出它的长度,这就是测地线距离的近似结果。
总的来说,在“相近点的距离比较准、较远点的距离比较不准”的假设下,我们可以$k$邻近图加最短路径的方法,估算较远点的测地线距离来作为替代品。由于测地线距离考虑了向量空间的流形状况,所以有可能取得比较好的效果。(参考原论文的Table 8)
文章小结 #
本文分享了一个“测地线距离”的概念,指出我们平时训练出来的相似度可能只适合于局部,在较远距离下换为测地线距离可能会在某些语义相似度问题上有帮助。
转载到请包括本文地址:https://kexue.fm/archives/9368
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Dec. 07, 2022). 《从局部到全局:语义相似度的测地线距离 》[Blog post]. Retrieved from https://kexue.fm/archives/9368
@online{kexuefm-9368,
title={从局部到全局:语义相似度的测地线距离},
author={苏剑林},
year={2022},
month={Dec},
url={\url{https://kexue.fm/archives/9368}},
}
December 28th, 2022
“我们可以说距离为1的比距离为2的更相似”
———————————————————————————————————————————————————————
不太理解请教一下,不同的正样本也没有赋予不同的距离吧,为什么就能说距离为1的一定比距离为2的更相似呢?
至少在同一个数据集中,正样本对我们可以认为是“相等”,也就是距离都为0,也就是它们的标签都是准确的“距离为0”,借助语言模型本身的泛化能力,我们认为它对这部分的排序比较准确;但负样本对,实际距离可能是100,也可能是10000,你不知道它是哪个,统一为单个标签“负”,模型对这部分的排序就没那么准。
那正负样本的主要区别是负样本中包含“随机挑出来的两个不相关样本”,也就是说正是负样本中的这部分样本干扰了语言模型在负样本的泛化能力,从而使得当距离大了绝对值也就没有说服力了对吧~
我是这样理解的。
明白了,十分感谢~
January 9th, 2023
有意思~直观感觉就是多边形逼近圆形的感觉
April 19th, 2023
作者大大,我的二分类项目是匹配类项目。简单说只有正例,如果用pairwise的算法做精度不够。然后用了你那个CoSent 精度也没有提高。应该用什么养的方式
信息太少,我也不清楚~
July 27th, 2023
苏神求问一个问题,一个偶然发现对一个过拟合的SentenceBert模型,使用spearman计算Embedding相似度的效果竟然显著的更好,这不是和上面您解释的测点线的思路有点相像?
过拟合跟测地线,我好像没能联系起来。
August 1st, 2023
苏神一如既往地贡献佳作。