AI・機械学習
上級
TextGrad(テキスト勾配最適化)(テキストグラッド テキスト コウバイ サイテキカ)
Yuksekgonul et al.(2024)が提案した自動微分フレームワークの自然言語版。数値勾配の代わりに「テキスト勾配」(LLM が生成する改善方向の自然言語フィードバック)を逆伝播し、プロンプト・コード・分子構造などを最適化する。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
TextGrad
テキスト勾配
自動プロンプト最適化
LLMバックプロパゲーション
コンパウンドAIシステム
TextGrad(テキスト勾配最適化)
概要
TextGrad は Stanford の Mert Yuksekgonul らが 2024 年に発表した自動微分フレームワークの自然言語拡張だ(論文: "TextGrad: Automatic 'Differentiation' via Text")。PyTorch が数値テンソルを逆伝播するように、TextGrad は 「テキスト変数」の勾配を LLM が生成するフィードバック文として計算し逆伝播する。
数値微分: ∂L/∂θ → 勾配ベクトル テキスト微分: 「この変数をどう変えれば損失が下がるか?」→ LLM が生成する自然言語の改善提案
フレームワーク構成
主要コンポーネント:
- Variable: テキスト変数。requires_grad=True で勾配計算対象になる
- Engine: LLM(GPT-4o、Claude 3.5 等)。フォワード計算とバックワード計算の両方に使用
- Loss: テキストまたは数値の評価関数
- Optimizer: TGD(Textual Gradient Descent)。勾配テキストに基づき Variable を更新
実装例(公式 API 準拠)
import textgrad as tg
tg.set_backward_engine("gpt-4o")
system_prompt = tg.Variable(
"あなたは数学の専門家です。",
requires_grad=True,
role_description="system_prompt"
)
loss_fn = tg.TextLoss("回答の正確性と解法の明確さを評価し、改善点を指摘してください。")
optimizer = tg.TGD(parameters=[system_prompt])
for question, answer in training_data:
optimizer.zero_grad()
response = engine(system_prompt, question)
loss = loss_fn(response, answer)
loss.backward()
optimizer.step()
実験結果(論文より)
| タスク | ベースライン | TextGrad 適用後 | 改善幅 |
|---|---|---|---|
| GPT-4o コード最適化(LeetCode Hard) | 28% | 42% | +14pp |
| Google-Proof QA(GPQA Diamond) | 51% | 55% | +4pp |
| 放射線治療計画スコア | 基準値 | 基準 +26% | +26% |
コード最適化タスクでの 14pp 改善は特に注目されており、GPT-4o 単体より TextGrad で反復改善した出力の方がコンテスト問題を解ける確率が高い。
OPRO・APE との違い
OPRO・APE は主に「プロンプト文字列」の最適化に特化するが、TextGrad はより汎用的だ。最適化対象が自然言語で表現できるものであれば何でも対応する。
- プロンプト(システムプロンプト・Few-shot 例)
- コード(バグ修正・速度最適化)
- 分子の SMILES 文字列
- 医療治療計画
- 機械学習パイプラインの設定
注意点
- コスト: フォワード + バックワードで LLM を 2 回以上呼び出す。大規模最適化では API コストが膨大になる
- バックエンド依存: 能力の低い LLM をバックワードエンジンに使うと「テキスト勾配」の質が下がり収束しない
- 評価関数設計: Loss の自然言語表現が曖昧だとフィードバックも曖昧になる。定量的スコアと組み合わせると安定
まとめ
TextGrad は PyTorch の自動微分の思想を自然言語空間に持ち込んだ意欲的フレームワークだ。コンパウンド AI システム(LLM + 検索 + コード実行の複合パイプライン)のエンドツーエンド最適化に特に強みを発揮し、2025 年現在、DSPy・OPRO と並んでプロンプト自動化の主要アプローチとして研究が活発だ。