単語の分散表現:意味をベクトルで表す
コンピュータが単語の意味をどう扱うのかを学びます。基礎層では、単語を意味のあるベクトルに置きかえて文章から学ぶ、という全体像をつかみます。深掘り層では、word2vec の学習のしくみ、CBOW とスキップグラム、fastText、そして静的な単語ベクトルの限界までを必要な数式も交えて説明できるようになります。
ねらい
このレッスンでは、コンピュータが単語の意味をどのように扱うのかを学びます。
基礎
「単語を意味のあるベクトルに変え、文章から自動で学ぶ」という全体像をつかみます。前提となる知識がなくても、ここは読み切れます。
1. 単語を「意味のあるベクトル」にする
コンピュータは数しか計算できません。そこで、単語を数のならびに置きかえます。
素直なやり方は、単語に背番号をふり、その単語の位置だけを1、残りを0にする方法です。これをワンホットベクトルといいます。ただし、この方法は単語を区別できるだけで、意味の近さを表せません。犬と猫は近い言葉なのに、犬と車の関係と同じだけ離れてしまいます。
そこで使うのが分散表現(ぶんさんひょうげん)です。分散表現とは、単語の意味をたくさんの数からなるベクトルで表す方法です。ねらいは、意味の近い単語をベクトルとして近い場所に置くことです。犬と猫は近くに、車は遠くに配置されます。単語を分散表現に変換したものを単語埋め込み(うめこみ)とも呼びます。
言葉で地図を思いうかべてください。広い空間の中に、動物の言葉が集まる一画があり、乗り物の言葉が別の一画に集まります。犬と猫はその動物の一画で肩をならべ、車は遠くの乗り物の一画にいます。分散表現は、この意味の地図の上での位置を単語ごとに数のならびで表したものです。
ポイント
分散表現では、意味の近い単語ほどベクトルが近くなります。だから、ベクトルの近さを計算するだけで、意味の近い単語を見つけられます。
2. そのベクトルは、文章から自動で学べます
意味の近い単語を近くに置くベクトルは、人が手で決めるのではありません。大量の文章から自動で作ります。
土台にあるのは、「単語の意味は、その単語の周りに現れる語によって決まる」という考え方です。周りに出てくる語が似ていれば、意味も似ている、と考えます。この考えをもとにベクトルを学ぶ、代表的な手法が word2vec(ワードトゥベック)です。word2vec は、大量の文章を読みながら、単語のベクトルを少しずつ調整していきます。
ここまでの要点
- 単語は、意味のあるベクトルに置きかえて扱います。
- 分散表現では、意味の近い単語が近いベクトルになります。
- そのベクトルは、大量の文章から自動で学べます。代表的な手法が word2vec です。
まずは全体像をつかめれば十分という人は、ここで区切って大丈夫です。「コンピュータは単語を意味のベクトルにして、文章から学ぶ」と押さえられていれば、このテーマの土台はできています。
発展
ここからは、単語のベクトルがどう学ばれるのか、どんな種類があり、どこに限界があるのかをくわしく見ます。ベクトルの計算など、数式も少し使います。
3. 分散表現をもう少し正確に
分散表現のベクトルは、数百ほどの次元を持ちます。ワンホットベクトルが語彙(ごい)の数だけの長さを持ち、ほとんどが0だったのに対し、分散表現は短く、多くの成分が0でない値を持ちます。値の詰まったベクトルを密(みつ)なベクトルといいます。
意味の近さは、2つのベクトルの向きの近さで測ります。向きが近いほど、意味が近いとみなします。近さの具体的な測り方は、数理のレッスンであらためて扱います。ここでは、ベクトルの向きが近いほど意味が近い、と押さえてください。
学習がうまくいったベクトルには、興味深い性質が現れます。ベクトルの足し引きが、意味の足し引きのように働くことがあります。式で書くと、次のようになります。
(王のベクトル)−(男性のベクトル)+(女性のベクトル)≒(女王のベクトル)
「王」から「男性」らしさを引き、「女性」らしさを足すと、「女王」に近い位置へ動く、という意味です。この関係を類推(るいすい)と呼びます。意味の関係が、ベクトルの位置関係として現れています。
理解の確認
分散表現は、数百次元の密なベクトルで単語を表し、向きの近さで意味の近さを測ります。ベクトルの足し引きが意味の足し引きのように働くことを類推といいます。
4. word2vec の学習:CBOW とスキップグラム
word2vec は、「周りの語との関係」を予測する練習を通してベクトルを学びます。文章の中のある位置に注目し、その単語と周りの語との対応をくり返し予測させます。予測が当たるようにベクトルを少しずつ動かすと、周りの語が似た単語どうしが、近い場所に集まっていきます。
この予測には、向きの異なる2つの方式があります。2つは、word2vec という手法の中の下位の方式です。
| 方式 | 予測の向き | ひとことで言うと |
|---|---|---|
| CBOW(シーボウ) | 周りの語から、真ん中の単語を当てる | 周辺から中心を予測する |
| スキップグラム(skip-gram) | 真ん中の単語から、周りの語を当てる | 中心から周辺を予測する |
CBOW は計算が速く、スキップグラムは出現の少ない単語をよく学べる、という違いがあります。
ポイント
word2vec は上位の手法の名前で、CBOW とスキップグラムはその中の2つの方式です。上下の関係を取り違えないようにしましょう。
理解の確認
word2vec は、周りの語との関係を予測する練習でベクトルを学びます。周辺から中心を当てる CBOW と、中心から周辺を当てるスキップグラムの2方式があります。
5. 未知語に強い fastText
word2vec には弱点があります。学習に使った語彙に無い単語には、ベクトルを与えられないことです。新しい言葉や、活用して形が変わった単語は、うまく扱えません。
この弱点を補うのが fastText(ファストテキスト)です。fastText は、単語をそのまま扱うのではなく、単語を短い部分文字列に分けて学びます。たとえば「走る」「走った」「走れば」は、「走」という共通の部分を持ちます。部分文字列を通して学ぶため、活用形や、学習時に見ていない単語にも、ベクトルを組み立てて与えられます。fastText は、word2vec の考え方を受けつぎ、未知の単語に強くした発展形です。
理解の確認
fastText は、単語を部分文字列に分けて学ぶことで、活用形や未知の単語にもベクトルを与えられます。word2vec が苦手だった「語彙に無い単語」を扱える点が利点です。
6. 静的な単語ベクトルの限界と、次への橋渡し
ここまでの方法には、共通の限界があります。1つの単語に、1つのベクトルしか持てないことです。文脈によらずベクトルが固定されるため、これらを静的な単語ベクトルと呼ぶこともあります。
たとえば英語の「bank」は、「銀行」の意味も「土手」の意味も持ちます。複数の意味を持つ単語を多義語(たぎご)といいます。word2vec や fastText では、多義語であってもベクトルは1つに決まります。銀行の意味で使われていても、土手の意味で使われていても、同じベクトルになります。文脈によって意味が変わる、という事実を表せないのです。
この限界を越えるには、同じ単語でも、前後の文脈によってベクトルが変わるしくみが必要です。文脈に応じて表現を変える言語モデルは、後の言語モデルのレッスンで学びます。ここでは、「静的な単語ベクトルには限界があり、次はそれを文脈で乗り越える」という流れをつかんでおいてください。
注意
word2vec や fastText は、1つの単語に1つのベクトルを与えます。そのため、多義語のように文脈で意味が変わる単語を正しく表しきれません。
理解の確認
静的な単語ベクトルは、多義語であっても単語ごとにベクトルが1つに決まります。文脈で意味が変わる単語を表せないのが限界であり、その先で文脈を扱うしくみへとつながっていきます。
理解度の確認
説明できる項目にチェックを入れましょう。すべて確認できたら、完了ボタンで記録します。
分からなかった点・気になった点
読み込み中です。