Inner Monologue - 言語モデルによるプランニングを通じた身体化推論
「基盤モデル×Robotics」 Advent Calendar 2022 12日目
はじめに
株式会社松尾研究所の石本幸暉です。
今日の記事では、大規模言語モデルの推論機能に人間からの言語フィードバックなどを追加することでロボットの高レベルのタスクを行うことができたInner Monologueという研究を紹介します。
目次
Inner Monologueとは?
Inner Monologueとは、SayCanという研究の発展で、(SayCanはアドカレで他の方が解説してくださる予定です!)いくつかの追加のフィードバックループを通して言語指示による多段階タスクをロボットに行わせることを報告した論文です。
Inner MonologueではchatGPTで利用されているInstructGPTやPALMという大規模言語モデルを利用しています。 InstructGPTは、GPT-3を人間のフィードバックで微調整したもので、今話題のchatGPTでも使用されているモデルになります。
この研究では、1)シミュレータでの机, 2)実世界での机, 3)実世界でのキッチン の3つの実験設定で、それぞれ微妙に異なるモデルや入力の設計をしています。
その1 シミュレーション上の机での再配置タスクにおけるInner Monologueの設計
使用した大規模言語モデル
InstructGPTをOpenAI APIからアクセスして使用しています。
pick and placeのプリミティブモーション
大規模言語モデルプランナーが呼び出せるpick and placeプリミティブモーションとしては、CLIPベースのトランスポーターネット(CLIPortを参考にした)を使用しています。プリミティブモーションの学習は、データセットに
- “pick up [“x”] and place it on [“y”]” という言語指令
- RGBD画像入力
- シミュレータから得られた物体の正確な位置
- シミュレータから得られた正確な物体の置く位置 の4つを含む、2万個のデモを用いて学習しています。
環境からのフィードバック:物体認識
各エピソードの開始時に環境に存在する物体のリストを言語モデルに与えます。(座標は与えない) ViLDやMDETRなどの Open Vocaburaryな物体検出モデルによって得られるが、かんたんのためにシミュレータの真値を使用しています。
環境からのフィードバック:成功検出
Object+Success メソッドでは、各ポリシー実行後に物体姿勢に基づくヒューリスティックな成功判定処理を行なっている(掴んだ物体の2次元ユークリッド距離が目標から4cm未満かつ下の物体より上にあるなら成功としている)
環境からのフィードバック: Passive Scene Desctiption
Object+Success メソッドでは、成功したサブゴールのリストを用いて進行状況を描写します。大規模言語モデルは、高レベルの命令からサブゴールリスト([x]は[y]の上にある、といった形式)を作成し、成功検出を使ってどれが成功したかをチェックします。さらに、Robot thought: のところで言語モデルによる思考の連鎖を生成できるようにし、これが有用であることがわかりました。
実験と結果
テーブルの上のブロックとボウルを置き、自然言語で指定したある配置に再配置させるタスクを行ないました。比較のため、CLIPortを用いたポリシーと比較しています。
下の表からわかることとしては、LLM単体でのポリシーに比べてInner Monologueの正解率が比較的高いことと、新しいタスクに対する適応がCLIPortだと難しいということです。また、CLIPortは長期タスクへの汎化が難しいこともわかります。Oracle(人間からのタスク終了指示)を与えてやらないとCLIPortはうまく機能していないようです。
その2 実世界での机の上の再配置タスクにおけるInner Monologueの設計
使用した大規模言語モデル
InstructGPTをOpenAI APIからアクセスして使用しました。
pick and placeのプリミティブモーション
物体のpick and placeのために以下の情報を用いました。
シーン内の全ての物体のバウンディングボックス
つかむ物体と置く物体の名前
物体検出時に対応する深度画像
カメラの内部構造
カメラの姿勢
を入力として、目標把持位置と目標の置く位置を出力しました。ロボットは目標位置の15cm上まで移動し、ゆっくりとアームを下げて接触力が5 Nになるまで動かしました。
環境からのフィードバック:物体認識
MDERTという物体検出モデルを使用し物体ごとのバウンディングボックスを出力しました。
環境からのフィードバック:成功検出
pick and place 動作後に検出された物体のバウンディングボックスの2次元位置と、想定された2次元配置位置を比較し、成功検出を行いました。バウンディングボックスの中心点の座標を深度画像から計算し、閾値以下になると成功と判定した(ブロック積みの場合3cm, 物体の並び替えタスクでは10cmの閾値)
環境からのフィードバック: Passive Scene Desctiption
ブロック積みでは、現在見えている物体のリストと今は見えていない物体のリストを用意し、新しく見えた物体を検出した場合、前者のリストに追加しました。
物体の並べ替えタスクでは、現在見えている物体のリストと、ロボットが移動に成功した物体のリストを用意しました。
実験と結果
手先にIntel RealsenseカメラをつけたUR5eロボットアームで、オモチャのブロック、食品、調味料の再配置タスクを行ないました。具体的には、1)2つのブロックが既に積み上げられている状態からの3つ目のブロックを積み上げるタスクと、食品をさらに入れ、調味料を別の皿に仕分ける再配置タスク の二つを行いました。
フィードバックを2つ使ったInner Monologueが最も高い成功率となっていることがわかります。フィードバックを削った場合の失敗例としては、1) 最初に見えなかった物体がモデルの生成するプランに含まれていないこと、2) ポリシーノイズを加えたことで失敗したpick and placeの動作を再試行しないこと の2つが主に原因であることがわかりました。
その3 実世界のキッチンでのInner Monologueの設計
使用した大規模言語モデル
PALMというWeb, 書籍、Wikipedia、会話、GitHubコードなどの大規模データセットで学習した540Bパラメータのモデルを使用しました。
pick and placeのプリミティブモーション
SayCanに習い、学習ベースとスクリプトベースを組み合わせたナビゲーションとマニピュレーションを使用しました。
カウンターピッキング、引き出しの開閉、ピキダシのピッキング、カウンター上の物体操作のための学習されたポリシーには、10台のロボットを使い11ヶ月かけて集めた68000の遠隔操作デモと、12000の自律的な成功例に対して学習されたBC(行動クローニング)ポリシーを用いました。
ナビゲーションにはスクリプトベースのものを用意し、環境内の異なる地点に向かうためにあらかじめ計測された地図を用いてポリシーが作成されました。
環境からのフィードバック:物体認識
人間が直接カメラ上の物体の存在をフィードバックしました。
例:コーラとりんごがキッチンカウンターの上にあったら、[scene: coke can, apple]をフィードバック
ViLDとMDETRという物体認識モデルで完全自動の物体認識フィードバックについても検討したが、100%の制度にはなリませんでした。
環境からのフィードバック:成功検出
デモンストレーションデータと自律的な走行データを用いて成功検出予見器を学習しました。
予見器は左下図のように初期画像とポリシー実行後の画像をそれぞれCLIPのImage Encoderに通し、繋げてMLPに入力として入れています。そこから出力された画像Embeddingと、命令をCLIP Text Encoderを通した Text Embeddingと合わせて再びMLPに入力し、ある閾値を設定し2値ラベルで出力しています。
False Positiveを減らすために、Hindsight(後知恵)モデルを訓練しました。最初と最後の画像から予見器と同様にしてImage Embeddingを出力し、Text Embeddingと内積をとり可能性のある全てのスキルの確率分布を作成しました。ある閾値を上回ったらhindsightモデルを使用し、すべてのスキルのargmaxが予見タスクである場合、成功と予測しました。(この予見器とHindsightモデルの使い分けの部分あんまりわかってないです)
環境からのフィードバック: Passive Scene Desctiption
大規模言語モデルが直接質問をし、人間からフィードバックを受けるケーススタディを行いました。 各ステップ後、モデルは、次の行動にすすむ"and continue" か、人間に質問する"and ask"のいずれかを選択します。モデルが提案する質問は表現の自由度が高いものになりました。以下が人とモデルのインタラクションの例になります。
実験と結果
SayCanと同じキッチン環境とタスク定義を使用したロボットシステムを使用しました。Everyday Robotというモバイルマニピュレータを使用しています。SayCanはLLMと基礎的な制御ポリシーの価値関数を組み合わせて、実世界での計画を立てる手法で、SayCanでは大規模言語モデル単体の予測にフィードバックは与えられていません。1) 4つの操作タスク, 2) 引き出しを利用した2つの操作タスク, 3) 2つの組み合わせタスク の3つで120の評価を行いました。また、ロボットの動作途中に人間が物体を動かすなどの妨害を加えた場合の検証も行ないました。
上の表から、SayCanは妨害があると性能が著しく下がること、Inner Monologueは大規模言語モデルに、成功/失敗や物体の存在に関するフィードバックを組み込むことで、成功率を高められること、がわかります。
創発的な能力
Inner Monologueはプロンプトで与えられた例以上の推論と再計画行動を示したと述べています。以下が論文中で挙げられているものです。
・人間がタスク途中で高レベルの目標を変更するよう指示した場合でもそれに対応できました。また、人間が「やめてください」というとプランナがシナリオの中に一般化しアクションの完了を受け取ることができます。
・いくつかのブロックの中にとても重いブロックを紛れ込ませ、ロボットが持ち上げられないような状況でも他のブロックにターゲットを切り替えることができました。
・命令を中国語で入力しても英語に変換して計画することができました。
・人間の指示介入などによりフィードバックの順番が変わっても対応できるロバストなプランナの特性を示した
・誤字脱字に対してロバストでした。
Limitation
1)成功検出、2)大規模言語モデルの計画エラー, 3)制御のエラー の3つの失敗の可能性があります。
例えばfalse positiveな成功検出により把持失敗したはずの物体を掴んだと認識したり、大規模言語モデルプランナーが存在しない物体を含む提案をするケースもありました。
まとめ
この研究では、いくつかの追加のフィードバックループを通して言語指示による多段階タスクをロボットに行わせることを報告しました。
SayCanが出たりこの論文が出たり、直近だとRT-1が発表されたりで、大規模言語モデルとロボットの関係がめっちゃ進んでる(主にGoogleとかOpenAIとかNvidiaとか)2022年ですが、ロボットAIが社会に実装される日が楽しみですね。
この研究が気になった方はInner MonologueのWebsiteをご覧ください。動画もたくさんあるのでそちらをみると直感的に何やってるかがわかりやすいです。