研究表明,常用的余弦相似度在某些线性模型中会导致不唯一甚至无意义的结果,深度学习模型中情况可能更糟,建议谨慎使用。
原文标题:余弦相似度可能没用?对于某些线性模型,相似度甚至不唯一
原文作者:数据派THU
冷月清谈:
研究发现,使用正则化线性模型(如矩阵分解模型)学习得到的嵌入向量,其维度可以被任意缩放,而不影响模型的预测结果。然而,这种缩放会影响嵌入向量的归一化,进而影响余弦相似度的计算。因此,即使模型预测准确,余弦相似度也可能给出错误的相似性判断。
研究人员举例说明了这种任意性:在某些情况下,余弦相似度可以使所有物品只与自身相似,或者使相似度完全依赖于原始数据,而忽略了学习到的嵌入信息。
该问题不仅存在于线性模型中,在复杂的深度学习模型中可能更为严重。深度学习模型通常使用多种正则化技术,这些技术会影响嵌入向量的数值大小,进而影响余弦相似度的计算结果。
研究建议,不要盲目使用余弦相似度,可以考虑其他方法,例如直接针对余弦相似度训练模型、将嵌入投影回原始空间后再计算相似度、使用其他的相似度计算方法(如欧几里得距离、点积、软余弦相似度等)以及使用专门训练的语义文本相似度模型。
怜星夜思:
2、文章提到了几种替代方案,例如欧几里得距离、点积等。这些方法各自有什么优缺点?在什么情况下更适合使用这些替代方案?
3、文章中提到的“正则化”对余弦相似度的影响是什么?如何理解正则化带来的“自由度”?
原文内容
在机器学习和数据科学领域,余弦相似度长期以来一直是衡量高维对象之间语义相似度的首选指标。余弦相似度已广泛应用于从推荐系统到自然语言处理的各种应用中。它的流行源于人们相信它捕获了嵌入向量之间的方向对齐,提供了比简单点积更有意义的相似性度量。
然而,Netflix 和康奈尔大学的一项研究挑战了我们对这种流行方法的理解:余弦相似度可能导致任意且毫无意义的结果。
论文地址:https://arxiv.org/pdf/2403.05440v1
余弦相似度通过测量两个向量的夹角的余弦值来度量它们之间的相似性,机器学习研究常常通过将余弦相似性应用于学得的低维特征嵌入来量化高维对象之间的语义相似性。但在实践中,这可能比嵌入向量之间的非标准化点积效果更好,但有时也更糟糕。
图源:https://www.shaped.ai/blog/cosine-similarity-not-the-silver-bullet-we-thought-it-was
博客地址:https://www.shaped.ai/blog/cosine-similarity-not-the-silver-bullet-we-thought-it-was
有网友表示:「问题没那么严重,相似度指标需要根据嵌入空间进行量身定制,需要测试不同的指标来建立定性评估。」
网友认为余弦相似度应该是一个足够好的方法。毕竟,「根据 OpenAI 关于嵌入的文档,他们还在代码片段中使用了余弦相似度。」
这个结论是怎么得出来的呢?让我们一起看看这篇论文的主要内容,一探究竟。
研究简介
来自论文:《Is Cosine-Similarity of Embeddings Really About Similarity? 》
举两个随意产生结果的例子:
1. 在全秩 MF 模型中,通过适当选择 D,item-item 余弦相似度可以等于单位矩阵。这个奇怪的结果表明每个 item 只与自己相似,而与所有其他 item 完全不相似。
2. 通过选择不同的 D,user-user 余弦相似度可以简化为 ΩA・X・X^T・ΩA,其中 X 是原始数据矩阵。这意味着相似度仅基于原始数据,完全没有利用到学习的嵌入。
线性模型之外
除了线性模型,类似的问题在更复杂的场景中也存在:
1. 深度学习模型通常会同时使用多种不同的正则化技术,这可能会对最终嵌入的余弦相似度产生意想不到的影响。
2. 在通过点积优化来学习嵌入时,如果直接使用余弦相似度,可能会得到难以解释且没有实际意义的结果。
研究人员提出了几种解决这些问题的方法:
-
直接针对余弦相似度训练模型,可能需要借助层归一化等技术。
-
完全避免在嵌入空间中工作。相反,在应用余弦相似度之前,先将嵌入投影回原始空间。
-
在学习过程中或之前应用归一化或减少流行度偏差,而不是像余弦相似度那样仅在学习后进行归一化。
语义分析中余弦相似度的替代方案
在论文的基础上,博客作者 Amarpreet Kaur 归纳了一些可以替换余弦相似度的备选项:
-
欧几里得距离:虽然由于对向量大小敏感而在文本数据中不太流行,但在嵌入经过适当归一化时可以发挥作用。
-
点积:在某些应用中,嵌入向量之间的非归一化点积被发现优于余弦相似度,特别是在密集段落检索和问答任务中。
-
软余弦相似度:这种方法除了考虑向量表示外,还考虑了单个词之间的相似度,可能提供更细致的比较。
-
语义文本相似度(STS)预测:专门为语义相似度任务训练的微调模型 (如 STSScore) 有望提供更稳健和和更可解释的相似度度量。
-
归一化嵌入与余弦相似度:在使用余弦相似度之前,应用层归一化等归一化技术能有效提升相似度计算的准确性。