DIVE

Part 7: 確率とAI・LLM

第 20 章

言語の分散表現 — 『意味』を座標に変える

前章で、私たちは数値のパターンを学習するニューラルネットを自作した。だが現代AIの主役——ChatGPTのような大規模言語モデル——が扱うのは、数値ではなく言葉だ。

ここに根本的な壁がある。コンピュータは数しか扱えない(第1章)。では「猫」や「王様」という言葉の意味を、どうやって数に変換し、理解させるのか。この章で解くのは、その変換の魔法——分散表現(単語埋め込み)だ。そしてその先に、「王 − 男 + 女 ≒ 女王」という、思わず二度見してしまう計算が待っている。


素朴な方法の限界 — 歴史の必然

まず、最も単純な方法から考えよう。単語に番号を振る。「猫=1、犬=2、王=3…」。だがこれは失敗する。番号の大小(犬2 > 猫1)に意味がないのに、数値として計算すると誤った関係を生む。

次の案が one-hot表現だ。語彙数だけの長さのベクトルを用意し、その単語の位置だけ1、他は全部0にする。

語彙 = [猫, 犬, 王, 女王, 車]  (5単語)
  猫   = [1, 0, 0, 0, 0]
  犬   = [0, 1, 0, 0, 0]
  王   = [0, 0, 1, 0, 0]

番号の大小問題は消えた。だが致命的な欠陥が二つある。

  1. 意味を持たない: 「猫」と「犬」(似ている)も、「猫」と「車」(無関係)も、ベクトルとしては等しく直交している。第17章の内積で測っても、どの単語ペアも類似度ゼロ。意味の近さがまったく表現できない。
  2. 次元が爆発する: 実際の語彙は数万〜数十万語。one-hotだと各単語が数万次元の、ほとんど0のスカスカなベクトルになる。無駄が多すぎる。

そこで人類が至った発想が、分散表現(distributed representation)だ。単語を、数百次元程度の密なベクトルで表す。しかも各次元が「意味の要素」を担い、似た意味の単語は近くに配置されるように学習する。


厨房のアナロジー — 食材を「特徴の座標」で表す

第17章で、料理を「味の座標」で表したのを思い出してほしい。同じことを、単語=食材でやる。各食材を、いくつかの特徴軸で採点する。たとえば (甘い, 動物性, 高級感, 柔らかい) の4軸:

これで、食材が「特徴空間の点」になった。マグロとサーモンは近く、砂糖は遠い。意味の近さが、空間内の距離になった。

私が飲食店でメニューや仕入れを考えるとき、無意識にこれをやっていた。「この魚はあの魚と使い方が近い」「これは代替が効く」——頭の中で食材を多次元の特徴で捉え、近いものをグループ化していた。単語埋め込みがやっているのは、まさにこれ。言葉を「意味の特徴」の座標に変換するのだ。ただし決定的な違いは、AIはこの特徴軸を人間が決めるのではなく、データから自動で学習する点にある。


分布仮説 — 「意味」はどこから来るのか

では、AIはどうやって単語の「意味」を、教師なしで学ぶのか。鍵は、言語学の古い洞察——分布仮説(distributional hypothesis)にある。

「単語の意味は、その周囲に現れる単語(文脈)によって決まる。」 ——似た文脈で使われる単語は、似た意味を持つ。

例を見よう。

「熱い ___ を飲んだ」
「冷たい ___ を注いだ」
「___ にミルクを入れた」

この ___ に入る単語——「コーヒー」「紅茶」——は、似た文脈で使われる。だから両者は似た意味を持つ、と推論できる。逆に「自動車」はこの文脈に現れないので、遠い意味だと分かる。

「言葉は、それが一緒に使われる仲間によって知られる」。人間が知らない外国語の単語でも、前後の文脈を大量に見れば意味を推測できるのと同じだ。AIは、膨大なテキストから「どの単語が、どの単語の近くに現れるか」を学習し、そこから各単語のベクトルを決める。


word2vec — 文脈予測で意味を学ぶ

この分布仮説を、ニューラルネット(第19章)で実装したのが、2013年にGoogleのトマス・ミコロフらが発表した word2vec だ。仕組みは巧妙にシンプルだ。

「ある単語から、その周囲の単語を予測する」というタスクをニューラルネットに解かせる(Skip-gramと呼ばれる方式)。

入力: 「コーヒー」
   │  ニューラルネットに、周囲に来る単語を予測させる
   ▼
予測すべき: 「熱い」「飲む」「カフェ」「ミルク」...

ここが天才的な発想だ。予測の精度そのものはどうでもいい。この予測タスクを学習する過程で、ネットワークの中間に生まれる重みベクトル——それこそが、求める単語埋め込みなのだ。似た文脈で使われる単語(コーヒーと紅茶)は、似た予測をするために、自然と似たベクトルへ収束する。第18章の勾配降下法が、この収束を駆動する。

学習が終わると、各単語は数百次元の意味空間の一点に配置される。第17章のコサイン類似度で「意味の近さ」を測れるようになる。

# 学習済み単語ベクトルを使ったイメージ(gensim等のライブラリ)
model.similarity("コーヒー", "紅茶")   # → 0.8(高い:似た意味)
model.similarity("コーヒー", "自動車") # → 0.1(低い:無関係)

model.most_similar("猫")
# → [('犬', 0.76), ('子猫', 0.74), ('ペット', 0.71), ...]
#    意味的に近い単語が並ぶ

意味のベクトル演算 — 「王 − 男 + 女 ≒ 女王」

分散表現の最も美しい帰結が、これだ。単語ベクトルは、意味の関係が「方向」として表れるという驚くべき性質を持つ。

有名な例が、これだ:

王⃗−男⃗+女⃗≈女王⃗\vec{\text{王}} - \vec{\text{男}} + \vec{\text{女}} \approx \vec{\text{女王}}

意味を追ってみよう。王⃗−男⃗\vec{\text{王}} - \vec{\text{男}} は、「王」から「男性」という要素を引き算する——残るのは「君主である」という概念だ。そこに 女⃗\vec{\text{女}} を足すと、「女性の君主」=「女王」に着地する。意味の足し引きが、ベクトルの足し引きで実現する。

意味空間の中で「性別」と「君主性」が方向として現れる:

     女王 ●───────────● 王
          │           │   ← この2本の矢印(男→女)が平行=同じ「性別」方向
          │           │
      女 ●───────────● 男
          
   王 − 男 = 「君主性だけ」のベクトル
   それに 女 を足す → 女王 に着地

同様に「東京 − 日本 + フランス ≒ パリ」(首都の関係)、「歩く − 歩いた + 走る ≒ 走った」(時制の関係)といった類推が成立する。単語をベクトルにしただけで、意味の構造そのものが空間の幾何学として立ち現れる。これは、人間が明示的に教えたものではない。大量のテキストから、AIが自ら発見した「意味の地図」なのだ。

第17章で「AIは世界を数で捉える」と述べたが、その最も鮮烈な実例がこれだ。言葉という、最も人間的で曖昧なものが、計算可能な座標に変換される。


embeddingは、あらゆるAIの入口

この「対象をベクトルに変換する(embedding、埋め込み)」という発想は、今やAIの標準的な入口になっている。単語だけではない。

近年注目される RAG(検索拡張生成) やベクトルデータベースも、突き詰めれば「文書をembeddingし、質問のembeddingと内積(コサイン類似度)が近いものを探す」——第17章とこの章の技術の応用だ。「意味で検索する」時代の土台が、この分散表現にある。

そして次章の主役 Transformer(LLMの心臓)も、まず入力の単語をembeddingでベクトルに変えることから始まる。言葉をベクトルにする——このステップなしに、現代のAIは一歩も動けない。


まとめ — 「おまじない」の消し方

  1. one-hotの限界:番号や one-hot では、単語の意味の近さも表せず、次元も爆発する
  2. 分散表現:単語を数百次元の密なベクトルにし、似た意味の語を空間内で近くに配置する
  3. 分布仮説:「意味は文脈で決まる」。似た文脈で使われる語は似た意味を持つ
  4. word2vec:文脈予測タスクの副産物として意味ベクトルを学習。勾配降下法が収束を駆動する
  5. 意味のベクトル演算:「王 − 男 + 女 ≒ 女王」。意味の関係が空間の方向として立ち現れる

「AIはどうやって言葉の意味を理解するのか」——その答えは、言葉を意味の座標に変換し、文脈から自動で学ぶ、分散表現にあった。

役者は完全に揃った。言葉はベクトルになり(本章)、ニューラルネットは学習でき(第19章)、GPUがそれを超並列で回す(第16章)。最終章では、これらすべてを統合し、現代AI革命の中心——Transformerと、その心臓部Self-Attention——に到達する。DIVEの、最後の潜水へ。


「意味とは、孤立して存在するものではない。ある言葉が何を意味するかは、それが他のどんな言葉と共に在るかで決まる。AIが言語から学んだこの真実は、言葉だけでなく、私たち自身についても何かを語っているのかもしれない。」