YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

コサイン類似度

AIにおいてコサイン類似度がベクトルの類似性をどのように測定するのかを学びましょう。Ultralytics を使用して視覚的埋め込みを計算し、Ultralytics スケーリングを行います。

コサイン類似度は、 機械学習(ML) 人工知能(AI)において、 2つの多次元配列や ベクトルが、そのサイズや大きさを問わず、 どれほど類似しているかを測定するために用いられる基本的な数学的指標です。ベクトル空間内の2点間の角度を計算することで、 それらが概ね同じ方向を指しているかどうかを判断します。この角度に基づくアプローチは、 全長よりも向きが重要となるデータの処理において極めて重要であり、 埋め込み(エンベディング)のような抽象的なデータ表現の比較に 非常に有効です。

メートル法の背後にある数学を理解する

この指標を算出するには、2つの ベクトルの内積を求め、それをそれぞれの 大きさ(長さ)の積で割ります。その結果得られるスコアは、常に -1から1までの固定された範囲内に収まります:

  • スコアが1の場合、ベクトルは完全に同じ方向を指しており、最大の類似性を示しています。
  • スコアが0の場合、ベクトルは完全に 直交(90度の角度)しており、方向的な類似性が ないことを意味します。
  • -1というスコアは、それらが完全に反対の方向を指していることを意味します。

コンピュータビジョン(CV)向けに設計された多くの現代的なディープラーニングフレームワークでは、 この数学的演算用に最適化された関数に簡単にアクセスできます。 例えば、PyTorchモジュールTensorFlow 挙げられます。

関連概念の区別

コサイン類似度を、他のよく使われる データ分析指標と区別しておくことは、 いつそれを使用すべきかを理解する上で役立ちます:

  • コサイン距離: これらの用語は密接に関連していますが、逆比例の関係にあります。コサイン距離は、単に コサイン類似度から1を引いた値として計算されます。したがって、距離が小さいほど、ベクトル間の類似度が高いことを示します。
  • ユークリッド距離: この指標は2点間の直線的な物理的距離を測定するため、 ベクトルの全体的な大きさや大きさに非常に敏感です。対照的に、コサイン類似度は角度のみを考慮します。例えば、 テキスト分析において、長い文書と短い文章はユークリッド距離が大きな値を示すかもしれませんが、 同じトピックを共有している場合、それらのコサイン類似度は高いままとなります。

AIの実世界での応用

コサイン類似度は、数多くの最新ソフトウェア製品の核となるエンジンとして機能し、生データと 人間の意図との間をつなぐ役割を果たしています。

  • ベクトル検索とRAG: 自然言語処理(NLP) のアプリケーションでは、チャットボットなどにおいて、ユーザーのクエリや内部文書が高密度な埋め込みベクトルに変換されます。システムは コサイン類似度を高速に計算し、ベクトルデータベースから文脈的に最も関連性の高い文書を 検索します。これは、 検索拡張生成(RAG)における重要なステップです。
  • レコメンデーションシステム:Eコマースやストリーミングサービスでは、 Scikit-learn やSciPyといったツールを活用し、 ユーザーの嗜好や商品カタログをベクトルとして表現しています。購入者の プロフィールと様々な商品との類似度スコアを測定することで、システムは視覚的またはテーマ的に関連性の高い商品を正確に推薦することができます。

Ultralyticsによる視覚的類似性の測定

最先端の画像認識モデルを使用すれば、視覚データから直接高次元の特徴ベクトルを抽出することができます。 以下のPython 、 画像分類 Ultralytics モデルを読み込み、 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 データアノテーション、スケーラブルなクラウド学習、 そしてシームレスなモデルデプロイメントのための堅牢な ツールを提供することで、このパイプラインを効率化し、 基盤となる埋め込み表現が可能な限り正確かつ意味のあるものとなるよう保証します。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。