よく使われる類似度指標の概要: コサイン類似度、ドット積、L1、L2

よく使われる類似度指標の概要: コサイン類似度、ドット積、L1、L2

類似度の測定は機械学習において重要な役割を果たします。これらのメトリックは、オブジェクト、データ ポイント、またはベクトル間の類似性を数学的に定量化します。ベクトル空間における類似性の概念を理解し、適切なメトリックを採用することは、現実世界のさまざまな問題を解決するための基本となります。この記事では、埋め込み空間内の 2 つのベクトルの近接性を計算するために一般的に使用されるいくつかの類似度測定法を紹介します。

コサイン類似度

コサイン類似度(cos(θ))の値の範囲は、-1(類似していない)から+1(非常に類似している)までです。下の図からわかるように、点 A (1.5, 1.5) と点 B (2.0, 1.0) は 2 次元埋め込み空間内で非常に近い位置にあります。コサイン類似度を計算すると、0.948 という値が得られ、これも 2 つのベクトルが非常に類似していることを表します。点 A (1.5, 1.5) と点 C (-1.0, -0.5) の類似度を比較すると、コサイン類似度は -0.948 となり、2 つのベクトルは類似していないことがわかります。また、埋め込み空間ではそれらが反対方向にあることも確認できます。 cos(θ) 値が 0 の場合、2 つのベクトルは互いに垂直であり、類似も相違もないことを意味します。

2 つのベクトル間のコサイン類似度を計算するには、2 つのベクトルのドット積をそれらの長さの積で割るだけです。コサイン類似度は、主に 2 つのベクトル間の角度を考慮して類似度を判断し、ベクトルの長さは無視します。

Python でコサイン類似度を計算するのは簡単です。逆余弦を取ることで、類似度値 cos(θ) を 2 つのベクトル間の角度 (θ) に変換できます。

 import torch import torch.nn.functional as F import math #Create 3 Vectors A = torch.tensor([1.5,1.5]) B = torch.tensor([2.0,1.0]) C = torch.tensor([-1.0,-0.5]) # Calculate cosine similarity cos(𝜃): cos = F.cosine_similarity(A, B, dim=0) print("Cosine Similarity:", cos) # Calculate the angle 𝜃: # acos is the inverse of cos(x) theta = math.acos(cos) # Convert radians to degrees theta_degrees = math.degrees(theta) print("Angle in radians:", theta) print("Angle in degrees:", theta_degrees)

ドット積

ドット積はよく使われる類似度の尺度です。内積とコサイン類似度は密接に関連した概念です。内積値の範囲は負の無限大から正の無限大までです。負の値は反対方向、正の値は同方向を示し、ベクトルが垂直の場合は 0 になります。ドット積の値が大きいほど類似性が高いことを示します。次の図は、点 P1 と残りの点 P2 ~ P5 の間のドット積の計算を示しています。

内積は余弦方程式から導き出すことができます。つまり、下の図に示すように、2 つのベクトル間の角度の余弦に 2 つのベクトルの長さを掛けることで得られます。ドット積はベクトル埋め込みの長さの影響を受けます。これは類似性メトリックを選択する際の重要な考慮事項となる場合があります。

ドット積は類似度の測定にどのような影響を与えますか?

一連の科学研究論文の類似性を計算しているとします。研究論文の埋め込みベクトルの長さは引用数に比例します。研究論文間の類似性を計算するには、コサイン類似度を使用するのが一般的です。ドット積を使用すると、研究論文間の類似性はどのように変化するのでしょうか?

コサイン類似度はベクトルの方向と大きさを考慮するため、ベクトルの長さが類似度に直接関係しない状況に適しています。ドット積を使用する場合、ベクトルの大きさだけが重要であり、方向はそれほど重要ではありません。

引用数が多い論文(ベクトルが長い)は、その大きさが結果に大きく寄与するため、他の引用数の多い論文とのドット積類似度スコアが高くなります。引用数が少ない論文(ベクトルが短い)は、大きさが小さいため、引用数が多い論文とのドット積類似度スコアが低くなります。

マンハッタン距離(L1)とユークリッド距離(L2)

マンハッタン距離は各次元の絶対差を加算して距離を計算しますが、ユークリッド距離はポイント間の直線距離を計算します。

マンハッタン距離は、グリッドのような動きを伴うシナリオや、個々の次元の重要性が異なる場合に適しています。ユークリッド距離は、最短経路を測定する場合、またはすべての次元が距離に等しく寄与する場合に最適です。

ほとんどの場合、マンハッタン距離は、同じポイントのペアに対してユークリッド距離よりも大きな値を生成します。データの次元が増加するにつれて、ユークリッド距離メトリックよりもマンハッタン距離が優先されるようになります。

マンハッタン距離 L1

ユークリッド距離L2

マンハッタン距離はグリッド線に沿って歩いた距離であり、ユークリッド距離は直線距離です。これら 2 つの距離は、機械学習、画像処理、経路計画など、多くの分野で広く使用されています。

要約する

これら 4 つの距離測定方法には、それぞれ異なる適用シナリオと用途があります。測定方法の選択は、具体的な問題とデータ タイプによって異なります。マンハッタン距離とユークリッド距離は空間座標の距離測定に適用できます。

マンハッタン距離は、都市の道路間の距離を計算するためによく使用され、特徴選択やクラスタリングなどのデータ分析タスクでも使用されます。ユークリッド距離は、空間での距離測定、機械学習、データマイニング、グラフ処理などで広く使用されています。

ドット積距離とコサイン類似度は、ベクトルまたはテキスト データ間の類似性を測定するためによく使用されます。これは主に、テキストマイニングや自然言語処理における文書の類似性などのベクトル類似性や、情報検索や推奨システムなどの分野での測定に使用されます。

<<:  人工知能、機械学習、アルゴリズムが施設・資産管理に与える影響

>>:  Google は、ユーザーにパーソナライズされたヘルプを提供するために、Bard を搭載したアシスタントをリリースしました。

ブログ    
ブログ    
ブログ    

推薦する

...

...

BiLSTMとCRFアルゴリズムを徹底的に理解する

CRF は、品詞タグ付け、単語分割、固有表現認識などのタスクに使用できる、一般的に使用されるシーケン...

...

ジェネレーティブAIが急成長し、デジタル小売業はその名にふさわしい存在となっている

生成型 AI の台頭は単なる外的な現れに過ぎません。それが私たちに伝えているのは、新しい技術の波の到...

...

Objective-C 実装と主要なソートアルゴリズムのグラフィカルなデモンストレーション比較

[[176714]] Objective-C を使用していくつかの基本的なソート アルゴリズムを実装...

機械学習アルゴリズムにおける分類知識の要約

この記事では、機械学習アルゴリズムにおける非常に重要な知識である分類、つまり入力データが属するカテゴ...

GPT-4+Midjourney がコードなしで「Angry Pumpkin」を作成!実際の経験:閾値は低くなく、再現が難しい

市販の AI ツールを使えば、自分でコードを 1 行も書かずに完全な「Angry Birds」を作れ...

AI がデータセンターのワークロード管理の課題を解決する方法

データセンターのワークロードが急増し続ける中、効率性を向上させてコストを削減しながら IT チームの...

ARMベースの3DES暗号化アルゴリズムの実装(1)

暗号化アルゴリズムは主にソフトウェアとハ​​ードウェアを通じて実装されます。ソフトウェア実装には柔軟...

テレンス・タオ氏の新論文の秘密兵器が明らかに:AIを使ってLaTeXをスムーズに書く

数学の巨匠、テレンス・タオ氏は、論文執筆ツールがついにアップグレードされたと投稿しました。以前は T...

Ant Groupが、プログラマー向けAIアシスタントの新たな競合製品となるオープンソースコードモデルCodeFuseを発表

9月8日現在、コード作成を支援できるAI製品はすでに数多く市場に出回っている。本日の外灘大会サブフォ...

AIが科学研究を「行う」ことを学習し、ネイチャー誌に発表。知湖ネットユーザー:水を見るのは耐えられない

人工知能は複雑な囲碁のゲームでは簡単に人間に勝つことができますが、科学的な発見に役立つのでしょうか?...