意味の分散表現論の登場
【 意味の分散表現論の登場 】
コンピュータと自然言語が出会った時以来、大量の言語データを統計的に処理すれば、言語の性質がわかるだろうという楽観論が存在しました。ただ、そうしたアプローチは失敗します。
For breakfast I ate _____eggs. という文の空白部分に入るのは、三つの単語{ to, two, too }のどれかという問題に(答えはもちろん 'two'です)、21世紀に入っても、単純な統計的アプローチは、100% 正確に答えることができませんでした。この論文の著者は、なんと10億語からなる用例集を統計的に処理したのですが。
利用したデータの膨大さにも関わらず、このアプローチの無力さは、なんなのでしょう?
【 Bengioの「次元の呪い」-- 語の数と文の数 】
それは問題の複雑さの尺度を見誤ったことによるものです。データの数を増やせば、問題が解けるようになるとは限らないのです。
26文字のアルファベット15文字以内で構成される語の数は、高々、26^15です。ただし、語彙が10万個ある言語での10個の語からなる文は、100000^10=10^50種類もあるのです。
確認しておくべき重要な事実があります。それは、ある言語ですべての語彙を集めた「辞書」は存在するかもしれないのですが、その言語のすべての文の例を網羅した「用語集」は存在しないということです。
Bengioは、早くから、言語処理に現れる組み合わせの数の爆発を意識していた一人でした。意味の分散表現論の登場を告げる歴史的な2003年の論文で、彼は、それを「次元の呪い」 Curse of Dimentionality と呼びました。
【 Bengioのアプローチ 】
この論文で、Bengioは「次元の呪い」と戦うために、次のような方法を提案します。
1. 語彙中のそれぞれの語に、m個の実数に値を持つ、分散したm次元の特徴ベクトル(word feature vector)を対応づける。
2. 語の並びの結合確率関数を、この並びの中の語の特徴ベクトルで表現する。
3. 語の特徴ベクトルとこの確率関数のパラメーターを、同時に学習する。
乱暴なまとめをすれば、こんなことです。
「文」全体を相手にすると、その数はあまりに多すぎて、いくら統計的手法を使っても、言語の特徴をとらえるのは難しい。「次元の呪い」で勝ち目はない。それより遥かに数の少ない「語」の特徴づけから始めよう。「語」から「文」を攻めよう。
それにしても「語」の特徴が一つの数字で表されるとは思えない。m個の数字の組 すなわちm次元のベクトルとして、「語」の特徴を表すことにしよう。
「文」は「語」の並びである。「文」が、「語」の並びとしてある確率的特徴を持つなら、それは「語」の特徴と結びつけることができるはずだ。
コンピュータは、語の特徴ベクトルと「語」の並びの結合確率関数のパラメーターを、同時に学習すればいい。
素晴らしい!
【 Word2Vec と DisCoCat 】
Bengioのこの「語の特徴ベクトル」は、2013年のMikalovの Word2Vec論文では、明確に「語の意味ベクトル」として把握されることになります。これは、意味の分散表現論の一つ画期とみなすことができます。
Word2Vec論文より3年も早い2020年に、Bob Coecke たちは、Bengioのアイデアを継承・発展させ、カテゴリー論をベースとした意味の構成的な分散モデルを構築します。それが「DisCoCatモデル」です。彼らは、それを量子コンピュータを使った自然言語処理(QNLP)のモデルに発展させようとします。
前回の「意味の分散表現論の系譜 – 大規模言語モデルへ」の図の右側の赤いラインが、 Bob Coecke たちの研究の流れを表しています。この流れは、言語の意味のより深い構造を捉えるBradleyらの研究(co−presheaf意味論)に流れ込んでいきます。
【 HintonのAuto Encoder 】
話を、意味の分散表現論の創成期に戻しましょう。
この時期の研究で注目すべきは、HintonによるAuto Encoder というアーキテクチャーの提案だと思います。"Reducing the Dimensionality of Data with Neural Networks" という論文です。タイトルからも、Bengioが提起した、データ量の爆発「次元の呪い」の問題に応えようという問題意識があることがわかると思います。
彼は、2000ピクセルの画像を30ピクセルの画像に圧縮して、その30ピクセルの画像から元の2000ピクセルの画像を復元することが、ニューラルネットを利用すれば可能になると言います。ピクセルではなくベクトルの次元で言うと、これは、2000次元のベクトルから30次元のベクトルへと大幅にデータの次元を減らすことになります。
彼は、ニューラルネットがデータの次元を減らすプロセスをEncoder、この小さな次元のデータから元の大きな次元のデータを復元するプロセスをDecoderと呼びます。EncoderとDecoderの組をAuto Encoderと呼びます。
このAuto Encoder は。意味の分散表現論の基本的アークテクチャーとして、Google 機械翻訳、Transformer を通じて、現代にも引き継がれています。
【 Hintonの「意味的ハッシング」 】
彼は Auti Encoder で新しい画像圧縮の方法を提案しようとしたわけではありません。Hintonには、もう一つ重要な貢献があります。そのことは、彼が紹介している「書籍の分類」に彼の方法を利用できるという例を見るとわかります。
まず、よく使われる単語を2000個ほど選びます。次に、ある本にこれらの単語が何個含まれているかをカウントします。そうすると、ある本に2000次元の整数からなるベクトルを対応づけることができます。
このベクトルをEncoderの入力に与えて、Decoderがこのベクトルを出力に再現できるようにニューラルネット訓練をします。訓練が終われば、Encoderの出力の次元を10次元とすれば、ある本のベクトルをEncoderに与えれば、ある本に10個の数字を対応づけることができます。
Hintonは、40万冊のビジネス書を対象に、この方法で得られた10個の数字が、書籍の分類に有効であることを実際に示しました。
重要なことは、「画像」と「書籍」では、対象のデータの性質はまるで異なっているのですが、彼のAutoencoderは、そのいずれに対しても、高次元のデータを低次元のデータに変換しているということです。別の言葉で言えば、それは、対象の高次元のデータから、低次元のデータを、元の情報のエッセンスとして取り出しているのです。その「情報のエッセンス」は、「意味」と考えることが可能です。
Hintonは、こうしたAutoencoderの働きを、Semantic hashing(意味的ハッシング)と呼んでいます。
SHA-1のようなハッシングでは、ハッシュ化されたデータから元のデータを復元することは不可能なのですが、Semantic hashingされたデータは、データの次元は低いものの、元の情報の中核部分を保持しています。
意味は圧縮できるのです!

コメント
コメントを投稿