全体像

全体像: ChatGPT は内側で何をしているのか

ChatGPT のチャット欄に 「東京の天気は?」 と打ち込んで、Enter を押す。 1〜2秒後、「東京の今日の天気は晴れ、最高気温は…」という文字列が、1文字ずつ流れるように返ってくる。

入力1文と、出力1文。それだけ。 この間に、機械は何をしているのか?

本書の旅は全部で 13 章あるが、その全てはこの「1 入力 → 1 出力」の 間で起きている工程の話 だ。 細かい話に踏み込む前に、まずは内側のパイプラインを 1 枚の地図 として通しで眺めておきたい。 それが本章のゴールだ。

内側で起きていること — 5 つの工程

機械が「東京の天気は?」を受け取って「晴れです」と返すまでに、内側ではざっくり 5 つの工程 が走っている。

入力: 「東京の天気は?」人間が打ち込んだ文字列① 切る (トークン化)[東京, の, 天気, は, ?]→ 第1章② 数にする (埋め込み)各語が数百次元のベクトルに→ 第2-3章③ 文脈で混ぜる (Attention)「東京」が「の天気」と結びつく→ 第6-7章④ 次の1語を予測”晴れ” の確率がいちばん高い→ 第9章⑤ ④を繰り返して文を作る”晴れ” → “晴れです” → “晴れです。気温は…”→ 第9-10章
図 0.5.1 — 「東京の天気は?」が「晴れです…」に変わるまでの 5 工程。本書の各章は、この絵のいずれかの段に対応する。

ひとつずつ歩いてみよう。各段の最後に、その話を腑に落とすために読むべき章を示す。

① 文字列を「単位」に切る — トークン化

機械が最初にやることは、入力された文字列を小さな単位に切り分ける ことだ。

"東京の天気は?"

[東京, の, 天気, は, ?]

切り方には自由度がある。「東京 / タワー」と切るか「東 / 京 / タワー」と切るかで、後の全工程で見える世界が変わる。 切ったあとの 1 単位を トークン と呼び、現代の LLM では サブワード分割(BPE) という賢い切り方が使われている。

ここで「分かち書き」「形態素解析」を思い出した人もいるかもしれない。あれの LLM 時代版が、トークン化だ。

→ 詳しくは 第1章「トークン化」 で。

② 各トークンに「座標」を与える — 埋め込み

切ったあとのトークンは、まだ単なる 背番号 だ。たとえば「東京 = 4218」「天気 = 7301」。 この状態だと、機械は「東京と大阪が似ている」ことも「天気と気温が関係している」ことも何も知らない。

そこで各トークンに 数百次元のベクトル(数の並び) を割り当てる。 このベクトルが上手く設計されていると、

という、意味の幾何学 が成立する。これが 埋め込み (embedding) だ。 言葉が「空間内の座標」になった瞬間、機械は意味の 構造 を扱えるようになる。

→ 詳しくは 第2章「埋め込み」 で。 第3章 では、「bank」が文脈で「銀行」になったり「土手」になったりする話を扱う。

③ 文脈で意味を混ぜ合わせる — Attention

埋め込みだけでは、各単語は 孤立して意味を持つ だけだ。 だが本当の言葉では、「東京」の意味は その隣に何があるか で変わる。

機械にこの 「隣を見て自分の意味を更新する」 仕組みを与えるのが、Attention(注意機構) だ。 Attention は文の中の各単語に対して、「いま自分は他のどの単語に どれくらい注目 すべきか」を計算し、注目した相手の情報を吸い上げて自分のベクトルを更新する。

そして、この Attention だけを部品にして組み上げた怪物が Transformer だ。 2017 年に発表され、現代の LLM はすべてこの構造を背骨に持っている。

→ 詳しくは 第6章「Attention」第7章「Transformer」 で。 第4-5章 で、Attention 以前の系列モデル(n-gram、RNN)を駆け足で押さえる。

④ 次の1語を予測する — 言語モデル

ここまでで、入力文 "東京の天気は?" は、文脈を吸って意味が濃くなったベクトル列 に変身している。 LLM はこの状態から、次に来るべき 1 トークン を予測する。

"東京の天気は?"
  ↓ (全工程を経て)
次のトークンの候補と確率:
  "晴れ"    32%
  "今日"    15%
  "東京"     8%
  "雨"       6%
  ...

そして、確率の高いものを 1 つ選ぶ。今回は「晴れ」が選ばれたとする。

この「次の1語を予測する」 — 実はこれだけが、LLM の本質的な仕事だ。

要約も、翻訳も、コード生成も、雑談も、突き詰めれば「次に来る単語を当てる」を巨大な規模で繰り返しているだけ。 これが本書全体を貫く合言葉のひとつだ。

→ 詳しくは 第8章「BERT」(読む側の専門家)と 第9章「GPT」(書く側の専門家)で。

⑤ ④を繰り返して、文を生み出す

1 トークン予測したら終わり、ではない。 予測した「晴れ」を 入力末尾に追加 して、もう一度①〜④を流し直す。

1回目: "東京の天気は?"               → "晴れ"
2回目: "東京の天気は?晴れ"           → "です"
3回目: "東京の天気は?晴れです"       → "。"
4回目: "東京の天気は?晴れです。"     → "気温"
...

これを 「文終わり」を示すトークン が出るまで繰り返す。 出力が「1 文字ずつ流れるように」見えるのは、内側で本当に 1 トークンずつ生成しているから だ。

ただし、ここまでで作れるのはあくまで「もっともらしい続き」を書く機械でしかない。 ChatGPT のように 「指示に従う」「対話する」 ようになるには、もう一段の調教が必要だ。 それが Instruction TuningRLHF で、これを経て初めて GPT は ChatGPT になる。

→ 詳しくは 第10章「Instruction Tuning と RLHF」 で。

第11章以降は「応用と弱点」

①〜⑤の基本パイプラインに加えて、本書の後半では、LLM を 実世界で使うとき に避けて通れない 3 つのテーマを扱う。

この地図の使い方

本書のどの章を読んでいても、「いま自分はパイプラインのどこの話を読んでいるか」を、この地図に戻って確認できる。

新しい用語が出てきたら、まず「①〜⑤のどこの工程の話か」を当てはめてみる。 それだけで、細部の話が 全体の中の位置 を持って読めるようになる。

第1章は、いちばん最初の工程 ──「①文字列を単位に切る」── の話から始まる。 たった 1 つの工程に丸ごと 1 章を使うのか、と思うかもしれない。 だがこの「切り方」ひとつで、後の全工程の運命が変わる。

そんなに重い設計判断だということを、第1章で実感してもらうつもりだ。