A
AIエージェントの仕組み
ch2-s2 · Sampling from Distribution

確率分布からのサンプリング

約 12 分

この回のゴール

1. 前回の復習

前回、生成モデルは「確率分布 $p(x)$ を学ぶ」ものだと学びました。

LLM の場合、これは「次のトークンがこれになる確率」です。例えば「今日は良い」の次には:

天気   : 0.31
日    : 0.14
気分   : 0.08
思い出 : 0.02
...(数万トークン分)

👉 どうやって 1 つ選ぶ? これがこの回のテーマです。

2. まず: ロジット → 確率(softmax)

ニューラルネットから出てくるのは「ロジット(logit)」という 実数ベクトル $z$。これを確率に変えるのが softmax:

$$ p_i = \frac{e^{z_i}}{\sum_j e^{z_j}} $$

性質: - 全ての $p_i \ge 0$ - $\sum p_i = 1$ - 大きい $z_i$ ほど大きい $p_i$

3. Temperature(温度)でシャープさを変える

softmax にパラメータ $T > 0$ を入れる:

$$ p_i = \frac{e^{z_i / T}}{\sum_j e^{z_j / T}} $$

$T$ 何が起きる 呼び方
$T \to 0$ 最大のロジットだけが確率 1 になる greedy / argmax
$T = 1$ 通常の softmax 標準
$T = 2, 3, \ldots$ 分布が平坦に。意外な単語が出やすい 高温(創造的だが意味不明も)
$T \to \infty$ 一様分布(完全ランダム)

👉 低温 = 真面目、高温 = 創造的、というイメージ。

4. Top-k サンプリング

確率の 上位 k 個 だけを残し、他をゼロにしてから正規化。

$$ p_i' = \begin{cases} p_i / Z & \text{if } i \in \text{top-}k \ 0 & \text{otherwise} \end{cases} $$

効果: ロングテールの「変な単語」を切り捨てて破綻を防ぐ。 問題: 常に k 個に切るのは硬い。文脈によって「妥当な選択肢数」は変わるはず。

5. Top-p(Nucleus)サンプリング

確率の高い方から足していって、累積確率が $p$ を超えるまで の単語を残す。

$$ V_p = \min \bigl{ V' \subseteq V : \textstyle \sum_{i \in V'} p_i \ge p \bigr} $$

効果: 文脈に応じて残す単語数を動的に変えられる。top-k より柔軟。

現代の LLM では top-p が主流(Claude API でも top_p を指定できる)。

6. 比較表

手法 確率の操作 多様性 破綻リスク
Greedy(argmax) 最大 1 個のみ ❌ なし ❌ 低い(繰り返しやすい)
Temperature 全体をシャープ/平坦化 可変 $T$ が大きいほどリスク
Top-k 上位 k 個だけ
Top-p 累積 p まで 高(柔軟)
組み合わせ Temperature + Top-p 実用的 制御しやすい

Claude API や OpenAI API は temperaturetop_p の両方を同時に使います。

7. なぜ決定論的(greedy)にしないのか

理論的には「一番確率の高い次の単語」を選び続ければ良さそうですが:

だから適度なランダム性が実用的に必要。


まとめ

この回の限界(次への動機)

ここまでで「確率分布から 1 つ選ぶ」仕組みはわかりました。でも、そもそも 数万トークンの確率分布 をどうやって作っているのか? は未解決です。

👉 次回は「ナイーブベイズで文生成」。N-gram という 最もシンプルな言語モデル で、実際に文を生成してみます。

よくある質問

Q. temperature=0 にしておけば安全なのでは? A. 安全だが 多様性がゼロ になります。同じ質問に毎回全く同じ答え。創作や壁打ちには不向き。一方コード生成や分類タスクでは temperature=0 が推奨されます。

Q. top-k と top-p はどっちを使えば? A. 迷ったら top-p。文脈によって「妥当な選択肢数」が変わるので、動的に切れる top-p の方が実用的です。

Q. 「ハルシネーション」は temperature のせい? A. 一因ではあるが、根本原因ではありません。モデルの 学習データ知識の限界 に由来します。だから後の章で RAG が必要になります。

参考文献

📝 理解度クイズ (3 問) 💡 ログインすると進捗が保存されます

💬 このサブステップの Q&A

まだ質問はありません。最初の質問を投稿してみましょう。

質問の投稿にはログインが必要です。