言語モデルとは、大量の文章から学んだ「次に来やすい単語の確率」を計算し、その予測を繰り返すことで自然な文章を生成する仕組みである。初期の手法は出現回数を数えるだけのシンプルなものだったが、直前の数語しか参照できないという限界があった。その後、単語を数字の座標(ベクトル)で表す技術が登場し、意味の近い単語を近い位置に集めることで予測の精度が飛躍的に高まった。GPTはこの進化の延長線上にあり、それまでの全トークンを参照しながら次の1トークンを選び続けるという自己回帰の仕組みによって、流暢な文章生成を実現している。
GPTはなぜ「次の単語」を当てられるのか? 言語モデルの仕組みをゼロから
「ChatGPTって、なんであんなに自然な文章が書けるんだろう?」と思ったことはないですか?
実は、その答えは 「次の単語を当て続ける」 というシンプルなアイデアに隠れています。
この記事では 言語モデル の仕組みを、スマホの予測変換という身近な例から出発して、GPTまで4段階で追いかけていきます。難しい数式は一切なし。直感だけで行きましょう!
そもそも「言語モデル」とは? スマホの予測変換で考える
言語モデルって結局なにをするもの?
「ヤモリくん、スマホで文字を打つとき、候補の単語がポンポン出てくるやつ、使ってるか?」

「あ、使ってます!『今日』って打つと『は』とか『の』とか出てくるやつですよね。」
「そう、あれこそが 言語モデル の一番わかりやすい姿だ。言語モデルってのは一言で言うと、ある単語の次にどんな単語が来やすいかの確率を計算する仕組み のことなんだよ。」

「確率……つまり『次はコレが来る可能性が一番高い』を計算してるってことですか?」
「まさに。『今日』の次は『は』が来ることが多い、『は』の次は『いい』や『天気』が多い……そういう出現パターンを大量の文章から学んで、最もそれっぽい次の言葉を予測しているんだ。」


なぜ「次の単語を当てる」だけでAIが賢く見えるの?
「でも先生、次の単語を当てるだけで、あんなに長くてちゃんとした文章が作れるんですか?」
「最初はみんなそこで引っかかる!考えてみてくれ。『次の単語』を当てる → その単語を文末に追加 → また『次の単語』を当てる……これを何十回、何百回と繰り返したらどうなる?」

「あ……文章がどんどん伸びていく!」
「そういうことだ。一手ずつ積み重ねていくだけで、気づいたら段落になってる。シンプルだけど、学習データがでかくなるほどメチャクチャ賢くなるのがミソなんだよ。大規模言語モデル(LLM)は数十億規模の言葉で訓練されているから、あれほど流暢なわけだ。」

n-gram:出現回数を数えて「次の単語」を予測する
コンピュータはどうやって確率を計算するの?
「じゃあ昔のコンピュータはどうやって『次の単語』を計算してたんですか?」
「最初の方法は超シンプルで、とにかく数える ってやり方だ。これを n-gram(エヌグラム)モデル という。」

たとえばこんなイメージ。大量の文章を読み込んで、「今日は」の後に何が来たかを全部カウントする。
| 「今日は」の次に来た単語 |
カウント |
| 天気 |
200回 |
| いい |
150回 |
| 晴れ |
100回 |
| その他 |
50回 |
「なるほど!出た回数が多いほど確率が高い、ってことですね。」
「正解。数式っぽく言うと、(一緒に出た回数)÷(その文脈が出た回数) で確率を出す。これを最尤推定という。日本語のかな漢字変換にもこの仕組みが使われてるんだよ。」

「マルコフ仮定」ってなに?
「n-gramには大事な前提があって、直前の決まった個数の単語だけを見る、というルールがある。これを マルコフ仮定 という。」

「直前の何語見るかで名前が変わる感じですか?」
「よく気づいた!直前1語を見るのがバイグラム、2語ならトライグラム、N-1語見るのがn-gramモデル、って呼び分けてる。」


数えて予測する方式の限界はどこにある?
「聞いてると万能に思えてきましたが……弱点もありますよね?」
「鋭い!3つある。まず 見たことない組み合わせには確率ゼロになる。次に、窓の外は見えない、つまり直前の数語しか参照できないから、文の最初の話題を忘れる。そして 単語が増えるとデータが爆発的に膨らむ。この3つが古典的な限界だな。」

「たとえば『太郎が昨日買った本は……』って文を書いてて、10語後に『太郎は』って出てきたとき、前の話題と繋がってるってわからないんですね。」
「完璧な理解だ。だからこそ次の手が必要になった。」

ニューラル言語モデル:単語を「ベクトル」に変える
単語をベクトルにするとはどういうこと?
「n-gramの限界を突破したのが ニューラル言語モデル。そのカギは 単語をベクトルで表す というアイデアだ。」

「ベクトル……数字の列ですよね?なんで単語を数字にするんですか?」
「いい質問。たとえば『犬』という単語を、ただの文字列じゃなくて 数字の座標 で表す。`[0.9, 0.1, 0.7, …]` みたいな感じ。すると、近い意味の単語は近い座標に集まる ようになるんだ。」

「え、なんで自動的に近くなるんですか?」
「似た文脈で使われる単語は似た座標に引き寄せられるように、ニューラルネットワークが学習するからだ。2003年にBengioらがこの手法を提案して、n-gramが抱えてた『次元の呪い』を大きく解消した。」

💡 単語をベクトルで表す「単語埋め込み」の仕組みをもっと詳しく知りたい方は 【自然言語処理】単語ベクトルとは? も読んでみてください!

「king − man + woman ≈ queen」ってどういう意味?
「先生、よく『king − man + woman = queen』って例えを見るんですけど、これって何なんですか?」
「これはベクトルで単語の 意味の関係 が表せるって証明した超有名な例だ。`king` のベクトルから `man` の成分を引いて、`woman` の成分を足すと、答えのベクトルが `queen` にめちゃくちゃ近い座標になる。」

「つまり『男→女』という変換が、ベクトルの足し引きで表せちゃうってことですか!?」
「そうだ。`king` と `queen` の差も、`man` と `woman` の差も、ベクトル空間の中では同じ方向を向いてる。意味の関係が 空間の方向 として現れるんだよ。これが Word2Vec の有名な特徴だな。」

💡 Word2Vecの仕組みをさらに掘り下げたい方は 【自然言語処理】CBOW Modelについて解説 が参考になりますよ。
GPT:トークンを1つずつ、確率で選び続ける(自己回帰)
GPTは「トークン」を予測するって本当?
「いよいよGPTだ。まず知ってほしいのが、GPTは単語じゃなく トークン という単位で処理してるってことだ。」

「トークンって単語と何が違うんですか?」
「単語をもっと細かく切ったサブワード単位、と思えばいい。英語だと1トークンはだいたい4文字、約0.75語分に相当する。たとえば “unhappy” は “un” と “happy” の2トークンに分かれたりする。」

「細かく切ることで、見たことない単語にも対応できるんですね!」
「まさに。GPT-2だと約50,257種類のトークンの中から次を選ぶ、巨大な多クラス分類として処理してる。」

「自己回帰」ってどういう仕組み?
「GPTが文章を生成する流れを整理するとこんな感じだ。」

- 今までのトークン列 を全部入力する
- 次トークンの 確率分布 を計算する(どのトークンが何%の確率で来るか)
- その分布から 1トークンを選ぶ
- そのトークンを末尾に追加して 1に戻る
「これを繰り返すことで文章が伸びていくんだ。この『自分が出力したものを次の入力に使う』仕組みを 自己回帰(autoregressive) という。」


「さっきのn-gramみたいに『直前の数語だけ』じゃなくて、それまでの全トークン を使うんですね!」
「そこがGPTの強さのひとつだ。n-gramの『窓の外は見えない』問題をクリアしてる。」

土台になっているTransformerは何がすごいの?
「GPTの土台は Transformer(トランスフォーマー)というアーキテクチャで、2017年にGoogleの論文『Attention Is All You Need』で提案された。GPTはその中でもデコーダ部分だけを使っている。」

「Transformerの何がそんなにすごいんですか?」
「最大のポイントは 自己注意機構(Self-Attention)。簡単に言うと、文中のどの単語が今処理中の単語と関係が深いか、を自動で判断して重み付けできるんだ。だから長い文脈でも、遠く離れた単語どうしの関係を捉えられる。」

💡 Attentionの仕組みをもっと詳しく知りたい方は 注意機構(Attention)を5分で掴む ─ 翻訳タスクで追う「どこを見るか」の仕組み をどうぞ!
「あと、Transformerは文を1語ずつ順番に処理するんじゃなく 並列で処理できるから、学習がものすごく速い。これが大規模モデルを現実的にした理由のひとつだ。」


なぜ自然な文章が作れるのか、そして苦手なこと
次の単語を当てるだけで、なぜ文章やコードが書けるの?
「でも先生、正直まだちょっと不思議なんですよ。次の単語を予測するだけで、なんでコードが書けたり、質問に答えたりできるんですか?」
「GPTは学習中に何十億回も『次のトークン予測』を繰り返す。その過程で 文法・事実・推論のパターン を自然に吸収していくんだ。これが 事前学習 だ。」

「コードで言えば、コードを書いた文章を大量に学習するから、『`def` の次には関数名が来る』『括弧は閉じる』みたいなパターンが全部入ってるんですね。」
「そう!コードも英文も、モデルから見たら全部『次のトークンを当てるゲーム』なんだよ。そのゲームを繰り返しまくった結果、さまざまな能力が 副産物として 身につく。」


どうして「もっともらしい嘘」が起きるの?
「でも、ChatGPTって嘘をつくことありますよね?存在しない本の名前とかを自信満々で言ったり……」
「それが ハルシネーション(幻覚) だ。本物っぽい言葉を流暢に生成してしまう現象だな。」

「なんで起きるんですか?」
「根本の原因はここにある。GPTは 『事実かどうか』よりも『文脈として自然かどうか』 を優先するように最適化されてるんだ。次のトークン予測がうまければ学習としては正解になる。だから、もっともらしい流れの文章を作るのは得意だけど、その中身が現実と一致してるかの保証はない。」

「うーん、上手に話すことと、本当のことを言うことって、また別なんですね……。」
「よくわかってる。だから人間が 必ずファクトチェックする 必要がある。ツールとして使うなら、その特性を理解した上で付き合うのが大事だ。」

GPTを使うとき何に気をつければいい?
「まとめると、こういう心構えで使うといいぞ。」

| 気をつけること |
理由 |
| 重要な事実は自分で確認する |
ハルシネーションがあるため |
| 長い会話では前の話題が薄れることがある |
コンテキストの長さに限界があるため |
| 出力は「確率的なベスト推測」と捉える |
正確な情報源ではなく予測エンジンのため |
「賢く使うには、仕組みを知るのが一番の近道ってことですね!」
「その通り。道具の性質を知ってれば、うまく使いこなせるし、騙されることも減る。」

まとめ:「次の単語を当てる」がここまで進化した
ここまでの4段階を振り返りましょう。

| ステージ |
手法 |
キーアイデア |
限界 |
| ① |
スマホの予測変換 |
出現パターンを学習 |
個人の使い方に依存 |
| ② |
n-gram |
出現回数で確率を計算 |
窓が狭い・データ爆発 |
| ③ |
ニューラル言語モデル |
単語をベクトル化して意味を捉える |
文脈の長さに制限 |
| ④ |
GPT(Transformer) |
全文脈を並列に参照・自己回帰生成 |
ハルシネーション |
「次の単語を当てる」というシンプルな目標が、学習データと計算力と賢いアーキテクチャによって、ここまで進化してきました。ChatGPTがあれほど流暢に話せる理由、少しだけ身近に感じてもらえましたか?
「めちゃくちゃ面白かった!予測変換とGPTが同じ仲間だって初めて知りました。」
「そういう『あ、つながった!』って感覚が一番大事だ。次はTransformerの注意機構をもっと深掘りしてみると、さらにGPTの中身が見えてくるぞ。」

関連記事

注意機構(Attention)を5分で掴む ─ 翻訳タスクで追う「どこを見るか」の仕組み
注意機構(Attention)とは、翻訳などのタスクで「入力文のどの単語に、どれだけ注目するか」をスコアで数値化し、その割合に応じて情報を混ぜ合わせることで、必要な文脈を動的に参照できる仕組みである。従来のRNNが固定サイズのカバンに情報を...

【自然言語処理】単語ベクトルとは?
こんにちは! zhackです!私は過去に自然言語処理を用いたプロジェクトに参画していました。その時に学んだことをアウトプットしたいなぁと思ったので、今回から自然言語処理について記事を投稿していきます。現状、以下の記事を想定してます。 単語ベ...

【自然言語処理】CBOW Modelについて解説
こんにちは! zhackです!今回は単語ベクトルの生成方法の一つ、CBOW Modelについて私の理解を解説していきます。(今回の記事は、少し内容に自信がありません。。内容に間違いがある場合はコメントいただけますとありがたいです、、、)自然...
関連記事
この記事に関連する他の記事もあわせてどうぞ。
コメント