0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIの学習って?【GPT × ベクトル比較】コサイン類似度をスーパーライトにまとめる

Posted at

GPT の「文章理解」は テキストをベクトル化し、
そのベクトル同士の「角度の近さ」を計算することで成り立っている。

そのとき使われるのが コサイン類似度(Cosine Similarity)。

2次元ベクトルを使いながら「GPT がどうやって文章の“似ている”を判定するか」理解できたうちに書いておく。

GPTが文章をどう扱っているか

GPT は文章をそのまま扱うのではなく、
文章 → 数千次元ベクトル に変換して内部で比較する。

現状OpenAI Embeddingでベクトル化できる次元数は1536次元と3072次元の2つがある。

文章 ベクトル(イメージ)
「犬が好き」 [0.12, -0.20, 0.98, ...]
「猫が好き」 [0.10, -0.18, 0.95, ...]
「寿司を食べたい」 [0.90, 0.22, -0.10, ...]

このベクトル同士の「近さ」を判断するためにコサイン類似度を利用する。

コサイン類似度

ベクトル同士の角度 を使って「どれくらい似ているか」を測る方法

類似度の値(直感)

同じ方向(0°) → 類似度 1.0
直角(90°) → 類似度 0
逆方向(180°) → 類似度 -1.0

図で見ると

同じ方向(角度0°) → 類似度 1.0(似てる)

         A →
         B →

直角(90°) → 類似度 0(似てない)

A →
↑
B

逆方向(180°) → 類似度 -1.0(真逆)

A →
← B

コサイン類似度の計算(2次元)

ベクトル A = (x1, y1)
ベクトル B = (x2, y2)

内積の計算

① A・B = (x1 * x2) + (y1 * y2)

ベクトルの長さ(2乗をして平方根を取ることで、0以上の値にしている)

|A| = √(x1^2 + y1^2)
|B| = √(x2^2 + y2^2)

② |A| × |B| 

③ コサイン類似度の公式

cosθ = ① ÷ ②

計算例(見れば公式が成り立つのがわかる)

A と B が直角のとき

ベクトル A = (1, 0)
ベクトル B = (0, 1)

A →
↑
B

内積

1*0 + 0*1 = 0

長さ

|A| = 1
|B| = 1

類似度

0 ÷ (1×1) = 0

つまり、似ていない(類似度 0)

同じ方向のベクトル

A = (1, 1)
B = (1, 1)

内積

1*1 + 1*1 = 2

長さ

|A| = √2
|B| = √2

類似度

2 ÷ 2 = 1

→ 完全に同じ方向 = 類似度 1.0

GPT がコサイン類似度を使う理由

これを使って

  • 類似文章検索
  • 「意味が近い」質問のマッチング
  • ユーザーの意図推定
  • FAQ の自動検索
  • 要約や分類の前処理

を可能にする。

「距離」ではなく「角度」を使う理由

距離だと「文章の長さの違い」に影響される。

コサイン類似度は方向だけを見る

  • 長い文章でも
  • 短い文章でも
  • 同じ方向なら「意味が似てる」と判断できる

これがGPTでよく使われる理由。

まとめる

今回は2次元の計算を行ったが、GPTで行う場合は次元の数(1536次元か3072次元)だけ内積と長さの計算を繰り返す。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?