Cosine Similarity
コサイン類似度でAIのベクトル類似性を測定する方法を学びます。Ultralytics YOLO26で視覚的な埋め込みを計算し、Ultralytics Platformでスケールする方法を解説します。
コサイン類似度は、機械学習(ML)や人工知能(AI)で使用される基本的な数学的指標で、サイズや大きさにかかわらず、2つの多次元配列またはベクトルの類似度を測定します。ベクトル空間内の2点間の角度を計算し、それらがおおむね同じ方向を向いているかどうかを判定します。この角度に基づくアプローチは、全体の長さよりも方向が重要なデータの処理に不可欠であり、埋め込みのような抽象的なデータ表現の比較に非常に効果的です。
指標の背後にある数学を理解する#
この指標を計算するには、2つのベクトルの内積を求め、それを各ベクトルの大きさ(長さ)の積で割ります。算出されるスコアは、常に-1から1までの一定範囲に収まります。
- スコアが1の場合、ベクトルはまったく同じ方向を向いており、類似度が最大であることを示します。
- スコアが0の場合、ベクトルは完全に直交しており(90度の角度をなし)、方向の類似性がないことを意味します。
- スコアが-1の場合、ベクトルは正反対の方向を向いています。
コンピュータービジョン(CV)向けに設計された多くの最新のディープラーニングフレームワークでは、PyTorchのfunctionalモジュールやTensorFlowのメトリクスなど、この数学的演算に最適化された関数を簡単に利用できます。
関連概念との違い#
コサイン類似度をいつ使用すべきか理解するには、他の一般的なデータ分析指標との違いを把握すると役立ちます。
- コサイン距離:密接に関連する用語ですが、両者は反比例の関係にあります。コサイン距離は、コサイン類似度を1から引いて算出します。そのため、距離が小さいほどベクトル間の類似度は高くなります。
- ユークリッド距離:この指標は2点間の直線距離を測定するため、ベクトル全体のサイズや大きさに大きく左右されます。一方、コサイン類似度が考慮するのは角度のみです。たとえばテキスト分析では、長い文書と短い文のユークリッド距離は大きくなることがありますが、同じトピックを扱っていれば、コサイン類似度は高いままです。
AIにおける実世界の用途#
コサイン類似度は、多くの最新ソフトウェア製品の中核として機能し、生データと人間の意図の橋渡しをします。
- ベクトル検索とRAG:チャットボットなどの自然言語処理(NLP)アプリケーションでは、ユーザーのクエリと内部文書を密な埋め込みに変換します。システムはコサイン類似度を迅速に計算し、ベクトルデータベースから文脈上最も関連性の高い文書を取得します。これは検索拡張生成(RAG)における重要なステップです。
- レコメンデーションシステム:Eコマースやストリーミングサービスでは、Scikit-learnとSciPyなどのツールを利用して、ユーザーの好みやカタログ内の商品をベクトルとして表現します。購入者のプロフィールとさまざまな商品の類似度スコアを測定することで、視覚的またはテーマ的に関連する商品を正確に推薦できます。
Ultralyticsで視覚的類似度を測定する#
最先端のビジョンモデルを使うと、視覚データから高次元の特徴ベクトルを直接抽出できます。次のPythonコードでは、Ultralytics YOLO26モデルを読み込んで画像分類を行い、2枚の画像の埋め込みを生成し、コサイン類似度を計算して視覚的な類似度を測定する方法を示します。
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 Platformは、強力なデータアノテーションツール、スケーラブルなクラウドトレーニング、シームレスなモデルデプロイを提供してこのパイプラインを効率化し、基盤となる埋め込みの精度と有用性を最大限に高めます。









