Benjioの「次元の呪い」-- 語の数と文の数
【 Benjioの「次元の呪い」-- 語の数と文の数 】
今回のセッションから新しい章「意味の分散表現の登場」に入ります。
最初に扱うのは、2013年のThomas Mikolov, Jeff DeanらのWord2Vec論文です。この論文は、自然言語処理システムが現在の大規模言語モデルへと発展する「進化」の戸口にたつものだったと考えています。
ここでは、この論文に先行した当時の研究状況を振り返ってみようと思います。
コンピュータと自然言語が出会った時以来、大量の言語データを統計的に処理すれば、言語の性質がわかるだろうという楽観論が存在しました。ただ、そうしたアプローチは失敗します。
For breakfast I ate _____eggs. という文の空白部分に入るのは、三つの単語{ to, two, too }のどれかという問題に(答えはもちろん 'two'です)、21世紀に入っても、単純な統計的アプローチは、100% 正確に答えることができませんでした。この論文の著者は、10億語からなる用例集を統計的に処理したのですが。
それは問題の複雑さの尺度を見誤ったことによるものです。データの数を増やせば、問題が解けるようになるとは限らないのです。
26文字のアルファベット15文字以内で構成される語の数は、高々、26^15です。ただし、語彙が10万個ある言語での10個の語からなる文は、100000^10=10^50種類もあるのです。
ある言語で、すべての語彙を集めた辞書は存在するかもしれないのですが、その言語のすべての文の例を網羅した用語集は存在しません。
Benjioは、早くから、言語処理に現れる組み合わせの数の爆発を意識していた一人でした。2003年の論文で、彼は、それを「次元の呪い」 Curse of Dimentionality と呼びました。
この論文で、Benjioは「次元の呪い」と戦うために、次のような方法を提案します。
1. 語彙中のそれぞれの語に、m個の実数に値を持つ、分散したm次元の特徴ベクトル(word feature vector)を対応づける。
2. 語の並びの結合確率関数を、この並びの中の語の特徴ベクトルで表現する。
3. 語の特徴ベクトルとこの確率関数のパラメーターを、同時に学習する。
乱暴なまとめをすれば、こんなことです。
「文」全体を相手にすると、その数はあまりに多すぎて、いくら統計的手法を使っても、言語の特徴をとらえるのは難しい。「次元の呪い」で勝ち目はない。それより遥かに数の少ない「語」の特徴づけから始めよう。「語」から「文」を攻めよう。
それにしても「語」の特徴が一つの数字で表されるとは思えない。m個の数字の組 すなわちm次元のベクトルとして、「語」の特徴を表すことにしよう。
「文」は「語」の並びである。「文」が、「語」の並びとしてある確率的特徴を持つなら、それは「語」の特徴と結びつけることができるはずだ。
コンピュータは、語の特徴ベクトルと「語」の並びの結合確率関数のパラメーターを、同時に学習すればいい。
素晴らしい!
Tomas Mikolovらの Word2Vecは、Benjioのいう「語の特徴ベクトル」を、明確に「語の意味」としてとらえたものです。
ただ、Benjioの論文から、Word2Vec論文がうまれるまでに、10年の時間が必要でした。
今では、「語の特徴ベクトル」を「語の意味」と言い換えるのは、自明なことに思えるかもしれませんが、それは後知恵です。そこには、飛躍があるのです。
「語の意味のベクトル表現」でもっとも重要なことは、このアプローチによって、語の意味の「近さ」を定義できるようになったことです。語𝑣と語𝑤の意味の「近さ」は、ベクトルvと𝑤の内積 v・wで定義することができます。
https://www.marulabo.net/docs/meaning/
コメント
コメントを投稿