長期的な計画と検証の非対称性
トランスフォーマーモデルは、「次の1トークン」を予測する局所的な最適化には優れていますが、ゴールから逆算してステップを組み立てる「大局的な計画」が苦手、とされています。
2023年2月時点で、LLM 単体での計画成功率はわずか 「3%」 という研究結果がありました。
その内容について発表された、こちらの論文を解説します。ちょうどこの頃に ReAct やループエンジニアリングの研究が盛んになり、長期的なタスクも自走する AI が注目されました。
On the Planning Abilities of Large Language Models
大規模言語モデルの計画能力について
そもそも計画の成功/失敗をどう測るのか
実験の検証フレームワークとしては、自動プランニングの国際大会でも使われる「Blocksworld」という古典的なタスクをベースに検証用のベンチマークを構築しました。
テーブルの上に置かれたいくつかのブロックを、「赤の上に青を置く」といった指示通りに積み替える手順を構築するパズルです。なお、ブロックの数は3~5です。
流れは以下の通りです。
- タスクの自動生成:ジェネレータがランダムに初期状態とゴールを設定する
- 自然言語への翻訳:プランニングの専門言語で記述された状態を、LLM が解釈できる自然言語のテキストに変換してプロンプトにする
- LLM の推論:いくつかの例題を見せた上で、LLM にプランを出力させる
- プランの自動検証:LLM が出力したテキストをシステムが解析し、検証ツール(Plan Validator)にかけて「エラーなく実行できるか」を機械的にジャッジする
要するにプラン通りに実行して成功するかどうかで評価するということです。
LLM モデルのみ、ヒューリスティック、Human-in-the-loopでの比較
LLM をシステムに組み込むアプローチとして3つのモードで検証を行っています。
1. 自律モード(Autonomous)
LLMに最初から最後まで単体でプランを考えさせたモードです。GPT-3 や BLOOM などの当時の高性能モデルで実験したところ、以下のような結果となりました。
- 成功率は平均約3%:最も成績の良かった
Instruct-GPT3(text-davinci-002) でも成功率はわずか 6.8% - ブロックを最大の5つにすると成功率は全てのモデルで0%
訓練データの単語のつながり(統計的なパターンマッチング)でそれっぽい回答を出しているだけであるという証拠でもありますね。
ヒューリステックモード(Heuristic) ← 一番良かった方法
この手法では、すべてのプランがエラーのない 100% の有効なプランに変換されました。
LLM で出力し、別の AI で修正させる方法です。少し具体的に説明します。
1.下書きプラン(Seed Plan)の作成
- 初期状態とゴールを記載したプロンプトをLLMに入力
- LLMは、Few-shot(例題)を参考にしながら行動手順を出力
2. 構造化データへのパース(Translator)
- LLMとシステムが会話できるようにするための「翻訳辞書」を人間が定義
- (例)
on-table red:「赤いブロックはテーブルの上にある」
- (例)
3. 古典的プランナー(LPG)への投入
- 下書きプランを、古典的プランナー(論文内ではLPGという名前)に「初期部分プラン」として投入
- 「古典的プランナー」というのはルールベースの AI と考えてください
- ルールが厳密に定義されたドメインモデル(PDDL)もプランナーに投入
- ドメインモデルは「手が空いているときにブロックを持ち上げられる」などの前提条件で、人間が設計します
4. プラン修正
- LPG プランナーは、LLM から受け取った下書きプランをベースに動作を開始し、欠陥を修正
- 実行可能で目標を達成できる最終プランが生成
検証では、下書きプランの 50% がこの工程で修正されたという結果でした
Human-in-the-loop モード
人間にプランニングを行わせる方法で、LLMが生成したプランを「参考用のヒント」として与えるパターンです。
- タスクの達成率は微増:ヒントなしのグループ(達成率74%)に比べ、LLMのヒントがあるグループは達成率が82%に向上
- 作業にかかった時間や、人間の脳の疲労度(認知負荷)を計測したところ、統計的な改善の有意差は見られなかった
結論
LLM は単体ではまともに計画を立てられないので、ルールベースの AI と組みあわせるという方法で、自動テストやリンター(検証環境)など現在のハーネスエンジニアリングにも共通するアイデアかと思います。
