コサイン類似度を解き明かす:数学とNLPの応用

Towardsdatascience

自然言語処理(NLP)のダイナミックな領域において、コサイン類似度のような指標は、意味検索や文書比較といったタスクの基本となります。広く採用されているにもかかわらず、コサイン類似度の根底にある数学的直感はしばしば謎のままであり、多くのデータ科学者は、なぜユークリッド距離よりもそれが好まれるのかについて漠然とした理解しか持っていません。この核心的な概念を解き明かすことで、その優雅さと実用性が明らかになります。

コサイン類似度は、その核心において、高校の三角法でおなじみの概念であるコサイン関数に由来しています。この関数は、2つのベクトル間の角度に適用されると、それらの方向の整合性を測る強力な尺度を提供します。同じ点から発する2本の矢を想像してください。もしそれらが正確に同じ方向を指していれば、それらの間の角度のコサインは1となり、完全な類似性を示します。もしそれらが正反対の方向を指していれば、コサインは-1となり、完全な非類似性または対立を意味します。もしそれらが垂直で90度の角度を形成していれば、コサインは0となり、方向的な関係がない、あるいは無関係であることを意味します。

この挙動は、コサイン関数を特にNLPにおけるベクトル類似度指標の理想的な基盤とします。テキストや単語は、高次元空間内のベクトルとして表現されることが多く、その位置と方向が意味を符号化しています。この文脈において、コサイン値は意味関係の2つの重要な側面を elegantly に捉えます:共有された意味を示す意味的重複と、対立の度合いを捉える意味的極性です。例えば、「私はこの映画が好きだった」と「私はこの映画を楽しんだ」は、本質的に同じ意味を伝え、高い意味的重複と低い極性を示します。もし単語埋め込みベクトルがこれらのニュアンスを正確に捉えていれば、類義語は1に近いコサイン類似度を、反意語は-1に近いコサイン類似度を、無関係な単語は0に近いコサイン類似度を示すはずです。

実際には、これらの高次元ベクトル間の角度を直接知ることはありません。代わりに、コサイン類似度はベクトル自体から計算されます。それは2つのベクトルの内積を、それらの大きさの積で割ったものです。この計算は本質的にベクトルを正規化し、その長さやスケールではなく、純粋に方向の関係に焦点を当てます。

この正規化は、コサイン類似度をユークリッド距離(2つのベクトル間の直線距離を測定するもう1つの一般的な指標)と比較する際の重要な差別化要因です。ユークリッド距離が低いほど、通常は意味的類似度が高いことを意味します。しかし、ユークリッド距離はベクトルの大きさの違いに敏感です。これは、長さが大きく異なる2つのテキストが、たとえ意味的に同一であっても、単に大きさが異なるという理由だけで大きなユークリッド距離を示す可能性があることを意味します。対照的に、コサイン類似度は、ベクトルが同じ方向を指している限り、大きさの違いに影響されません。このため、コサイン類似度は、絶対的な距離や大きさではなく、ベクトルの方向意味的指向性が主な関心事となる多くのNLPアプリケーションで好まれる選択肢となっています。

しかし、コサイン類似度の実際的な解釈は、単語やテキストのベクトルを生成するために使用される埋め込みモデルの性質に大きく依存します。一部のモデルは意味的重複のみを符号化するように訓練されており、他のモデルは意味的極性も捉えます。2つの異なる事前学習済み埋め込みモデルを使用して単語のペアを比較するシナリオを考えてみましょう。

「映画」と「フィルム」のような類義語の場合、どちらのモデルも一貫して1に近い高いコサイン類似度を示し、強い意味的重複を示します。これは意味を共有する単語の期待と一致します。

しかし、「良い」と「悪い」のような反意語を調べると、モデル間の区別が明確になります。主に意味的重複を符号化するモデルは、両方の単語が感情に関連しているため、正の値を示すものの、より低い類似度を示す可能性があります。しかし、意味的極性を捉えるように明示的に訓練されたモデルは、それらの反対の意味を反映して、負のコサイン類似度を示すでしょう。

最後に、「スプーン」と「車」のような意味的に無関係な単語の場合、どちらのモデルも通常、ゼロに近いコサイン類似度スコアを生成し、それらの直交した(無関係な)ベクトル埋め込みを示します。

要するに、コサイン類似度はベクトル間の角度関係を測定するため、ベクトル大きさの変動に対して頑健です。スコアが1に近い場合は強い類似性、-1は強い非類似性、0は無関係性を示しますが、実際のNLPコンテキストにおける正確な解釈は、基盤となる埋め込みモデルが意味的重複に加えて意味的極性も符号化しているかどうかに決定的に依存します。このニュアンスを理解することが、現代のNLPアプリケーションでこの強力な指標を効果的に活用する鍵となります。