AI・機械学習
上級
Classifier-Free Guidance(テキスト生成)(クラシファイヤーフリーガイダンステキストセイセイ)
画像生成で実績を持つCFG(Classifier-Free Guidance)をテキスト生成に応用したデコーディング手法。条件付き確率と無条件確率の差分をスケールして「指示への忠実度」を強化し、特に指示追従・スタイル制御に効果的。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
cfg
classifier-free-guidance
decoding-strategy
text-generation
テキスト生成へのClassifier-Free Guidance(CFG)とは
Classifier-Free Guidance(CFG)は元々画像生成(DALL-E 2, Stable Diffusion)で「プロンプトへの忠実度」を制御するために使われていた技術です。Sanchez et al.(2023)がこれをテキスト生成に応用し、LLMの指示追従性を大幅に改善する手法として提案しました。
基本原理
画像生成でのCFG
ε_cfg = ε_uncond + guidance_scale × (ε_cond - ε_uncond)
ε_cond: 「犬の写真」というプロンプトを与えた場合の予測ノイズε_uncond: 空のプロンプトで条件なしの場合の予測ノイズ- guidance_scaleを大きくするほど「犬らしさ」が強調される
テキスト生成への転用
同じ考え方をlogitsに適用します:
def cfg_decoding(model, input_ids, unconditional_ids, guidance_scale=1.5):
# 条件付き(指示あり)のlogits
logits_cond = model(input_ids).logits[:, -1, :]
# 無条件(空プロンプト等)のlogits
logits_uncond = model(unconditional_ids).logits[:, -1, :]
# CFG適用
logits_cfg = logits_uncond + guidance_scale * (logits_cond - logits_uncond)
return sample_from(logits_cfg)
- guidance_scale = 1.0: 通常のサンプリングと同じ
- guidance_scale > 1.0: 指示への忠実度が上昇(多様性低下)
- guidance_scale < 1.0: 指示を無視する方向(通常は使わない)
実際の適用例
指示追従の改善
通常のデコーディング:
指示: "Please respond only in Japanese."
出力: "Of course! Let me explain in Japanese. はい、日本語でお答えします..."
(英語が混入)
CFG (guidance_scale=2.0):
出力: "はい、もちろんです。ご質問にお答えします..."
(より忠実に日本語のみ)
スタイル制御
# フォーマルなスタイルへの誘導例(概念)
formal_prompt = "Write in a formal academic style: " + user_input
empty_prompt = "" # 無条件入力
cfg_output = cfg_decoding(
model,
formal_prompt,
empty_prompt,
guidance_scale=1.8
)
Hugging Faceでの実装
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3-8B")
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B")
inputs = tokenizer("Write a poem about cherry blossoms", return_tensors="pt")
# CFG: unconditional_ids で空/弱い条件を指定
unconditional = tokenizer("", return_tensors="pt")
output = model.generate(
**inputs,
guidance_scale=1.5,
negative_prompt_ids=unconditional.input_ids,
max_new_tokens=200,
)
guidance_scaleのチューニング目安
| guidance_scale | 特性 |
|---|---|
| 1.0 | 通常サンプリング |
| 1.2〜1.5 | 軽度の指示強化 |
| 1.5〜2.0 | 推奨範囲(指示追従+多様性バランス) |
| 2.0〜3.0 | 強い指示追従(多様性低下) |
| 3.0以上 | 質が低下(hallucination増加) |
活用場面
- 多言語制御: 指定言語での一貫した出力
- トーン制御: フォーマル/カジュアルの厳格な適用
- キャラクター制御: ロールプレイでのキャラクター一貫性
- フォーマット遵守: JSON/Markdown等の形式厳守
まとめ
CFG for Text Generationは画像生成の成功を言語モデルに応用した手法です。指示への忠実度を数値で制御できる点が強みで、2025年時点でHugging Face等での実装が進んでいます。特にファインチューニングなしに指示追従性を向上させたい場面で有効です。