top of page

ベクトルと類似度について

こんにちは、今日もLLMに、はまってますか?


さて、今日は数値ベクトルと類似度の話をしようと思います。

直感的に内容を掴んでいただけたら幸いです。


もし、話を読んで、もっとわかるところからということがあったら、もう少し深く話をしますのでお付き合いいただけたらです。


ベクトルの話から、ベクトルはある点Pから、ある点Qまでの方向性をと距離を表したものです。ええ、もうわからないですね。


では、方眼紙で書いてみます。

話はそれますが、オキナ様のProjectPaperは最高ですね。共感してくれる人は少ないかもしれませんが。ずっと愛用品です。ええ、どちらかというと私は紙と鉛筆派ですね。)


下に、xが3、yが4の

座標の点を書きました。









これに、原点つまり、xが0、yが0の点からの矢印を考えます。すると、Aは(3,4)のベクトルとして捉えることができます。

これでも、なんのことかわからないと思います。








では、軸を捉え直して、xを「パクチー好き度」、yを「辛いの好き度」にします。原点は、どっちでもない人とすると、辛くてパクチーが好きな人の好みの方向性が図示されたと、えっと、思いこんでください。

(私は、最近パクチー好きになりました。辛いのは好きでしたが、ある担々麺屋さんで苦手なパクチーが無料だったので、欲に負けてハマりました。)



さて、ここからは、類似度の話をします。

ベクトルの方向性が90度違う人を定義します。

例えば、パクチー好き度が-4、辛いの好き度が3のB(-4,3)を定義します。

ここで、内積という計算をします。

A(xa,ya)、B(xb,yb)とおいた時に、

xa*xb + ya*yaをすると、 3*(-4) + 3*4 = 0となります。

このように、ベクトルの方向性が90度の時、内積は0となります。


では、内積が最小になるのはどのような時かというと、方向性が全く逆の時になります。

180度の時になります。

計算すると、3*(-3) + 4*(-4) = -25です。

(パクチーが嫌いで辛いのが嫌いな人とは好みが合わないということです。)






では、最大は?というと、もちろん重なる時です。

(同志です。)

内積を計算すると、3*3 + 4*4 = 25になります。








ここまでで、内積が、ベクトルの方向性の類似度(趣味嗜好の方向性の近さ)を表せると感じていただけると思います。


最後に、ベクトルは、その長さによって内積の値が大きくなったり、小さくなったりしてしまうので、各ベクトルの長さを掛け合わせたもので割って、揃えてあげます。


今回のベクトルの長さは 3*3 + 4*4 = 25 25のルートで5となります。

両方のベクトルの長さともに5ですので、5*5で25で割ってあげます。


すると、範囲としては、-1から1の値を得ることができました。

これを、コサイン類似度といって、ベクトル同士のなす角度をベースとした類似度計算になります。


ここに来て、高校の教科書を見直すとは思いませんでした。そんな時代です。

今日はここまでです。


bottom of page