読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】「埋め込み」って、単語をどうやって数字の並びにしてるん?【AI】

23レスカテゴリ:AI・機械学習
1: 名無しさん

AIは文章を「埋め込みベクトル」にして扱う、って説明をよく見る
単語をどうやって数字の並びにしてるんや

2: 名無しさん

>>1
中身は大きい表(行列)。語彙の単語1つずつに1行ずつ、決まった長さのベクトルが割り当ててある
単語が来たら、その単語の行を取り出すだけ

3: 名無しさん

>>2
表の中の数字は誰が決めたん

4: 名無しさん

>>3
最初はランダムな値。学習しながら、予測がうまくいくように少しずつ動かしていく
単語の意味を人が書きこんでるわけではない

5: 名無しさん

>>4
行を取り出すだけなら、それって行列の掛け算と関係あるん?

6: 名無しさん

>>5
ある。語彙が4語、ベクトルが2次元なら、表 は4行2列。3番目の単語を、3番目だけ1の並び(one-hot)で表して掛けると

3行目がそのまま出てくる。掛け算の形で書けるから、ほかの層と同じように学習で動かせる

7: 名無しさん

で、どういう学習をしたら意味が入るん

8: 名無しさん

>>7
有名なのは word2vec(Mikolov ら、2013年に arXiv 公開)
CBOW は周りの単語から真ん中の単語を当てる。Skip-gram は真ん中の単語から周りの単語を当てる
似た文脈に出てくる単語は、似たベクトルになるように動かされていく

9: 名無しさん

王様 − 男 + 女 = 女王、って話を聞いたことある

10: 名無しさん

>>9
その例は word2vec の論文でも紹介されてる。vector(King) − vector(Man) + vector(Woman) に一番近いのが Queen のベクトルになる
2次元のおもちゃで書くと、成分を「王族っぽさ」「男性っぽさ」として
King − Man + Woman で、Queen と一致する

11: 名無しさん

>>10
それ、例が都合よすぎやろ。いつも足し算で当たるわけないやん

12: 名無しさん

>>11
当たらんことも多い。論文では「意味」の問題8,869問と「文法」の問題10,675問を作って試してる
一番近い単語がぴったり正解のときだけ正解扱いで、同じ意味の別の単語でも不正解
いちばん成績のよかった Skip-gram(1000次元、60億トークンで学習)でも、正解は全体の65.6%

13: 名無しさん

次元と学習データは、多いほどええの

14: 名無しさん

>>13
論文の表(語彙を3万語に絞った一部の問題)やと、両方増やさんと伸びない。CBOW で50次元・2400万語なら13.4%、600次元・7億8300万語なら50.4%
次元だけ増やしても、データだけ増やしても、途中で頭打ちになる

15: 名無しさん

埋め込みの表って、どれくらいの大きさになるん

16: 名無しさん

>>15
語彙の数×次元の数。word2vec の論文は語彙を100万語に絞ってるから、300次元なら

BERT(3万トークンの語彙、768次元)なら で、基本モデル1.1億パラメータの約21%

17: 名無しさん

>>16
語彙にない単語が来たらどうするん

18: 名無しさん

>>17
BERT は単語をもっと細かいかけら(トークン)に分けて語彙を3万に収めてる。論文の例やと flightless が flight ##less に分かれてる
知らない単語でも、知ってるかけらの組み合わせで表せる

19: 名無しさん

word2vec と BERT の埋め込みは、同じもんなん

20: 名無しさん

>>19
入口の表から行を取り出すところは同じ。違うのはその先
word2vec は1つの単語に1つのベクトルで、bank(銀行・川岸)みたいな言葉でも文脈によらず同じ
BERT は表から取り出したベクトルを Transformer の層に通して、前後の単語に合わせて変えたベクトル(文脈つきの表現)を出す

21: 名無しさん

>>20
RAG や CLIP の「文章をベクトルにする」も、これの延長?

22: 名無しさん

>>21
そう。単語ではなく文章や画像1つを1本のベクトルにして、向きの近さ(コサイン類似度)で似たものを探してる
作り方の細かいところはモデルごとに違うけど、「意味が近いものは近い向きにする」という考え方は同じ

23: 名無しさん

埋め込みは単語ごとのベクトルの表で、中身は学習で決まる。似た文脈に出る単語ほど近い向きになる、ってことやな

管理人のひとこと