Temperature(温度パラメータ)とは?AIの出力を制御する重要設定

what-is-temperature Uncategorized

ChatGPTやClaude、Geminiなどの生成AIを使う際、同じ質問をしても毎回異なる回答が返ってくることに気づいたことはないだろうか。この「出力のランダム性」を調整するのが、Temperature(温度パラメータ)という設定だ。

Temperatureは、AIの出力が「決定論的で一貫性のあるもの」か「創造的で多様なもの」かをコントロールする重要なパラメータで、API開発や高度なプロンプト設計では必須の知識となる。

本記事では、Temperatureの仕組み、0.0-2.0の数値が持つ意味、Top-pとの違い、用途別の推奨値まで、初心者にもわかりやすく解説する。

Temperature(温度パラメータ)とは

Temperatureとは、AIモデルが次の単語を選ぶ際の確率分布を調整するパラメータである。

一般的に0.0から2.0の範囲で設定でき、値によって出力の性質が大きく変わる。

Temperature値 出力の特徴 用途例
0.0 最も確率の高い単語のみ選択(決定論的) FAQ、技術文書、正確さ重視のタスク
0.3-0.5 やや一貫性重視だが多少の変動あり ビジネスメール、レポート作成
0.7-1.0 バランス型(デフォルト値) 一般的な会話、質問応答
1.5-2.0 創造的で多様な出力 ブレインストーミング、小説、詩

たとえば、「リンゴは」という文の続きを予測する場合、Temperature=0.0では常に「赤い」のような最も確率の高い単語が選ばれるが、Temperature=1.5では「甘い」「栄養豊富」「秋の味覚」など、より多様な候補が選ばれやすくなる。

Temperatureの仕組み:確率分布の調整

AIモデルは、次の単語を選ぶ際に各候補の「確率」を計算している。Temperatureは、この確率分布を「平坦化」または「尖らせる」ことで、出力の多様性を調整する。

Temperature = 0.0の場合

確率分布が極端に尖り、最も確率の高い単語のみが選ばれる。

例:「天気が良いので」の次の単語候補
- 「散歩」: 60% → ほぼ100%
- 「外出」: 25% → ほぼ0%
- 「洗濯」: 15% → ほぼ0%
→ 結果:常に「散歩」が選ばれる

Temperature = 1.0の場合

確率分布がそのまま使われる(通常のバランス型)。

- 「散歩」: 60% → 60%
- 「外出」: 25% → 25%
- 「洗濯」: 15% → 15%
→ 結果:確率に応じてランダムに選ばれる

Temperature = 2.0の場合

確率分布が平坦化され、低確率の単語も選ばれやすくなる。

- 「散歩」: 60% → 40%
- 「外出」: 25% → 30%
- 「洗濯」: 15% → 30%
→ 結果:多様な候補が選ばれる

このメカニズムにより、Temperatureを調整することでAIの「創造性」と「一貫性」のバランスをコントロールできる。

Temperatureの設定方法

ChatGPT API(OpenAI)での設定

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "user", "content": "新商品のキャッチコピーを5つ考えて"}
    ],
    temperature=1.5  # 創造的な出力
)

print(response.choices[0].message.content)

Claude API(Anthropic)での設定

import anthropic

client = anthropic.Anthropic()

message = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    temperature=0.3,  # 一貫性重視
    messages=[
        {"role": "user", "content": "契約書の要約を作成して"}
    ]
)

print(message.content[0].text)

Gemini API(Google)での設定

import google.generativeai as genai

genai.configure(api_key="YOUR_API_KEY")
model = genai.GenerativeModel('gemini-1.5-pro')

response = model.generate_content(
    "ブログ記事のタイトルアイデアを出して",
    generation_config=genai.types.GenerationConfig(
        temperature=1.2
    )
)

print(response.text)

用途別の推奨Temperature値

Temperature 0.0-0.3:正確性重視

最適な用途:
– FAQ自動応答
– 技術文書の作成
– データ分析の解釈
– 法務・契約書のレビュー
– 翻訳(専門用語を含む)

メリット:
– 同じ質問に対して一貫した回答
– 誤情報や幻覚(ハルシネーション)のリスク低減
– 予測可能な動作

デメリット:
– 出力が画一的になる
– 創造性が求められるタスクには不向き

Temperature 0.5-0.7:バランス型

最適な用途:
– ビジネスメール作成
– レポート・資料作成
– カスタマーサポート
– 教育コンテンツ

メリット:
– 一貫性と多様性のバランス
– 幅広いタスクに対応可能

デメリット:
– 特化型(0.0や1.5)ほどの明確な特徴がない

Temperature 1.0-1.5:創造性重視

最適な用途:
– ブレインストーミング
– コンテンツアイデア出し
– マーケティングコピー
– 小説・詩の執筆
– キャッチコピー生成

メリット:
– 多様なアイデアが得られる
– 予想外の視点や表現が生まれる

デメリット:
– 事実関係が怪しい出力が増える
– 再現性が低い

Temperature 1.8-2.0:最大限のランダム性

最適な用途:
– 実験的な創作
– 芸術的な文章生成
– ランダムなアイデア生成

メリット:
– 最も予測不可能で独創的な出力

デメリット:
– 支離滅裂な内容になることがある
– 実用性は限定的

Top-pとの違い

Temperatureと並んで「出力の多様性」を制御するパラメータにTop-p(nucleus sampling)がある。

Top-pとは

Top-pは、確率が高い順に単語候補を並べ、その累積確率が指定した値(0.0-1.0)に達するまでの候補のみを使用する手法だ。

例:Top-p = 0.9の場合

単語候補と確率:
- 「美しい」: 50%
- 「綺麗」: 30%
- 「素敵」: 15%
- 「魅力的」: 5%

→ 累積確率が90%になる「美しい」「綺麗」「素敵」のみが候補となる

TemperatureとTop-pの比較

項目 Temperature Top-p
調整対象 確率分布全体を変形 候補単語の範囲を制限
設定範囲 0.0-2.0 0.0-1.0
効果 全体的なランダム性 低確率候補の除外

重要な注意点:
OpenAIやAnthropicの公式ドキュメントでは、TemperatureとTop-pの併用は推奨されていない。どちらか一方を使うべきである。

  • 一貫性重視なら:Temperature = 0.0-0.3
  • 創造性重視なら:Temperature = 1.0-1.5 または Top-p = 0.9-0.95

実際の比較実験

同じプロンプトで異なるTemperature値を試した例を示す。

プロンプト:「リモートワークのメリットを1文で説明して」

Temperature = 0.0:
「リモートワークは通勤時間の削減により生産性が向上し、柔軟な働き方を実現できる点が最大のメリットです。」

Temperature = 0.7:
「リモートワークは場所に縛られず、自分のペースで仕事ができるため、ワークライフバランスの改善に繋がります。」

Temperature = 1.5:
「リモートワークは、オフィスの喧騒から解放され、猫と一緒に働ける至福の時間を提供します。」

Temperature=1.5では「猫と一緒に」という創造的だが少し外れた表現が出現していることがわかる。

Temperatureのチューニング戦略

実際のプロジェクトでは、以下のようにTemperatureを調整することが多い。

ステップ1:初期値を設定

  • わからない場合は 0.7(デフォルト) から開始
  • 正確性が重要なら 0.0-0.3
  • アイデア出しなら 1.0-1.5

ステップ2:出力を検証

  • 10回程度実行し、出力のばらつきを確認
  • 同じ質問に対して異なる回答が必要か判断

ステップ3:微調整

  • 出力が硬すぎる → +0.2-0.3上げる
  • 出力が不安定すぎる → -0.2-0.3下げる

ステップ4:本番運用

  • 本番環境では少し低めに設定(安全マージン)
  • ログを記録し、定期的に見直す

ハルシネーション(幻覚)との関係

Temperatureが高いほど、AIはハルシネーション(事実と異なる情報を生成する現象)を起こしやすくなる。

これは、低確率の単語が選ばれる機会が増えるため、「もっともらしいが誤った情報」を生成しやすくなるためだ。

対策:
– 事実確認が重要なタスクでは Temperature = 0.0-0.3 を使用
– RAG(Retrieval-Augmented Generation)と併用する
– 出力に「情報源を明記するよう」プロンプトで指示する

詳細は以下の記事で解説している。
AIハルシネーション(幻覚)とは?原因・対策・防止テクニック完全ガイド

よくある質問

Q1. Temperatureは高い方がいいですか?

いいえ。Temperatureは「高ければ良い」「低ければ良い」というものではなく、タスクに応じて最適な値を選ぶべきです。正確性が求められるタスクでは0.0-0.3、創造性が求められるタスクでは1.0-1.5が推奨されます。

Q2. Web版ChatGPTではTemperatureを変更できますか?

Web版ChatGPT(chat.openai.com)では、Temperatureを直接変更することはできません。Temperatureを調整したい場合は、ChatGPT API、Custom GPTs、またはPlaygroundを使用する必要があります。

Q3. TemperatureとTop-pはどちらを使うべきですか?

OpenAIの公式ドキュメントでは、TemperatureとTop-pの併用は推奨されていません。初心者にはTemperatureの方が直感的なため、まずTemperatureから試すことをお勧めします。

Q4. Temperature=0.0でも毎回同じ出力になりませんが?

Temperature=0.0は「決定論的」ですが、プロンプトが完全に同じでない場合や、モデルのバージョンが異なる場合は、出力が変わることがあります。また、システムプロンプトに日時情報などが含まれる場合も出力が変動します。

まとめ

Temperature(温度パラメータ)は、AIモデルの出力の「ランダム性」と「一貫性」をコントロールする重要な設定だ。

ポイント:
– Temperature = 0.0-0.3:正確性重視(FAQ、技術文書)
– Temperature = 0.7-1.0:バランス型(一般的な用途)
– Temperature = 1.0-1.5:創造性重視(アイデア出し、創作)
– Top-pとの併用は避ける
– 高いTemperatureはハルシネーションのリスク増加

ChatGPT APIやClaude APIを使った開発では、Temperatureの調整が出力品質を大きく左右する。まずは0.7から始め、タスクの性質に応じて調整してみよう。

関連記事


参考リンク

コメント