AI・機械学習
中級
LLM 自己精錬(Self-Refine)(エルエルエムじこせいれん)
LLMが自分の出力に対してフィードバックを生成し、そのフィードバックをもとに出力を反復的に改善する手法。追加訓練なしで品質向上が見込める。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
自己精錬
イテレーション
フィードバックループ
品質向上
プロンプト工学
LLM 自己精錬(Self-Refine)
Self-Refineは、LLMが「自分のアウトプットを批判し、改善する」という反復プロセスによって出力品質を向上させる手法です。
基本的な仕組み
入力 → [生成] → 初期出力
↓
[フィードバック生成]
↓
フィードバック
↓
[改善生成]
↓
改善後出力 → 停止条件チェック
↓
(繰り返し or 最終出力)
同一のLLM(例: GPT-4)が3つの役割を順番に担います。
3つの役割
1. Generator(生成者) 初期出力を生成。通常の推論と同じ。
2. Feedback Provider(批評者) 「この出力のどこに問題があるか」をリスト化。具体的な改善点を列挙。
3. Refiner(改善者) フィードバックを踏まえて出力を書き直す。
実験結果(Madaan et al. 2023)
| タスク | ベースライン | Self-Refine (3回) | 改善幅 |
|---|---|---|---|
| コード最適化 | 60.0 | 70.2 | +10.2 |
| ダイアログ応答 | 65.4 | 73.1 | +7.7 |
| 数学ワードプロブレム | 52.1 | 61.3 | +9.2 |
| キャプション生成 | 40.0 | 55.0 | +15.0 |
停止条件の設計
実際の運用では適切な停止条件が重要です。
- 固定反復数: N回で必ず停止(シンプルだが非効率)
- 品質閾値: スコアが基準を超えたら停止
- 収束判定: 前回との差が小さくなったら停止
- 自己評価: モデル自身が「これ以上改善できない」と判断
限界と批判
Large Language Models Cannot Self-Correct Reasoning Yet(2023)という論文では、自己修正が必ずしも有効ではなく、むしろ悪化するケースがあると指摘。外部フィードバック(実行結果・ユーザー入力)がない場合は限界があります。
実装例(擬似コード)
def self_refine(problem, model, max_iter=3):
output = model.generate(problem)
for _ in range(max_iter):
feedback = model.generate(f"Critique: {output}")
if "no issues" in feedback.lower():
break
output = model.generate(f"Improve based on: {feedback}\n{output}")
return output
まとめ
Self-Refineは追加訓練なしで出力品質を向上できる実用的な手法です。ただし外部検証なしの自己修正には限界があり、コード実行結果・ユニットテストなどの外部フィードバックと組み合わせることで真の効果を発揮します。