word2vec・fastText・ELMo が単語の分散表現として出てくる。CBOWとスキップグラムの違いもあいまい
【疑問】word2vec の CBOW とスキップグラム、fastText、ELMo、単語の分散表現は何が進んだん?【G検定】
前提のおさらい。ワンホットやBoWでは、語どうしの意味の近さを表せん。「車」と「自動車」も、まったく別の列になる
>>1
分散表現(単語埋め込み)は、1つの語を300次元くらいの短い数字の列で表す。意味の近い語は近いベクトルになるように学習する
もとになる考え方は「周りに出てくる語が似ている語は、意味も似ている」(分布仮説)
>>3
word2vecは、ミコロフらの2013年の論文。学習のしかたが2つある
CBOW:周りの語から、真ん中の語を当てる
スキップグラム:真ん中の語から、周りの語を当てる
前後2語ずつを見るなら、スキップグラムは1つの語から4つの語を当てる練習をする
>>4
語彙1万語を300次元で表すなら、覚える数は 個。語彙のワンホットで1万次元やったのが300次元になる
>>4
「王 − 男 + 女 ≒ 女王」の計算ができる、っていう話は本当なん?
>>6
論文でも、そういう語の関係をベクトルの足し引きで当てる評価をしてる。ただ毎回きれいに成り立つわけやなくて、うまくいく関係とそうでない関係がある
fastTextは、ボヤノフスキーらの2017年の論文。語をさらに文字のまとまり(文字n-gram)に分けて学習する
「where」を3文字ずつにすると、両端の印をつけて「<wh, whe, her, ere, re>」の5つ。語のベクトルはこれらのベクトルの和
学習のときに出てこなかった語でも、文字のまとまりからベクトルを作れる
>>8
word2vecもfastTextも、1つの語に1つのベクトルやろ。「銀行の口座」と「川の土手」の英語 bank みたいに、意味が文脈で変わる語はどうするん?
>>9
それを解決したのがELMo。ピーターズらの2018年の論文
双方向のLSTMで文全体を読んで、その文脈での語のベクトルを毎回作る。同じ bank でも、文が違えば違うベクトルになる
>>10
そのかわり、word2vecみたいに語ごとの表を引くだけやなくて、毎回LSTMを動かす計算が要る。軽さではword2vecのほうが上
>>10
文脈で変わるベクトルを、大きいデータで事前に学んでおいて使う、という流れはこのあとのBERTにつながる
管理人のひとこと
- 分散表現は語を300次元ほどの短いベクトルで表し、意味の近い語を近くする。考え方は分布仮説。
- word2vec(2013年の論文)は、CBOW(周りから真ん中を当てる)とスキップグラム(真ん中から周りを当てる)。1万語×300次元で300万個の数。
- fastText(2017年の論文)は文字n-gram(「where」なら5つ)のベクトルの和で語を表し、未知の語にもベクトルを作れる。
- ELMo(2018年の論文)は双方向LSTMで文脈ごとにベクトルを作り、文脈で意味が変わる語に対応する。