深圳Yolo 视觉
深圳
立即加入
词汇表

余弦相似度

了解余弦相似度如何衡量人工智能中的向量相似度。使用Ultralytics 计算视觉嵌入向量,并通过Ultralytics 实现规模化。

余弦相似度是一种基础的数学度量标准,广泛应用于 机器学习(ML) 人工智能(AI)领域,用于衡量 两个多维数组或 向量之间的相似程度,无论其大小或模长如何。 通过计算向量空间中两点之间的 夹角,它可判断这两点是否大致指向同一 方向。这种基于角度的方法对于处理那些方向比整体 长度更重要的数据至关重要,因此它在比较 嵌入等抽象数据表示时非常有效。

解读公制背后的数学原理

要计算该指标,需计算两个 向量的点积,并将其除以它们各自 (长度)的乘积。所得的分数始终 落在-1到1之间的固定范围内:

  • 分数为1表示这两个向量指向完全相同的方向,表明相似度达到最大。
  • 分数为0表示这两个向量完全 正交(呈90度角),这意味着它们之间没有 方向上的相似性。
  • 分数为-1表示它们指向完全相反的方向。

在许多专为 计算机视觉(CV)设计的现代深度学习框架中,您可以轻松调用 针对该数学运算进行优化的函数,例如 PyTorch functional 模块或 TensorFlow

区分相关概念

为了弄清楚何时 使用余弦相似度,有必要将其与其他常用的 数据分析指标区分开来:

  • 余弦距离:虽然这两个术语密切相关,但它们成反比。余弦距离的计算方法很简单,即 1 减去 余弦相似度。因此,距离越小,表示向量之间的相似度越高。
  • 欧几里得距离:该度量衡量两个点之间的直线物理距离,因此对向量的 整体大小或幅度非常敏感。相比之下,余弦相似度只关注角度。例如,在 文本分析中,一篇长文档和一个短句子可能具有较大的欧几里得距离,但如果它们属于 同一主题,其余弦相似度仍会保持较高。

人工智能在现实世界中的应用

余弦相似度是众多现代软件产品的核心引擎,它架起了原始数据与 人类意图之间的桥梁。

使用Ultralytics测量视觉相似度

您可以利用最先进的视觉模型,直接从视觉数据中提取高维特征向量。 下面的Python 演示了如何加载 Ultralytics 模型进行 图像分类,为 两张图像生成嵌入向量,并执行 余弦相似度计算 以衡量它们的视觉相似度。

import torch
import torch.nn.functional as F
from ultralytics import YOLO

# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")

# Generate embedding vectors for two separate images
results = model.embed(["bus.jpg", "car.jpg"])

# Calculate the cosine similarity between the two visual embeddings
similarity = F.cosine_similarity(torch.tensor(results[0]), torch.tensor(results[1]), dim=0)
print(f"Visual Similarity Score: {similarity.item():.4f}")

对于希望扩展这些 语义搜索功能的开发者而言,训练高 精度的基础模型至关重要。Ultralytics 提供强大的 数据标注工具、可扩展的云端训练 以及无缝的模型部署功能,简化了这一流程,确保您的 底层嵌入向量尽可能准确且富有意义。

让我们一起共建AI的未来!

开启您的机器学习未来之旅