こんにちは、今日も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の値を得ることができました。
これを、コサイン類似度といって、ベクトル同士のなす角度をベースとした類似度計算になります。
ここに来て、高校の教科書を見直すとは思いませんでした。そんな時代です。
今日はここまでです。