使用余弦相似度还是欧氏距离?
总览#
度量学习 Metric Learning 的目标是预测不同输入的相对距离。例如衡量两张人脸的相似程度,或是推理两句话表达含义的相似度。通常做法是,让模型使用各种输入 生成代表特征的 embedding 向量,然后用向量间的距离衡量这些输入的相似度。
至于如何计算 embedding 向量间的距离,主要有两种方法。
- 余弦相似度 Cosine Similarity,向量之间角度的余弦值
- 欧氏距离 Euclidean Distance,向量之间的距离
两者异同#
该如何选择合适的计算方法?
余弦相似度 | 欧氏距离 | |
---|---|---|
模长 | 对模长不敏感 | 对模长敏感 |
维度 | 适用于高维空间 | 适用于低维空间 |
正交性 | 能较好区分相似向量 | 几乎无法分辨正交性 |
归一化 | 需要归一化向量以获得准确结果 | 不需要归一化 |
实际应用 | NLP、文档相似度、推荐系统等 | 聚类、分类、降维等 |
计算 | 计算复杂度相对较低 | 在高维空间中计算复杂度较高 |
总结#
对于涉及高维的且模长不重要的向量的任务(例如 NLP),余弦相似度很合适。
对于涉及低维的、模长大小不可忽视的向量的任务(例如分类),欧氏距离很合适。
参考来源#
- “When to use Cosine Similarity over Euclidean Similarity?”,https://www.geeksforgeeks.org/when-to-use-cosine-similarity-over-euclidean-similarity/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律