この回のゴール
- N-gram という最古典の言語モデルで、文生成を自作する
- マルコフ仮定 と 最尤推定 を数式で理解する
- N-gram の限界を体感して、なぜ Transformer(LLM)が必要になったか を腹落ちさせる
1. 問題を定式化する
「文章を生成する」とは、数式で言うと:
$$ p(w_1, w_2, \ldots, w_T) $$
つまり 単語列の同時確率 を計算できればよい。
チェインルールで分解すると:
$$ p(w_1, \ldots, w_T) = \prod_{t=1}^{T} p(w_t \mid w_1, \ldots, w_{t-1}) $$
👉 つまり「それまで出てきた全単語の条件下での次の単語の確率」がわかれば文が作れる。
これが 言語モデリング の根本です。LLM も全く同じ式を学習しています。
2. マルコフ仮定: 全部は見ない
でも「全ての過去の単語」を考慮するのは難しい。そこで 近似:
$$ p(w_t \mid w_1, \ldots, w_{t-1}) \approx p(w_t \mid w_{t-n+1}, \ldots, w_{t-1}) $$
つまり「直近 $n-1$ 個の単語だけ」を使う。これが n-gram モデル。
| モデル | 条件にする過去 | 例 |
|---|---|---|
| Unigram (1-gram) | なし | $p(w_t)$ |
| Bigram (2-gram) | 直前 1 単語 | $p(w_t \mid w_{t-1})$ |
| Trigram (3-gram) | 直前 2 単語 | $p(w_t \mid w_{t-2}, w_{t-1})$ |
$n$ が大きいほど文脈を見れるが、パラメータ数が急増(後述)。
3. 最尤推定 — データから確率を推定
コーパス(テキストデータ)から、数を数えるだけで確率を推定できます。
Bigram の場合
$$ p(w_t \mid w_{t-1}) = \frac{\text{count}(w_{t-1}, w_t)}{\text{count}(w_{t-1})} $$
例: 「今日 は」が 10 回、「今日 の」が 3 回、「今日」の次のトークン合計が 20 回なら:
$$ p(\text{は} \mid \text{今日}) = \frac{10}{20} = 0.5, \quad p(\text{の} \mid \text{今日}) = \frac{3}{20} = 0.15 $$
これが 最尤推定 (Maximum Likelihood Estimation)。数を数えるだけで確率分布が得られる。
4. 生成アルゴリズム
- スタートトークン(例: 文頭)から始める
- 現在の直前 n-1 トークンから、次のトークン確率分布を計算
- 前回学んだ サンプリング(temperature, top-p...)で 1 つ選ぶ
- 選んだトークンを末尾に追加、ステップ 2 に戻る
- 終端トークンが出るか、最大長に達したら終了
天気 : 0.31
日 : 0.14
気分 : 0.08
思い出 : 0.02
...(数万トークン分)
5. N-gram モデルの致命的な限界
限界 1: パラメータ爆発
語彙サイズ $V$、n-gram で必要なエントリ数は最悪 $V^n$。
| モデル | $V=10{,}000$ の場合のパラメータ数 |
|---|---|
| Bigram | $10^8$ |
| Trigram | $10^{12}$ |
| 5-gram | $10^{20}$ |
👉 長い文脈は事実上扱えない。
限界 2: データスパース性
大部分の n-gram は 一度も見たことがない。見たことがないとゼロ確率 → 文がそこで途切れる。スムージングなどの工夫があるが根本解決にならない。
限界 3: 意味の類似性を扱えない
「犬が走る」と「猫が走る」は似ているが、N-gram にとっては 完全に別のトークン列。犬の情報を猫に使い回せない。
6. ここから Transformer (LLM) への道
N-gram の限界を乗り越えるため、次の 3 つのブレイクスルーが起きた:
- 埋め込み (Word Embedding) — トークンを 密なベクトル で表現。似た単語は似たベクトル
- ニューラル言語モデル — $p(w_t \mid \text{文脈})$ をニューラルネットで学習
- Attention 機構 (Transformer) — 長い文脈を効率的に扱える
→ 次の章(LLM) でこれらを扱います。
まとめ
- 言語モデル = 単語列の同時確率 $p(w_1, \ldots, w_T)$ を学ぶもの
- 同時確率はチェインルールで「次のトークンの条件付き確率」の積に分解できる
- マルコフ仮定 で過去 n-1 トークンだけに注目する = N-gram
- 確率は 最尤推定(数を数える) で求まる
- N-gram の限界: パラメータ爆発、スパース性、意味の類似を扱えない
第2章のクロージング
| サブステップ | 学んだこと |
|---|---|
| 01 識別と生成 | 生成モデルは $p(x)$ を学ぶ。だから「作れる」 |
| 02 サンプリング | 分布から 1 つ選ぶ方法(temperature, top-p) |
| 03 N-gram 生成 | 言語モデルの最古典。$p(w_t \mid w_{<t})$ の積 |
この章の限界(次の章への動機)
N-gram は: 見たことない文脈に弱い / 長い依存関係を扱えない / 意味の類似を使えない。
👉 次章「03. LLM」では、これらの限界を乗り越えた現代の言語モデルを扱います: - トークン化(単語とは何か再考) - 埋め込みベクトル(意味を連続空間で表現) - Attention 機構(長距離の文脈) - Transformer(それらを組み合わせた決定版) - そして Claude API で実際に動かす
よくある質問
Q. LLM も「次のトークン予測」なだけ? A. はい、そう言えます。ただし 関数の複雑さが桁違い で、結果として驚くほど多様なタスクができるようになっています。
Q. じゃあ N-gram で十分では? A. 試してみるとわかりますが、n=2,3 では人間らしい文は全く書けません。n=4,5 にすると今度は学習データのコピペしか出ません。このトレードオフを解消したのが LLM。
参考文献
- Jurafsky & Martin, Speech and Language Processing Ch.3(N-gram Language Models)
- Shannon (1948) の元論文 — 情報理論と言語モデルの始祖