Temperature

温度パラメータ

Temperature を分かりやすく

Temperature(温度)は、AI が生成するテキストの「ランダム性」や「創造性」を制御するパラメータです。

例え話をしましょう。あなたが友人に「おすすめの映画を教えて」と聞くとします。

Temperature が低い場合(0.0〜0.3)

  • 友人「『ショーシャンクの空に』がおすすめです」
  • あなた「他には?」
  • 友人「『ショーシャンクの空に』がおすすめです」(同じ答え)

毎回、最も確実で安全な答えを返します。一貫性があり、予測可能です。

Temperature が高い場合(0.8〜1.0)

  • 友人「『インターステラー』はどう?」
  • あなた「他には?」
  • 友人「『パルプ・フィクション』も面白いよ」
  • あなた「もう一つ」
  • 友人「『マトリックス』なんかもいいかも」

毎回、異なる選択肢を提案します。多様性があり、創造的です。

AI の Temperature も同じように機能します。

Temperature の仕組み

AI は、次の単語(トークン)を選ぶ際に、確率分布を計算します。Temperature は、この確率分布を調整します。

Temperature 0.0 の場合

質問: 「空は何色ですか?」

AI の内部確率:
青: 95%
赤: 3%
緑: 1%
その他: 1%

Temperature 0.0 → 常に最も確率の高い選択
→ 「青」(毎回同じ答え)

Temperature 1.0 の場合

同じ質問に対して

AI の内部確率:
青: 95%
赤: 3%
緑: 1%
その他: 1%

Temperature 1.0 → 確率に応じてランダムに選択
→ 95%の確率で「青」
→ 5%の確率で「青」以外

Temperature 2.0 の場合

同じ質問に対して

確率分布が平坦化される:
青: 40%
赤: 25%
緑: 20%
その他: 15%

Temperature 2.0 → より均等にランダム選択
→ 予測不可能な答えが増える

Temperature の値の範囲

一般的に、Temperature は 0.0 から 2.0 の範囲で設定します。

0.0 〜 0.3(決定的)

特徴:
- 毎回ほぼ同じ出力
- 最も確率の高い選択のみ
- 予測可能
- 一貫性が高い

用途:
- 事実確認
- データ抽出
- 分類タスク
- コード生成(正確さ重視)
- 翻訳

0.3 〜 0.7(バランス型)

特徴:
- 適度な多様性
- 一貫性も保たれる
- 実用的な範囲
- デフォルト値に近い

用途:
- 一般的な質問応答
- カスタマーサポート
- 要約
- 教育コンテンツ

0.7 〜 1.0(創造的)

特徴:
- 多様な出力
- 創造性が高い
- 予測しにくい
- 意外な表現

用途:
- 創作(小説、詩)
- ブレインストーミング
- マーケティングコピー
- アイデア出し

1.0 〜 2.0(非常に創造的)

特徴:
- 非常にランダム
- 予測不可能
- 時に不自然
- 実験的

用途:
- 芸術的な表現
- 実験的なコンテンツ
- 多様性を重視するタスク

Temperature の実例

同じプロンプトで Temperature を変えた場合の出力例です。

プロンプト 「AIについて一文で説明してください」

Temperature 0.0

出力1: 「AIは人間の知的活動を模倣する技術です」
出力2: 「AIは人間の知的活動を模倣する技術です」
出力3: 「AIは人間の知的活動を模倣する技術です」

→ 毎回同じ、最も標準的な答え

Temperature 0.7

出力1: 「AIは人間のように学習し判断するコンピュータ技術です」
出力2: 「AIは機械が知的タスクを実行できるようにする技術です」
出力3: 「AIは人工的に作られた知能で、様々な問題を解決します」

→ 毎回異なるが、すべて妥当な答え

Temperature 1.5

出力1: 「AIは未来の鍵となる革新的な技術の結晶です」
出力2: 「AIは人間の想像力をデジタル空間に解き放つ魔法です」
出力3: 「AIはゼロと一が織りなす知性の新しい形です」

→ 創造的で詩的な表現

Temperature と他のパラメータの関係

Temperature は、他のパラメータと組み合わせて使用されることがあります。

Top-p(nucleus sampling)

Top-p は、確率の上位 p% に含まれるトークンのみを選択します。

Top-p = 0.9 の場合:
累積確率が 90% になるまでのトークンのみ選択

Temperature と Top-p の併用:
一般的には、どちらか一方のみを使用することが推奨される
両方使うと、効果が複雑に絡み合う

Top-k

Top-k は、上位 k 個のトークンのみを選択します。

Top-k = 50 の場合:
確率上位50個のトークンのみを選択肢にする

Temperature との違い:
Top-k: 選択肢の「数」を制限
Temperature: 選択肢の「確率分布」を調整

Frequency Penalty と Presence Penalty

繰り返しを制御するパラメータです。

Frequency Penalty:
同じトークンの繰り返しを抑制

Presence Penalty:
新しいトピックへの転換を促進

Temperature との併用:
Temperature で創造性を制御
Penalty で繰り返しを調整

Temperature の選び方

用途に応じて、適切な Temperature を選びます。

事実確認タスク

Temperature: 0.0 〜 0.2

例:
「東京の人口は?」
「Python でリストを作成する方法は?」
「2 + 2 = ?」

求められる性質:
- 正確性
- 一貫性
- 再現性

要約タスク

Temperature: 0.3 〜 0.5

例:
「この記事を3行で要約して」
「会議の議事録を作成して」

求められる性質:
- 正確性(やや重要)
- 簡潔さ
- 読みやすさ

質問応答

Temperature: 0.5 〜 0.7

例:
「AIとは何ですか?」
「Pythonのメリットは?」

求められる性質:
- 正確性
- 分かりやすさ
- 適度な多様性

創作タスク

Temperature: 0.8 〜 1.2

例:
「SF小説の冒頭を書いて」
「新商品のキャッチコピーを考えて」

求められる性質:
- 創造性
- 独自性
- 意外性

ブレインストーミング

Temperature: 1.0 〜 1.5

例:
「新しいアプリのアイデアを10個出して」
「ユニークなイベント企画を提案して」

求められる性質:
- 多様性
- 創造性
- 量より質の多様性

Temperature の調整テクニック

Temperature を効果的に使うためのテクニックです。

段階的な調整

ステップ1: Temperature 0.3 で概要を生成
→ 正確な情報を収集

ステップ2: Temperature 0.8 で詳細を生成
→ 創造的に肉付け

ステップ3: Temperature 0.5 で校正
→ バランスの取れた最終版

タスクごとに使い分け

データベース検索: Temperature 0.0
→ 正確なクエリ生成

ユーザーへの応答: Temperature 0.7
→ 自然で分かりやすい説明

エラーメッセージ: Temperature 0.2
→ 明確で一貫性のある説明

A/B テスト

複数の Temperature で出力を生成し、比較する

例:
Temperature 0.5: 出力 A
Temperature 0.7: 出力 B
Temperature 0.9: 出力 C

最も適切な出力を選択
または、複数の出力を組み合わせる

Temperature の落とし穴

Temperature を不適切に設定すると、問題が生じます。

落とし穴 1: Temperature が高すぎる

問題:
- 不自然な出力
- 事実と異なる情報
- 一貫性の欠如

例(Temperature 2.0):
質問: 「Pythonとは何ですか?」
AI: 「Pythonは宇宙から来た謎の言語で、
     虹色の蛇が発明したプログラミングの魔法です」

→ 創造的すぎて役に立たない

落とし穴 2: Temperature が低すぎる

問題:
- 単調な出力
- 創造性の欠如
- 毎回同じ答え

例(Temperature 0.0):
質問: 「ブログ記事のタイトルを10個考えて」
AI: 「AIとは何か」
   「AIとは何か」
   「AIとは何か」
   ...(同じタイトルが繰り返される)

→ 多様性が求められるタスクに不向き

落とし穴 3: デフォルト値への依存

問題:
多くの API のデフォルトは 0.7〜1.0
すべてのタスクに適しているわけではない

対策:
タスクの性質を考慮して、適切に調整する

Temperature のベストプラクティス

Temperature を効果的に使うためのベストプラクティスです。

1. タスクの性質を理解する

判断基準:
- 正確性が重要か? → 低めの Temperature
- 創造性が重要か? → 高めの Temperature
- 多様性が必要か? → 高めの Temperature
- 一貫性が必要か? → 低めの Temperature

2. 少しずつ調整する

推奨アプローチ:
1. デフォルト(0.7)から始める
2. 0.1 刻みで調整
3. 出力の質を評価
4. 最適な値を見つける

大幅な変更は避ける

3. 複数の値を試す

同じプロンプトで複数の Temperature を試す

例:
Temperature 0.5: 出力 A
Temperature 0.7: 出力 B
Temperature 0.9: 出力 C

比較して最適な値を決定

4. ユーザーに選択させる

アプリケーションで Temperature を調整可能にする

例:
「創造性レベル」として UI で公開
低(0.3) | 中(0.7) | 高(1.0)

ユーザーが用途に応じて選択

まとめ

Temperature は、AI の出力の創造性とランダム性を制御する重要なパラメータです。適切に調整することで、用途に最適な出力を得られます。

重要なポイント

  1. 範囲 - 0.0(決定的)から 2.0(非常に創造的)
  2. 事実タスク - 0.0〜0.3 で正確性を重視
  3. バランス型 - 0.5〜0.7 で汎用的に使用
  4. 創造的タスク - 0.8〜1.2 で多様性を重視
  5. 調整 - タスクの性質に応じて適切に設定

Temperature を選ぶ指針

  • 正確性が最優先 → 0.0〜0.3
  • バランスを取りたい → 0.5〜0.7
  • 創造性が欲しい → 0.8〜1.0
  • 多様性を最大化 → 1.0〜1.5

Temperature を理解し、適切に調整することで、AI の出力品質を大きく向上させることができます。タスクの性質を見極め、最適な値を設定することが、成功する AI アプリケーション開発の鍵となります。