1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIの出力を操る「temperature / topP / topK」完全ガイド(直感→仕組み→実務設定まで)

1
Posted at

生成AIの出力が 「毎回ブレる」、または 「固すぎて面白くない」——
そんなときに効くのが、次の3つのパラメータです。

  • temperature
  • topP
  • topK

これらは 生成AIが「次に来る単語」をどう選ぶかを制御するもので、
出力の安定性・創造性・正確性を直接左右します。

この記事では、

✅ 直感で理解
✅ 具体例で仕組みが腑に落ちる
✅ 実務用途別におすすめ値が分かる

…という流れで、プロダクション運用でも使えるレベルまで整理します。


TL;DR(覚えるならこれだけ)

  • temperature:ランダム性(冒険度)
  • topK:候補を「上位K個」に絞る(固定数)
  • topP:候補を「確率の合計がPになるまで」絞る(可変数)

temperature は「どれだけ冒険するか」
topP / topK は「そもそも候補をどこまで許すか」


1. そもそも生成AIはどう文章を作っているのか?

生成AIは文章を一気に生成しているわけではなく、基本的に

1単語ずつ「次に来る単語の候補」を確率で持ち、そこから1つ選び続けている

という仕組みです。

例えば、次の単語候補がこうだったとします:

候補 確率
「です」 0.40
「だ」 0.25
「になります」 0.15
「ですね」 0.10
「だよ」 0.05
「っす」 0.03
「である」 0.02

このとき、
「どこまで候補を許すか」「どれくらいランダムに選ぶか」
を制御するのが temperature / topP / topK です。


2. temperature(テンパラチャ)とは?

✅ temperature = ランダム性(冒険度)

  • 低いほど:堅い・安全・再現性が高い
  • 高いほど:表現が変わる・発想が広がる・脱線もしやすい

感覚値

  • 0.0:ほぼ毎回同じ(超安定)
  • 0.2:安定しつつ柔軟
  • 0.7:自然で柔らかい文
  • 1.0+:創造性は出るが正確性が落ちやすい

例:「MVCを説明して」

  • temperature = 0.0:毎回似た構成・似た文
  • temperature = 0.9:例え話が増えたり、言い回しが大きく変わる

3. topK とは?

✅ topK = 「上位K個」しか選ばない(固定)

先ほどの候補表でいうと:

  • topK = 1 → 「です」しか選ばない
  • topK = 3 → 「です / だ / になります」から選ぶ
  • topK = 10 → 上位10候補まで許可

特徴

  • Kが小さいほど:安定(でも単調になりやすい)
  • Kが大きいほど:多様性(でも変な語彙も混ざりやすい)

4. topP とは?(核サンプリング / Nucleus Sampling)

✅ topP = 「確率の合計がPに達するまで」候補を許す(可変)

候補を確率が高い順に足していき、合計が P を超えたところまでが選択対象になります。

例:topP = 0.9 の場合(上の表)

  • 「です」0.40 → 合計 0.40
  • 「だ」0.25 → 合計 0.65
  • 「になります」0.15 → 合計 0.80
  • 「ですね」0.10 → 合計 0.90 ✅

→ ここまでの4候補から選ばれる

topPの特徴

  • 候補数が状況によって変わる(可変)
  • 文脈が明確なほど候補は少なく、曖昧なほど多くなる
  • 実運用では topKより扱いやすいケースが多い

5. topK と topP の違いを一言で

  • topK:個数で切る(固定)
  • topP:確率で切る(可変)

6. 3つの関係(混乱しやすいので整理)

多くの実装では概念的に以下の順で効きます:

  1. topK / topP で「候補集合」を絞る
  2. temperature で確率分布の差をなめらかにする
  3. その中からランダムに1つ選ぶ

temperatureが効く直感

  • temperature ↑:低確率の候補も選ばれやすくなる
  • temperature ↓:高確率の候補に寄る

7. よくある失敗パターンと対策(重要)

❌ 失敗1:temperatureを上げたら嘘が増えた

創造性は上がるが、正確性が落ちることがある。

対策:事実系タスクは 0.0〜0.3 に固定


❌ 失敗2:topPを高くしすぎて文章がブレる

topP = 0.95〜0.99 は候補が増えすぎてブレやすい。

対策:0.8〜0.95あたりが扱いやすい


❌ 失敗3:topKが大きすぎて変な表現が混ざる

候補が多すぎると脱線や不自然さが増える。

対策:topKは 20〜50 が扱いやすい(用途次第)


8. 用途別おすすめ設定(実務で一番効く)

✅ (A) JSON固定・仕様書・コード生成(安定性最優先)

  • temperature:0.0〜0.2
  • topP:0.8〜0.9
  • topK:10〜40

狙い:フォーマット崩れを減らし、再現性を上げる


✅ (B) 要約・議事録・動画チャプター(安定+読みやすさ)

  • temperature:0.2〜0.4
  • topP:0.9
  • topK:20〜50

狙い:読みやすさとブレのバランス


✅ (C) 企画・コピー・アイデア出し(創造性優先)

  • temperature:0.7〜1.0
  • topP:0.95
  • topK:50〜100

狙い:アイデアの多様性を最大化


9. google.genai での設定例(Python)

google.genai SDKでは config に指定します:

from google import genai

client = genai.Client()

res = client.models.generate_content(
    model="models/gemini-2.5-flash",
    contents="MVCを初心者向けに説明して",
    config={
        "temperature": 0.2,
        "top_p": 0.9,
        "top_k": 40,
    }
)

print(res.text)

10. 最後に:覚え方(超シンプル)

  • temperature:勇気(冒険度)
  • topK:候補を人数で制限
  • topP:候補を確率(面積)で制限

Appendix:topPの「P」とtopKの「K」は何の略?

✅ topP の「P」 = Probability(確率)

topP は Nucleus Sampling(核サンプリング)とも呼ばれ、
「確率合計が P になるまで候補を集める」という意味です。


✅ topK の「K」 = “K個” を表す数学・統計上の記号

統計や機械学習では「上位K個」「K近傍」などで K=個数を表すのが一般的です。


推奨

実務で安定しやすい推奨セットはこれです:

  • temperature = 0.2
  • topP = 0.9
  • topK = 40

まとめ

  • temperature:ランダム性(冒険度)
  • topK:上位K個(固定)
  • topP:確率の合計Pまで(可変)
  • 実務では topPの方が扱いやすいことが多い
  • 安定運用は temperature低め + topP低め + topK中程度
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?