コサイン類似度Cosine Similarity
二つの方向がどれだけ同じ向きかを測る物差し
- コサイン類似度は二つの方向が同じ側を向いている度合いを測る物差しです。
- どれだけ遠くにいるかは見ません。 長さを抜いて角度だけを見ます。
- 長さを抜く理由は、文章の長さや登場回数のせいで長いほうが必ず勝ってしまうことを防ぐためです。
- 同じ側を向くほど1に近づき、無関係なら0の近く、正反対ならマイナスになります。
- 値が高いからといって意味が同じとは限りません。使われる場面が似た反対語もとても近く出ます。
目次
1たとえで理解する
分かれ道に立った二人がそれぞれ方位磁針を取り出して方向を決めます。一人は北東を向いて百歩進み、もう一人は同じ北東を向いて十歩だけ進みました。二人が同じ方向に進んでいるかと聞かれれば答えは「はい」です。歩数はこの問いとは関係がありません。
反対に、一人は北東、もう一人は南を向いていたら、二人とも百歩ずつ進んでいたとしても同じ方向ではありません。どれだけ進んだかではなく、どちらを向いて立っているかが答えを決めます。
針がぴったり重なれば最もよく似ていて、直角にずれれば互いに無関係な方向で、正反対を指せば逆方向です。この物差しには歩数の入る場所がありません。
2くわしく
歩数ではなく方向を見ます
AIが扱う文章は意味を含んだ長い数字の束に変わります。この束はある方向を指す矢印だと考えられます。二つの文章がどれくらい似ているかを尋ねられたら、二本の矢印がなす角度を見ます。
角度だけを見るので、矢印を二倍に伸ばしても答えは変わりません。長さを伸ばすことは方向を変えないからです。コサイン類似度が大きさに揺らがないと言われるのはこの意味です。
距離を測る別の物差しもあります。二点間の直線距離を測る方式は位置まで一緒に見るため、長さの違いがそのまま答えに入ります。文章を扱うとき方向側の物差しをより多く使うのには理由があります。
長さを抜く理由
同じ話を三行で書いた文章と三十行で書いた文章があるとします。内容は同じでも長い文章のほうの矢印がずっと長くなります。長さをそのまま計算に入れると長い文書がいつも上に来てしまいます。 検索結果が長い文章ばかりで埋まってしまうわけです。
単語一つを何度も繰り返しても同じことが起きます。同じ言葉を二十回書いた文章が一回だけ書いた文章より必ず強くなってしまうと困ります。
方向だけを見ればこの問題が消えます。三行の文章と三十行の文章が同じ内容を含んでいれば、二本の矢印は同じ側を向きます。検索やおすすめでこの物差しを基本に使う理由です。
値が語ること
二つの方向が完全に重なると値は1です。直角なら0で、正反対を指すならマイナス1です。実際の文書どうしではだいたいその中間のどこかの値が出ます。
注意点があります。最近のモデルが作る数字の束はたいてい一方に偏って集まっているので、まったく関係ない二つの文章でも0ではなくかなり高い値で出ます。値一つだけを見て似ていると判断すると外れます。
だから順位表として使うのが正しいやり方です。候補千個をこの物差しで測って、一番上に来た十個を選ぶという具合です。どの値から通すか線を引くには、その線をデータで実際に確かめる必要があります。
近いからといって同じ意味ではありません
「良い」と「悪い」を測ると驚くほど近く出ます。二つは意味が正反対なのに使われる場面がほとんど同じだからです。前後に来る言葉が似ていれば方向も似ます。
日付や数字、人名も注意が必要です。異なる二つの日付は方向がとても近く、この物差しだけでは3月の文書と9月の文書を見分けられません。
否定文も同じ落とし穴です。「返金できる」と「返金できない」は方向が近くなります。この物差しは二つの文章が同じ話題を扱っているかを教えてくれるだけで、同じことを言っているかは教えてくれません。
どこで使われるのでしょうか
最も多く使われる場所は検索です。質問一つを矢印に変え、保存しておいた文書の矢印たちと見比べて近い順に並べます。意味で探す検索が出す順位は、たいていこの物差しで測られた結果です。
おすすめでも同じ仕組みが動きます。自分が長く見てきたものの方向をまとめておき、それに近いほうを見せます。文書の山からほぼ同じ内容を二度上げてしまった重複を見つけるときにも使います。
見比べる矢印が数百万個になると、一つずつ全部測るのは大変です。そこであらかじめ似た方向どうしをまとめておき、候補を絞ってからその中だけで正確に測る方法も一緒に使います。
3もう少し正確に
コサイン類似度は二つのベクトルがなす角のコサイン値です。角度が0度なら1、90度なら0、180度ならマイナス1が出ます。長さを1にそろえたベクトルどうしでは、この値と直線距離の順位が入れ替わらないため、実際の検索システムでは計算が速いほうを選んで使うこともあります。
たとえがずれる点もあります。方位磁針の向きは平面上の一つの角度ですが、文章の矢印は数百から数千の方向へ広がった空間に置かれます。その空間では、無作為に選んだ二つの方向がほとんどいつも直角に近くなり、私たちの感覚とは違う振る舞いをします。また方位磁針の北は誰にとっても同じですが、矢印の空間には基準になる方向がありません。値は常に二本の矢印の間でだけ意味を持ちます。モデルを変えると空間自体が変わるので、以前の値と新しい値を並べて比べてもいけません。だからこの物差しは、何がどれくらい似ているかを教える秤ではなく、候補を並べる道具と見るのが正しいのです。
4やってみる
5よくある誤解
類似度が高ければ意味が同じと思われがちですが、実際には使われる場面が似た反対語もとても高く出ます。
スコア0.8なら十分似ていると考えられがちですが、実際にはよい値の基準がモデルや資料ごとに違うので、順位だけに使うべきです。
二つの文章がどれくらい離れているかを測る物差しだと思われがちですが、実際には距離を抜いて方向だけを見る物差しです。
7ひとこと要約
つまりコサイン類似度は二本の矢印がどれだけ同じ側を向いているかだけを測る物差しなので、長さに揺らがない代わりに反対語も近いと言ってしまいます。
誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02