1行定義
コサイン類似度とは、2つのベクトルがなす角度のコサインの値で、ベクトルの向きがどれだけ近いかを表す指標のことです。
くわしく
コサイン類似度は、2つのベクトル(数値の並び)がどれだけ同じ方向を向いているかを表す指標です。文章や画像を数値のベクトルに直したあと、「似ているかどうか」を測るのによく使われます。
計算のしかた
2つのベクトルをa、bとすると、cos θ = (a・b) / (|a| × |b|)で求めます。a・bは内積(成分どうしの積の和)、|a|はベクトルの長さ、θは2つのベクトルがなす角度です。
たとえばa = (1, 0)、b = (1, 1)なら、内積は1、長さの積は1 × √2です。コサイン類似度は1 / √2で、約0.71になります。角度は45度です。
値の意味
- 1:同じ向き(角度0度)
- 0:直交している(角度90度)
- −1:正反対の向き(角度180度)
値は−1から1の範囲です。単語の出現回数のように成分がすべて0以上なら、0から1の範囲に収まります。
長さを無視する理由
コサイン類似度は、ベクトルの長さで割るため、向きだけを比べます。たとえば文書を単語の出現回数で表すと、長い文書ほどベクトルが長くなります。ユークリッド距離で比べると、話題が同じでも、長さの違いだけで「遠い」と判定されがちです。コサイン類似度なら、単語の使われ方の比率が同じであれば、長さが違っても高い値になります。
逆に、大きさそのものに意味がある場合(購入金額の規模など)は、ユークリッド距離のほうが適しています。
使われる場面
word2vecなどで学習した単語ベクトルの近さを測るのに使われます。文書検索や推薦、RAG(外部の文書を検索して生成AIの回答に使う手法)での類似文書の検索でも使われます。ベクトルの長さを1にそろえておくと、コサイン類似度は内積と一致し、計算が簡単になります。
覚え方
「長さは無視、向きだけを見る」と覚えます。
G検定での出題
出題のされ方
内積をベクトルの長さの積で割る計算、−1から1の値の意味、長さを無視して向きだけを比べる点、ユークリッド距離との使い分け、文書や単語ベクトルの類似検索での利用が問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| コサイン類似度このページの用語 | 2つのベクトルがなす角度のコサインの値で、ベクトルの向きがどれだけ近いかを表す指標 |
| ユークリッド距離 | 各座標の差を2乗して足し合わせ、その平方根をとって求める、2つの点を結ぶ直線の長さ |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
ベクトル(1, 2)と(2, 4)のコサイン類似度は1である。
答えを見る
答え ◯ 正しい
(2, 4)は(1, 2)を2倍したもので、向きが同じです。内積10を長さの積√5 × √20 = 10で割ると1になります。
-
コサイン類似度が0のとき、2つのベクトルは同じ向きを向いている。
答えを見る
答え × 誤り
0は、2つのベクトルが直交している(90度の角度をなす)ことを表します。同じ向きなら1、正反対の向きなら−1です。
-
単語の出現回数を並べた文書ベクトルどうしのコサイン類似度は、負の値にならない。
答えを見る
答え ◯ 正しい
出現回数はすべて0以上なので、内積も0以上になります。そのため、値は0から1の範囲に収まります。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目37 AIに必要な数理・統計知識)
- Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean, Efficient Estimation of Word Representations in Vector Space (2013) (4 Results)
- G. Salton, A. Wong, C. S. Yang, A Vector Space Model for Automatic Indexing, Communications of the ACM 18(11), 613–620 (1975)