Skip to content

相似度函数篇

来自:AiGC面试宝典

宁静致远 2024年01月12日 06:35


  • 相似度函数篇
    • 一、除了 cosine 还有哪些算相似度的方法
    • 二、了解对比学习吗?
    • 三、对比学习负样本是否重要?负样本构造成本过高应该怎么解决?

一、除了 cosine 还有哪些算相似度的方法

除了余弦相似度(cosine similarity)之外,常见的相似度计算方法还包括:

方法公式/原理适用场景
欧氏距离(Euclidean Distance)两点之间的直线距离连续型数值特征,敏感于特征尺度
曼哈顿距离(Manhattan Distance)各坐标轴方向距离之和高维稀疏数据,如城市路径规划
Jaccard 相似度集合交集/并集文本、推荐系统中的集合相似度
皮尔逊相关系数(Pearson Correlation)线性相关性度量衡量变量间的线性关系

📝通俗解释:想象你在比较两篇文章的相似程度。余弦相似度就像看两篇文章的"方向"是否一致(不管长短);欧氏距离就像直接量两篇文章的字数差距;Jaccard 就像看两篇文章用了多少相同的词(去重后);皮尔逊相关系数就像看两篇文章的风格是否同步变化(比如都变长或都变短)。


二、了解对比学习吗?

对比学习是一种无监督/自监督学习方法,通过训练模型使得:

  • 相同样本的表示更接近(正样本对)
  • 不同样本的表示更远离(负样本对)

从而学习到更好的特征表示。

常见对比学习结构

结构说明
Siamese Network(孪生网络)两个共享权重的网络,分别处理两个输入,比较输出相似度
Triplet Network(三元组网络)输入为锚点、正样本、负样本三元组,训练使锚点与正样本距离小于与负样本的距离
SimCLR / MoCo 等近年来流行的对比学习框架,通过数据增强构建正负样本

📝通俗解释:对比学习就像让模型学会"找相同、辨不同"。比如给机器看很多猫的照片,让它认识到"这些都叫猫";同时给它看一些狗的照片,让它明白"猫和狗不一样"。这样训练后,模型就能自动把相似的图片归为一类,不相似的区分开来。


三、对比学习负样本是否重要?负样本构造成本过高应该怎么解决?

对比学习中负样本非常重要。负样本可以帮助模型学习到样本之间的区分度,从而提高模型的性能和泛化能力。负样本的质量直接影响模型能否有效区分不同类别的数据。

📝通俗解释:负样本就像考试中的"干扰选项"。如果只让模型学习什么是"对的"(正样本),它可能变得很死板,只认识训练过的那些例子。加上负样本后,模型才能真正理解"什么是错的",从而变得更聪明、更灵活。

负样本构造成本过高时的解决方案

方案具体做法
降低负样本构造成本利用数据增强技术生成合成负样本;使用近似采样方法选择与正样本相似但不相同的负样本
聚焦关键负样本根据任务特点,重点关注困难负样本(hard negatives),而非构造所有负样本
迁移学习利用预训练模型或跨领域知识,复用已有的负样本库,减少重复构造工作
动量对比(MoCo)通过维护一个负样本队列,用较小的计算成本获得大量负样本

📝通俗解释:如果每次找负样本都要人工标注,效率太低。可以:1)用数据增强自动生成(比如把图片翻转、裁剪后当作"假的"负样本);2)只挑那些最容易混淆的样本重点学习(困难负样本挖掘);3)借用其他任务已经整理好的负样本库(迁移学习)。


来源:知识星球 - AiGC面试宝典原文链接:https://articles.zsxq.com/id_wp25j5xr8ocw.html

基于 MIT 许可发布