LLMによるロボットの多様な動作生成に成功
3つの要点
✔️ 再学習なしでLLMによる低レベルロボットコントローラーを獲得
✔️ LLMはロボットへの制御指令ではなく、報酬関数を出力
✔️ 目的動作の記述と報酬関数の出力の2段階に分けた
Language to Rewards for Robotic Skill Synthesis
written by Wenhao Yu, Nimrod Gileadi, Chuyuan Fu, Sean Kirmani, Kuang-Huei Lee, Montse Gonzalez Arenas, Hao-Tien Lewis Chiang, Tom Erez, Leonard Hasenclever, Jan Humplik, Brian Ichter, Ted Xiao, Peng Xu, Andy Zeng, Tingnan Zhang, Nicolas Heess, Dorsa Sadigh, Jie Tan, Yuval Tassa, Fei Xia
(Submitted on 14 Jun 2023 (v1), last revised 16 Jun 2023 (this version, v2))
Comments: this https URL
Subjects: Robotics (cs.RO); Artificial Intelligence (cs.AI); Machine Learning (cs.LG)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
最近、ChatGPTなどといったLLM(大規模言語モデル)の活躍が凄まじく、様々な分野への応用が検討されているかと思います。ロボットもその対象の一つで、LLMによるロボットの動作生成が盛んに研究されています。LLMの導入により、ロボット制御における様々なタスクが達成されていますが、これまでの研究では、予め設計もしくは学習された基本動作(例えば、4脚ロボットが一定速度で歩く等)を言語を用いて組み合わせ、新たに構成された動作を生成することに焦点を当てています。一方で、LLMはロボットの動作に関する知識を与えても、直接ロボットの制御入力を出力すること、つまり基本動作を生成することは難しいです。しかし、ロボットの基本動作の設計は専門知識が必要であったり、泥臭い作業が必要であることから、基本動作をLLMを用いて生成することが望まれます。本記事では紹介する論文では、とある工夫を導入することで、追加学習等を行わずに、既存のChatGPTのようなLLMによってロボットを巧みに制御することに成功しています。
こちらの元論文の著者らのサイトには、実際にロボットが動いている様子や概念図などが紹介されているため、ぜひこちらも確認していただけるとより理解が深まるかと思います。
提案手法
論文の手法には2つのポイントがあります。
Reward Interface
1つ目のポイントは、制御入力ではなくその報酬関数を出力する点です。これまで、LLMがロボットの基本動作を達成するように制御指令を直接生成するのは難しいという背景がありました。そこで、著者らは、LLMには制御指令を生成させるのではなく、その動作の元となる報酬関数を生成させるという手法を採用しています。これは、「動作の指示」と「制御指令の生成」という間にあった隔たりを、「報酬関数」で埋めることができるのではないか?というアイデアです。下図が、その概念図をわかりやすく示しています。
Reward Translator
2つ目のポイントは、報酬関数の出力方法です。ただ動作を言語で指示すれば最適な報酬関数が得られるかというとそうではありません。特に複雑な動作になればなるほど、その報酬関数を生成するのは容易ではありません。そこでこの研究では、一度指定された動作についてLLMに詳細に記述を行わせ、その記述に対応する報酬関数を出力させるという2段階の枠組みを採用しています。これは、LLMは簡単な動作であれば報酬関数を容易に出力できるということと、複雑な動作を簡単な動作に分けて記述することはできるという2つの知見から得られたアイデアになっております。また、報酬関数は下のように各報酬項の線形和になっていることから、複雑な動作を書き下すことと相性が良いとも言えます。
Motion Controller
報酬関数から実際の動作を生成するためにはそのコントローラーが必要ですが、それには今回MPC(Model Predictive Control)という制御手法を用いています。MPCは有限時間未来を予測し、予測した未来まで報酬関数の総和が最大(最小)になる制御入力を決定する最適化手法です。強化学習の手法と比較して学習が不必要なために結果の確認が容易であること、また比較的ロバスト性が高いことから採用されています。
実験
シミュレーション
シミュレーション実験では、4脚ロボットとマニピュレータの2つを使用して下図にあるような様々なタスクを行います。これらのタスクについて、2つの手法と比較を行いました。動作の記述を行わずに直接報酬関数の出力を行う「Reward Coder」と事前に獲得した簡単な動作を組み合わせて動作を生成する「Code-as-policies」の2つをベースラインとしています。下図がその結果となりますが、ベースラインと比較して圧倒的に多様な動作を生成できていることがわかります。
こちらの動画を見ていただけるとわかりますが、最も特徴的なのは、4脚ロボットにムーンウォークを行わせているものでしょうか。「Robot dog, do a moonwalk」という言語指示に対して、実際にムーンウォークの動作を生成することができています。
実機実験
ロボットアームを用いた物体操作の実機実験も行っています。実機の性能には限りがあり、シミュレータで出せるような速度を出すことが難しい場合があります。そのため、今回はロボットアームの速度などに関するペナルティ項を報酬関数に追加しています。また、カメラの画像とLiDARによる深さ情報を組み合わせて、物体の位置情報などを正確に推定することで、りんごやルービックキューブを持ち上げるなどといった動作を実機で達成しています。
まとめ
目標となる動作の記述を行った後に報酬関数の出力する枠組みを作ったことで、低レベルのコントローラーをLLMで獲得することができました。報酬関数設計は人間が専門知識などに基づいて泥臭く行う部分であり、それが自然言語を介して自動で行われるのは魅力的に思われます。
今後の拡張としては、論文中で3点言及されています。1点目は、動作の記述に関してテンプレートを用意してしまっている点です。現状は自動的に良い動作の記述をLLMがしてくれるというわけではなく、良いテンプレート(プロンプト)を与えることで、それに基づく動作の記述が行われます。このテンプレートの設計自動化が方向性としてあげられます。2点目は、言語で簡単に説明できない動作の生成(「優雅に歩く」など)が難しいということです。これについては、動作のビデオを見せるなど、マルチモーダルな入力を受け入れることのできるシステムの構築が解決策として考えられます。最後に、LLMが自動で決定してくれるのは報酬項の重みとパラメータであり、報酬項は予め人間が設定しているという点があります。これによりシステムが安定しますが、柔軟性を一部犠牲にしてしまいます。安定性を担保しつつ、ゼロから報酬関数を設計できるようにすることは重要な研究の方向性だと述べています。
この記事に関するカテゴリー