【こさいんるいじど】
コサイン類似度 とは?
最終更新:
💡 長さよりも、矢印がどちらを向くかを見る
ゼロではない2つのベクトルについて、向きの近さをコサイン値で表す指標。内積を両方の長さで割って求め、文書を数値で表したベクトルの比較などに使います。
📌 このページのポイント
- 内積を、2つのベクトルの長さの積で割って求める
- 同じ向きは1、直角は0、逆向きは-1
- ゼロベクトルには、そのままの式を適用できない
- 数値上の近さを、意味の一致や正しさと同一視しない
どうして矢印で「似ている」が分かるの?
長さが違っても同じ値になる?
同じ向きなら、長さが違っても1になるよ。例えば[1, 2]と[2, 4]は同じ向き。式は、内積を両方の長さの積で割ったものだね。正の倍率による長さの違いをならして比べられるんだ。
文書検索にも使うの?
文書と質問を同じ埋め込みモデルでベクトルへ変換し、近いものを探す用途があるよ。ただしどんな情報を数値にするかによって結果は変わる。同じ話題なら必ず高い値になるわけでも、値が高ければ文書が正しいわけでもないんだ。
ゼロが並ぶベクトルなら?
長さが0なので、そのまま割り算できない。scikit-learnにはゼロベクトルを含む入力で0を返す例があるけど、これは実装の扱いとして確認しよう。長さ1へ正規化したベクトル同士なら内積と一致するけど、どのツールでも条件なしで同じと考えないことが大切だよ。
まとめ:ざっくりこれだけ覚えればOK!
「コサイン類似度」って出てきたら「数値の矢印が、どれくらい同じ方向を向くかの指標」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cosine Similarity」 = コサイン値による類似度
💬 Cosineは三角関数のコサイン。ゼロではないベクトルのなす角について、そのコサイン値を使います。