638 Views
September 25, 23
スライド概要
Voyager (LLMを使ってMineCraftするAgent を育てるヤツ) Kenya Nonaka
読んできたもの • Voyager: An Open-Ended Embodied Agent with Large Language Models • https://arxiv.org/abs/2305.16291 • Github • https://github.com/MineDojo/Voyager • 著者らによるSummary • https://voyager.minedojo.org/
背景・目的
MineCraftとは? • プレイ動画(プレイしたことなかったの僕だけかもですが) • https://voyager.minedojo.org/ • プレイヤーが楽しめること • 鉱物の採掘 • 動植物の狩猟・採集 • 家・基地の作成 • 敵との戦闘
MineCraftと既存で研究されたGameとの違い • 環境が、すでに規定されたゴールやストーリーを用意していないこと • 既存のAIによるゲーム研究の題材 • ある時点で何をするのが得点が高い行為なのかはっきりしているモノ(報酬が明確) • 囲碁・将棋 • テトリス • シューティングゲーム • MineCraft • 何をするのが良い行為なのかはっきりしていない(報酬が不明確) • 公式が用意している「クリア」はない
MineCraftのAgentには人間のようなプレイが求められる • ①自身の状況や環境に基づいた適切なタスク選択 • 森ではなく砂漠にいる際(環境)に、鉄を作る前に、砂やサボテンを採集する • ②環境からのFeed Backに基づき、再利用のため自身のスキルを更新し記録する • ゾンビとの戦闘の仕方を覚えておいて、次に、蜘蛛と戦うときに利用する • ③自分自身で、継続的に世界を探検し、新たなタスクをみつける。
VoyagerはLLMを軸として、前述の課題に対応 • ①自身の状況や環境に基づいた適切なタスク選択 Automatic Curriculm • ②環境からのFeed Backに基づき、再利用のため自身のスキルを更新し記録する Skill Library • ③自分自身で、継続的に世界を探検し、新たなタスクをみつける Iterative Prompting Mechanism •
方法
Automatic Curriculmで環境から次の行動を提案・選択 • プロンプトの入力 • ①大局的な方向性と制約条件 • ②エージェントの現在の状況(持ってるアイテムとか近くの存在物) • ③前に成功(or失敗した)タスク • ④wikiのデータベースからretriveしてきた追加の補足情報 • プロンプトに期待する出力 • 次にするタスクとその理由
Skill Libraryを用いて、既出の行動を再利用する • タスク実行時 • LLMに、automatic curriculamで生成されたタスクから具体的な方法を生成 • その方法の埋め込み表現から既存のskillをretriveする。 • タスクの終了時 • 生成された行動を実行するためのソースコードをkey-valueの形で記録 • Key=そのソースコードの説明のEmbedding
Iterative Prompt Programming fi • 以下3種類のFBをプロンプトに与え人間の介在なしに、実行可能なソースコードにする • ①環境からのFB(bot.chatというシュミレータのAPIからのFB) • ②Execution Error(インタプリタが返すエラー) • ③Self-Veri cation(後述)
Iterative Prompt Programming • (i)行ったタスク(ii)現在のagentの状態を受け取り、タスクが成否を返すPrompt • もしタスクがFaliしていると評価したのであれば、どのように改善すればSucessするか を返す。
結果
実験環境 • MineCraftのシミレーション環境 • MineDojo • https://github.com/MineDojo/MineDojo • 移動とか視点の切り替えみたいなレベルでAPIを提供 • https://neurips.cc/virtual/2022/poster/55737 • これはこれでpaperになっているみたい • MineFlyer • mineBlockとかcraftItemとか高レベルAPIを提供
比較手法 • 基本的にはタスクとして̀explore the world and get as many items as possible”̀をプロン プトに与えて、それに応じたコードをGPT-4から生成させる。 • どの手法も一般的なPrompt Enginnering手法なので、今回の問題設定に沿う形で使い方を変えて いる。 • ReAct • 環境(シミュレータ)からのFBと現時点のagentの状態をPromptに加え、一からコード生成。 • その後、コードのre nementを三回行う。 • Re ection • ReActに加えて、ExecutionErrorをPromptに加えている。また、Self-Veri cationを行 う。 • (=提案手法のIterative Prompt Programingのみをおこなっている感じ?) • AutoGPT • 環境からのFB、現時点のagentの状態、ExecutionErrorをPromptに加え、タスクを分解 fi fi fl させて、コードを生成
どれだけアイテムを取得できるか?
テックツリーの解放レベルもVoyagerが強い • 木→石→鉄→ダイアモンドの順で作成できるハードルが高い • ダイヤモンドまでいっているのはvoyagerのみ
冒険できた範囲
所感
解釈性の高さ • 従来の深層強化学習的なアプローチでのゲーム攻略 • 学習結果がNNのパラメータとして表現されるので、なぜその行動をとっているのか?わ からないことが多い。 • Voyager • 学習結果がSkill Libraryとして表現されている。また、行動の根拠もプロンプトが説明 してくれる。 • 従来のゲームAI研究に、LLMのアプローチを持ち込んでも面白いのかな? • 解釈性が高いAlpha Goを作るなど。