コサイン類似度を計算するには、内積空間内の2つのゼロでないベクトル間の角度のコサイン(θ)を測定する必要があります。この測定により、コサイン類似度スコアが生成されます。コサイン類似度値の範囲は-1から1です。
矢印を比較するようなものだと考えてください。同じ方向を向いているなら、それらは非常に類似しています。直角度にある矢印は無関係であり、反対方向を指す矢印は類似していません。
この角度によるアプローチは、多くの機械学習(ML)、自然言語処理(NLP)、人工知能(AI)システムの基礎となります。これらのテクノロジーは、データのベクトルベース表現に依存しているため、データはその意味や他のデータとの類似性を把握するために数値形式に変換されています。
たとえば、チャットボットは、テキストをベクトル形式に変換するために単語埋め込み技術を使用したり、意図を理解するためにディープラーニング・モデルを使用したり、データベースから最も関連性の高い応答を取得するための類似性検索アルゴリズムを使用したりします。コサイン類似度により、これらの各ステップが可能になります。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
文中の次の単語を予測する場合でも、近くの食事をする場所を提案する場合でも、私たちのデジタル・ライフを形成するシステムの多くは、類似性の測定に依存しています。レコメンド・エンジンや大規模言語モデル(LLM)などのテクノロジーは、コサイン類似度を使用して、どのコンテンツが最も関連性が高く、どの応答が最も「意味をなす」かを識別します。
これらの決定は、高次元データセットまたは疎なデータセットのデータポイント間の関係を分析することによって行われます。従来のテキスト分析では、多くの場合、Bag-of-Words(BoW)の高度な形式である項頻度-逆文書頻度(tf-idf)などの手法を使用して文書を数値表現に変換していました。BoWが文書中に単語が出現する頻度をスコア化するのに対し、tf-idfは、より大きなデータセット全体で単語がどれだけ一般的か、あるいは稀であるかに基づいてスコアを調整します。
より高度なシステムでは、ニューラル・ネットワークを使用してベクトル埋め込み(さまざまなタイプのデータを数値の配列として表すデータ・ポイントの数値表現)を生成します。たとえば、「医師」と「看護師」などの単語は、ベクトル空間で互いに近くに表示される可能性があり、モデルはそれらを関連していると見なします。これらの埋め込みでは、大規模な比較をより高速かつ効率的に行うために、主成分分析(PCA)などの追加の手順が実行されることがよくあります。
どちらのアプローチでも、コサイン類似度は、結果として得られるベクトルがどの程度一致しているかを測定し、システムが複雑なデータセット全体のパターンと関係を識別するのに役立ちます。NLP、AI、データ・サイエンスにおいて、コサイン類似度は次の点で中心的な役割を果たします。
検索エンジンは、コサイン類似度を利用してユーザーのクエリと関連文書をマッチングさせ、精度とランキングの質を向上させています。
ニューラルネットワークとLLMは、コサイン類似度を使用してベクトル埋め込みを比較し、インプット間の意味的な近接性を評価します。
レコメンド・システムは、類似性の検索技術を適用して、ユーザーの行動や好みに合った製品、メディア、またはコンテンツを提案します。
コサイン類似度は、類似したテーマを持つドキュメントをグループ化することでトピック・モデリングをサポートします。これらのトピック分布は通常、潜在ディリクレ配分(LDA)などの方法を使用して生成されます。
その核となるコサイン類似度は、2つのベクトルの間の角度のコサインを計算することによって、2つのベクトルがどの程度整合しているかを測定します。
文書比較のような現実世界の用途では、データは多次元空間内のベクトルとして表現されます。各次元は特定の単語、属性、またはアクションを表す場合があり、その次元の値は、その項目がどれほど目立っているか、または重要であるかを反映します。
コサイン類似度は、以下の方法で計算できます。
数式は次のように表すことができます。
コサイン類似度 = (A · B) / (||A|| × ||B||)
説明:
結果として求められるスコアは、-1から1の範囲に収まります。
さらに明確な説明をするにあたり、「王」と「女王」という2つの言葉を想像してください。
どちらも類似した文脈で使用されます。各単語は、LLMによって処理されると、何百万もの文における用法に基づいて用語の意味を捉えるベクトル埋め込みに変換されます。「王」と「女王」はどちらも「王室」、「王座」、「君主」などの単語の近くに頻繁に出現するため、結果として得られる埋め込みはほぼ同じ方向を指します。
次に3つ目の単語「リンゴ」について考えてみましょう。同じ文書に登場することもありますが、「果物」「果樹園」または「さくさく」といった用語とより頻繁に関連付けられます。そのベクトルはほぼ反対方向を向いているため、コサイン類似度は低くなります。グラフにすると、「王」と「女王」の矢印はほぼ横並びになり、「リンゴ」の矢印は大きく異なる角度で飛び出します。
パフォーマンスを最適化し、関連する一致をより速く取得できるようにするために、多くの組織ではこれらの埋め込みを特殊なベクトル・データベースに保管します。ベクトル・データベースは、高次元ベクターのインデックスを作成して検索を改善し、最も類似した結果を返すように設計されたツールです。
コサイン類似度は、類似度メトリクスの広範なエコシステムにおける1つのアプローチにすぎません。各メトリクスは、さまざまな方法で類似度を評価するように設計されており、多次元空間内の特定の種類のデータに適性を持っています。たとえば、以下のような例が挙げられます。
ジャッカード類似度は、共通部分のサイズを結合部分のサイズで割ることにより、2つのデータセット間の重複を測定します。これは、タグ、クリック、製品ビューなど、カテゴリー・データまたはバイナリー・データを含むデータセットに一般的に適用され、特にレコメンデーション・システムに役立ちます。ジャッカードは存在するかどうかには焦点を当てますが、頻度や規模は考慮しません。
ベクトルAとBの内積は、それらが同じ方向を向いている程度を反映しますが、大きさを正規化しません。この要因があるため、拡張には注意を要します。大きな値を持つベクトルは、方向が異なってもより類似しているように見えることがあります。
このメトリック上のコサイン類似度は、ベクトルの内積をベクトルの大きさの積で割ること(コサイン類似度の式)で改善します。したがって、コサイン類似度は、特に高次元データセットにおいて、さまざまな長さのゼロではないベクトルを比較する場合により安定しています。
実際には、組織は、データセットの構造や回避したい非類似性の種類に応じて、他のメトリクスとともにコサイン類似度測定を使用することがよくあります。
たとえば、NLPやLLMアプリケーションにおける類似度検索では、コサイン距離とディープラーニング・アルゴリズムでトレーニングされた埋め込みモデルが組み合わせられることがよくあります。コサイン類似度の計算は、Scikit-learn、TensorFlow、PyTorchなどのオープンソース・ツールにも統合されており、これによりデータサイエンティストは大規模なデータセット全体でコサイン類似度を簡単に計算できます。
コサイン類似度は、無数のシステムにまたがる役割を考えると、従来の類似度メトリクスに比べていくつかの利点があります。
コサイン類似度には利点がある一方、次のような制限もあります。
コサインの類似性から最大限の価値を引き出すために、組織は次のことを検討できます。
組織は、特に高次元の入力を使用する場合に、計算前にベクトルを正規化して、スケールの一貫性と有効な結果を確保できます。
コサイン類似度計算中に「ゼロ除算」エラーが発生するため、企業はデータセットをクリーンアップしてゼロ・ベクトルを削除するか、フラグを立てる必要があります。
組織は、多面的な類似性が必要な場合、コサイン類似性を、ジャッカード類似度やユークリッド距離のような付加的な測定基準で補完することができます。
企業は、特にアプリケーション・プログラミング・インターフェース(API)のようなリアルタイム・システムで使用される場合、導入前に、実世界の状況を反映した環境でコサイン類似性のパフォーマンスを評価することが推奨されます。
組織は、成熟したオープンソース・ライブラリーを活用してコサイン類似度の計算を大規模かつ効率的に実行できます。たとえば、Scikit-learnは、Pythonモジュール・パス sklearn.metrics.pairwise を通じて、すぐに使用できるコサイン類似度関数を提供します。
あるいは、NumPyを使用して、数式をPythonで直接コーディングすることもできます。
“cosine_similarity = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))”
矢印と同様に、コサイン類似度は組織が方向性を合わせる際に有用です。検索結果のマッチングやデータ駆動型の意思決定における情報供給など、コサイン類似度は強力な洞察を提供し、さまざまなユースケースにわたってエクスペリエンスをパーソナライズする上で役立ちます。
企業が繁栄するには、データを活用して顧客ロイヤルティーを構築し、ビジネス・プロセスを自動化し、AI駆動型のソリューションで業務を刷新する必要があります。
IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。
より良い意思決定を可能にする、AIを活用して洞察を引き出すCognos Analytics 12.0をご紹介します。