※本記事は、Jason Peng氏(Simon Fraser University助教授 兼 NVIDIA リサーチサイエンティスト)による講演「Synthetic Motion Data for Versatile Humanoid Control」の内容を基に作成されています。動画の詳細情報は https://www.youtube.com/watch?v=2looxieN53o でご覧いただけます。本記事では、講演内容を要約しております。なお、本記事の内容は原著作者の見解を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの講演動画をご覧いただくことをお勧めいたします。また、Jason Peng氏の研究活動やSimon Fraser University、NVIDIAの関連情報もご参照ください。
1. イントロダクション:ヒューマノイド制御の進化とモーションデータの役割
1.1 モーショントラッキング手法の発展
Jason: 本日は、汎用性の高いヒューマノイドエージェントを作るために合成データを活用する私たちの研究についてお話しさせていただきます。今日ではヒューマノイドロボットが非常にアジャイルで人間らしい運動スキルを披露している映像を目にすることは、もう当たり前の光景になっていると思います。これらのロボットは単に動的な動作を行えるだけではなく、私たちが実際の人間の動きに結び付けて感じるような、細かく微妙な仕草まで再現できるようになっています。しかし、こうしたアクロバティックな芸当を当然のように見られるようになったのは、実はそれほど昔のことではありません。少し前までは、ロボットに歩行させることさえ非常に困難だったのです。
Jason: では、なぜこれほど急速に状況が変化したのでしょうか。ヒューマノイドロボットにこのような人間らしい動きを訓練するための鍵となったのは、人間モーションデータの活用です。これは、人間の演者から全身のパフォーマンスを記録したデータを指します。私たちはこうした全身にわたる人間の演技を模倣することによって、非常にアジャイルなスキルを実行できるコントローラーを訓練しています。近年では、これらのロボットシステムの多くが強化学習とモーショントラッキングという形式を採用するようになってきました。具体的には、人間の演者からデモンストレーションを記録し、その人間の参照モーションを追跡する形でコントローラーを訓練することによって、それらの動きを再現させるという手法です。強化学習とモーショントラッキングを組み合わせたこの手法は、多種多様な行動を再現できるコントローラーを訓練するうえで、非常に効果的な方法であることが実証されています。
1.2 既存手法の限界とデータ不足
Jason: ただし、このモーショントラッキングに基づく手法には共通した限界があります。それは、得られるコントローラー自体の汎用性が低いという点です。これらのコントローラーは、ある特定の動きを繰り返し実行することに高度に特化している場合がほとんどで、基本的には同じモーションを何度も再生するだけであり、それ以外のことはほとんどできません。ヒューマノイドロボットのアジリティを見せつけるための派手なデモを作る上では、これで十分かもしれません。しかし、実世界で実際に役立つタスクをエージェントに遂行させたいのであれば、モーションクリップを繰り返し再生するだけでは明らかに不十分です。
Jason: 具体例として、ヒューマノイドエージェントに単純なターゲット地点をパンチさせるというタスクを考えてみます。このタスクを訓練するためには、まず人間の演者がそのターゲットまで歩いてパンチする様子のデモンストレーションを記録する必要があります。このデモンストレーションがあれば、シンプルなモーショントラッキング技術を適用して、そのオブジェクトを打つコントローラーを訓練することができます。しかし、ここでタスクをわずかに変更し、たとえばターゲットの位置を新しい場所に移動させたとすると、元の参照モーションはこの少し異なるバージョンのタスクには適合しなくなってしまいます。そうなると、この少し変化したタスクを人間がどのように遂行するかを示す新しいデモンストレーションを、再度記録しなければならなくなります。もちろん、タスクのあらゆるバリエーションを十分に網羅できるだけの大量のモーションデータがあれば、これは大きな問題にはなりません。しかし、こうしたヒューマノイド制御の問題における本質的な課題は、データ取得のコストが非常に高いという点にあります。
Jason: 私たちが訓練に利用するモーションデータの多くは、モーションキャプチャという形式で得られています。これは、演者にモーションキャプチャ用のスーツを着せたり、モーションキャプチャ用のステージに立たせたりして、全身のパフォーマンスを記録するというものです。このような形でデータを収集するには、演者と環境の両方に対して非常に大がかりな機材の設置が必要であり、わずか数分間のモーションキャプチャデータを得るだけでも数千ドル規模のコストがかかることも珍しくありません。したがって、これは人間のコントローラーを訓練するためのモーションデータを取得する上で、スケーラブルな手法とは言えません。私たちが関心を持っているタスクの多くにおいて、人間がその特定のタスクをどのように遂行するかを示すデモンストレーションはごく少数しか手に入らない、いわゆるデータ希少な状況にあるのが実情です。それにもかかわらず、私たちはエージェントがそのギャップを自ら埋め、タスクのあらゆるバリエーションを遂行できるような、より汎用性の高いコントローラーを訓練したいと考えています。ロボティクスやコンピューターグラフィックスへの応用を考えると、こうしたタスクを遂行しながらも、できる限り自然で人間らしい振る舞いを保持したエージェントであることが理想です。つまり、汎用性の高いコントローラーを訓練するには大量のデータが必要であり、しかしその大量のデータを取得することは非常にコストがかかるという、二重の課題に私たちは向き合っているのです。
2. 合成データによるアプローチ
2.1 生成モデルによる合成データ生成
Jason: より経済的なアプローチとして考えられるのが、合成データを活用する方法です。これは、人間の演者から記録した当初の小規模なデータセットを出発点として、それに合成的に生成したデータを組み合わせることで、データのギャップを埋めていくという考え方です。合成データを生成する一つの方法として、生成モデルの分野でこれまでに積み上げられてきた優れた研究成果を活用することができます。まず手元にある小規模なデータセットを使って生成モデルを訓練し、その生成モデルを使って大量の合成モーションデータを作り出し、それによって元のデータセットを拡張していくというアプローチです。こうして得られた合成データを用いることで、人間の演者から得られた小規模な元データだけに依存していた場合よりも、はるかに汎用性の高いコントローラーを訓練することが可能になります。
Jason: 具体例として、シミュレートされたキャラクターをターゲット地点まで移動させるという非常にシンプルなナビゲーションタスクを考えてみます。優れたモーション生成モデルがあれば、それを使ってエージェントがそのターゲット地点まで歩いていくための参照トラジェクトリを合成することができます。この参照モーションが得られれば、シンプルなモーショントラッキング手法を適用してこのタスクを遂行するコントローラーを訓練できます。この場合、生成モデルは、エージェントが特定のタスクを遂行する際に従うことのできる、妥当な軌道を生成する一種のモーションプランナーとして機能していると言えます。
Jason: 私たちは実際に、テキストからモーションを生成する拡散モデルを訓練しました。このモデルには、走る、跳ぶ、踊るといった異なるテキストプロンプトを与えることができます。このモデルを使うことで、こうした異なるスキルを用いてターゲット地点まで移動するための大量の合成モーションデータを生成し、それらの異なる種類の行動を用いてターゲットまで移動できるコントローラーを訓練することができました。次に、同じモデルを使って、押す、蹴る、殴るといった動作のための大量のデータを生成した例もあります。これによって、異なる種類の打撃を使ってターゲットオブジェクトにヒットできるコントローラーを訓練することができました。これらはあくまで単純なタスクであり、特に目新しいものではありませんが、同様の合成データアプローチをもっと複雑なタスクにも適用することが可能です。
2.2 複雑タスクへの応用と生成モデルの限界
Jason: より複雑な事例として、プロのテニス選手の映像から再構築したテニスのモーションを取り上げます。このモーションデータを使ってVAE(変分自己符号化器)という形式の生成モデルを訓練したところ、大量のテニスプレイの行動を生成できるようになりました。この合成データを用いて、シミュレートされたキャラクターにシンプルなテニスの試合をプレイさせるための訓練を行いました。この例では、物理的にシミュレートされたヒューマノイドが、飛んでくるテニスボールを打ち返し、相手コートの異なる位置に打ち分けるように訓練されており、おおむね良好な成果を上げることができています。このように、優れたモーション生成器があれば、それをモーションコントローラーの訓練用に大量の合成データを生成する手段として活用することができます。
Jason: しかし、こうした生成モデルにも活用できる限界があります。モーション生成器はもともと比較的小規模なモーションデータで訓練されているため、元のデータセットで観測された状況とは大きく異なる新しい状況への汎化に苦しむことがあります。実際に、不規則な環境を移動するためのトラジェクトリを生成するように拡散モデルを訓練した例があります。画面上では少し分かりにくいかもしれませんが、緑色のキャラクターをよく見ると、モーション生成器が生成した動きが物理的に正しくないことが分かります。キャラクターが滑ったり、あちこちで浮き上がったりしてしまうのです。このようなデータを使ってモーションコントローラーを訓練しても、うまくいく可能性は低いでしょう。これは、私たちが当初抱えていた課題と似た状況に私たちを引き戻すことになります。つまり、汎用性の高いモーションコントローラーを訓練するためには、幅広い種類の状況に対して妥当な行動を生成できる、汎用性の高いモーション生成器もまた必要であるということです。
3. 反復的データ拡張フレームワーク
3.1 フレームワークの全体像
Jason: モーション生成器を改善するための一つのアイデアがあります。私たちはすでにモーションコントローラーを訓練するために合成データを使っているわけですから、同じように、モーション生成器自体を訓練するためにも合成データを使ってはどうかという発想です。モーション生成器がより物理的に妥当なモーションを生成できるようにする一つの方法として、シミュレーション内で訓練しているコントローラーから追加のモーションデータを記録し、それをモーション生成器の追加の訓練データとして再投入するというやり方があります。その際には、明らかにアーティファクトの多いモーションを取り除くためのフィルタリングも組み込んでいます。
Jason: 元々人間の演者から得た小規模なモーションデータだけで訓練されたモーション生成器は、新しい環境への汎化に苦しみ、物理的にあり得ない振る舞いを生み出してしまうことがあります。しかし、物理シミュレーションから得られたデータを使ってモーション生成器をファインチューニングすることで、生成されるモーションを物理的な制約の中に固定することができ、はるかに妥当で物理的にも正しいモーションを生成できるようになります。実際にこの手法を適用した例では、以前に見られたような滑ったり浮き上がったりする動きの多くが解消されていることが確認できました。
Jason: これによって、モーション生成器がモーションコントローラーを訓練するための合成データを生成し、そのモーションコントローラーが今度はモーション生成器を改善するためのさらなるデータを生成するという、反復的なデータ拡張フレームワークが成立します。このプロセスを繰り返すことによって、モーション生成器とモーションコントローラーの両方の能力を段階的に拡張していくことができます。これが私たちが採用しているフレームワークの全体像です。
3.2 パルクールモーションでの実証実験
Jason: このフレームワークで実際に何ができるかを見ていきます。ここでは、非常に運動能力の高いアスリートから記録した、パルクールの動きに関する非常に小規模なデータセットを用いています。このデータセット全体はわずか14分間の人間モーションデータしか含んでいません。この小規模なデータセットを使ってモーション拡散モデルを訓練し、新しい環境とターゲットとなる経路が与えられると、そのモーション生成器を適用して、人間の演者がこの環境をどのように横断していくかを示す参照モーションを生成することができます。モーション生成器がこの環境を横断するための参照モーションを生成したら、この参照モーションに従いながら障害物を通過できるコントローラーを訓練するために、これらのオンラインベースのモーショントラッキング技術を適用します。シミュレーション内でコントローラーを訓練したら、そのシミュレーションからモーションを記録し、それをモーション生成器のための追加の訓練データとして利用します。
Jason: このフレームワークの異なる反復段階におけるモーション生成器の振る舞いを見てみると、時間の経過とともにかなり顕著な改善が見られます。最初の反復段階では、モーション生成器は人間の演者から得られたモーションデータのみで訓練されているため、新しい環境への汎化に苦しみ、このケースではキャラクターがターゲットの経路の開始地点付近で動けなくなってしまいます。このデータ拡張フレームワークをたった一度反復させただけで、ターゲットの軌道に沿った妥当な参照モーションを生成できる、はるかに効果的なモーション生成器が得られます。まだ目立つアーティファクトは残っているものの、以前よりもはるかに進行できるようになっています。さらに数回の反復を経ると、こうした複雑な環境を横断するために、より物理的に妥当なモーションを生成できる、かなり合理的なモーション生成器が得られます。このプロセスを何度も繰り返すことによって、最初に14分間だったデータを900分以上のモーションデータへと拡張することができました。これによって、ヒューマノイドエージェントがかなり複雑な環境を横断できる、比較的汎用性の高いモーションコントローラーを訓練することができています。
Jason: この例では、緑色のキャラクターがモーション生成器によって生成された参照モーションであり、青色のキャラクターは、その合成的に生成されたモーションを模倣するように訓練された、物理的にシミュレートされたキャラクターです。このように生成モデルからの合成データを活用することで、人間の演者から得られた元のモーションデータのみに依存する場合よりも、はるかに汎用性の高い地形横断コントローラーを訓練することができます。このエージェントは、おおむね複雑でランダムに生成された地形を突破することができますが、時折ミスをすることもあります。コントローラーの振る舞いを分析すると、いくつか非常に興味深い創発的な行動が見られます。一つの例は、エージェントが大きなギャップを飛び越え、対岸の縁で一度自分の体を支え、そこから縁を登り切るというモーションです。もう一つの例は、エージェントが高い縁から飛び降り、途中の低い縁で一度自分の体を支えてから、地面まで飛び降りるというモーションです。これらは、元のデータセットには存在しなかった行動です。人間の演者からこうした動きを実際に記録することは非常に危険であったはずです。しかし、私たちの反復的データ拡張フレームワークは、元の人間の演者から得られた行動を組み合わせ、再構成することによって、こうしたより興味深く複雑なスキルを生み出すことができたのです。
4. 実世界への展開とまとめ
4.1 実機ロボットへの応用と将来展望
Jason: これまでお見せしてきた結果は、すべてシミュレーション内でのものです。では、これは実世界でも機能するのでしょうか。ここでご紹介するのは、ETH ZurichのMarco Hutter氏のチームとの共同研究による、非常に最近の成果です。私たちはこの合成データ生成のアプローチを、実機のG1ロボットのための地形横断コントローラーの訓練に適用しました。この結果、このロボットはかなり不規則な環境の障害物を横断する動きを獲得することができました。このコントローラーをシミュレーション内で訓練するために、私たちは再び拡散モデルを訓練し、異なる種類の環境障害物と相互作用するための大量のモーションデータを生成しました。この合成モーションデータを用いて、これらの異なる障害物を突破するためのモーションコントローラーを訓練し、そのコントローラーを直接実機のG1ロボットにデプロイすることができました。その結果、このロボットはかなり多様な環境障害物を横断して移動できるようになっています。
Jason: 私たちが期待しているのは、最先端のモーション生成モデルによって生成できる大量の合成データを活用することで、はるかに汎用性が高く、汎用目的に使えるモーションコントローラーを訓練できるようになるということです。そして、こうしたコントローラーが最終的には非常に汎用性の高い一連の低レベルモーションスキルを提供し、その上に、実世界でより汎用的で有用なヒューマノイドエージェントを構築していけるようになることを願っています。
4.2 謝辞とMimicKitの公開
Jason: ここで一度まとめに入りたいと思いますが、その前に、長年にわたって協力してくれた学生たちや共同研究者の皆さんに、この場を借りて感謝を伝えたいと思います。彼らの努力と時間がなければ、これらの研究成果はどれも実現しなかったでしょう。また、私たちは長年にわたり、多くのスポンサーの皆様からの支援を受けてきました。その支援がなければ、この研究の多くは実現できなかったはずです。最後に一点だけお伝えしたいのですが、私たちは最近、MimicKitという名前のフレームワークを公開しました。これには、私たちが長年にわたって開発してきた制御およびモーション模倣に関する技術の多くが含まれています。ヒューマノイドやロボットに武術やアクロバティックな動きを習得させたいという方がいれば、これらのツールがきっと役立つはずです。以上でお話を終わらせていただきますが、皆さんからの質問にも喜んでお答えしたいと思います。ありがとうございました。
5. 質疑応答セッション
5.1 データ品質評価と劣化サイクルの課題
質問者A: 素晴らしい講演をありがとうございました。一つお伺いしたいのですが、最終的な評価にはどのような手法を用いていますか。合成的に生成されたデータの中には、品質が十分でないものや、いわば汚染されたデータも含まれているのではないかと思います。どのような方法で評価を行っているのでしょうか。また、この過程においてヒューマンインザループが有効だと思われますか。
Jason: ご指摘の通りです。私たちが生成する合成データの多くは、必ずしも物理的に妥当とは限らず、さまざまなアーティファクトを含んでいることがあります。現時点でこうしたモーションを評価する方法の一つは、望ましくないアーティファクトを検出するために手作りのヒューリスティックやスクリプトに依拠するというものです。また、物理的にあり得ない振る舞いを検出するために、物理シミュレーションを利用することもできます。ただ、ヒューマンインザループによる評価は非常に理にかなったアプローチだと思います。人間の選好から評価モデルを自動的に学習させるというアプローチも有用かもしれません。しかし現時点では、私たちは最も基本的かつ素朴な手法にとどまっているというのが実情です。
質問者B: 素晴らしい講演を改めてありがとうございます。データの品質について、少し関連した質問をさせてください。生成モデルから出てくるアーティファクトを物理シミュレーションによって修正するというプロジェクトのサイクルについて、どのようにお考えでしょうか。このプロセスの限界はどこにあると思われますか。DeepMimicに取り組んでいた頃から、トラッキングコントローラーを一度経由するとモーションの品質が複製されて劣化していく可能性があることは分かっていたと思います。この点について、どのようなことが起こり得るとお考えでしょうか。
Jason: その質問は、私たちがこれまで用いてきたフレームワークの核心的な課題の一つを突いていると思います。物理シミュレーションを経由することによって、モーションデータの品質が劣化してしまうことがあるのです。そして、このプロセスを十分な回数繰り返すと、コントローラーから得られるモーションの品質もどんどん悪化していきます。最終的なコントローラーに見られる振る舞いには、元の人間のデータには存在しなかった、目に見えるアーティファクトが残ってしまうことがあります。残念ながら、これは現在の私たちのシステムが抱えている欠点の一つです。私たちは、ある振る舞いが物理的には正しいものの、人間が実際に行う振る舞いとしては不自然であるということを検出するための、十分な検証ツールを持っていません。そのため、そうした不自然な振る舞いが最終的にシステムに再投入され、さらに多くの非人間的な振る舞いを生み出してしまうことになります。残念ながら、現時点でこれに対する良い解決策は持ち合わせていませんが、これは今後さらに追求していきたいと考えているテーマの一つです。システムがより多くの合成データを生成していく過程で劣化しないようにする方法を、どのように確保していくかということです。
5.2 動的環境・制御インターフェース・Sim-to-Real
質問者C: 講演をありがとうございました。エージェントの行動が環境に影響を及ぼす場合にどうなるのか、興味があります。今の設定では、箱などはほとんど静的なままで、それを乗り越えるという形になっています。しかし、たとえばドアや引き出しを開けたり、何かを片付けたりするような場合には、自分自身が動作を続けながら環境そのものが変化していく必要があると思います。こうした手法は、そうした状況にも適用できるのでしょうか。
Jason: 似たような手法を動的な環境にも適用できると考えています。私たちは現在のところ主に静的な環境に注目していますが、それは私たちが持っているデータがそのようなものに限られているためです。しかし、もし私たちのモーションデータが環境内のオブジェクトの動きも捉えているのであれば、このフレームワークを拡張して、ロボット自身の振る舞いと周囲のオブジェクトの動きの両方を生成する生成モデルを訓練できるはずだと考えています。これは可能だと思いますし、現時点ではデータの availability の問題が大きいと考えています。
質問者D: ここまでの議論では、主に低レベルのモーション生成器についてお話しされていたと思います。私の質問は、現在のレベルのコントローラーにとって、フルボディのポーズは理想的な制御インターフェースなのかどうかという点です。もしそうでないのであれば、上位レベルの生成器のためには、たとえば全身のこうした情報が必要になるのでしょうか。実世界ではどのようにすればよいのでしょうか。理想的な制御インターフェースとは何だとお考えですか。
Jason: 私は、フルボディのポーズが理想的な制御インターフェースだとは思っていません。他のシステムに対して、フルボディのポーズを生成することを強制したくはありません。人間が自分の動きを計画するとき、私たちは体のすべての関節の動きを意識的に考えているわけではありません。私たちは、特定のタスクに関連する、身体の中でも顕在的な要素にのみ注目しています。そのため、エージェントをフルボディのポーズによって制御しようとするのは、少し過度に手数の多いアプローチになってしまうのではないかと思います。もっと汎用性の高い制御インターフェースとしては、たとえばスパースな制約を用いる方法が考えられます。これは、モーション生成器が身体の重要な部分の振る舞いだけを制御し、残りの身体の動きは低レベルのコントローラーが推論するというやり方です。これは、より扱いやすいインターフェースになるのではないかと思います。
質問者E: 興味深い講演をありがとうございました。二つ質問があります。一つ目はSim-to-Realギャップに関連するものです。この素晴らしいフレームワークとポリシーによって、こうした自然な動きが実現できているわけですが、これをどのように実機に転送したのでしょうか。二つ目は、ポリシーから得られたものをモーション生成器に投入する流れについてです。実機ロボット上で実際に起きたことを取得して、それをこのランダムなモーション生成器にフィードバックするという試みはしたことがありますか。
Jason: 一つ目のSim-to-Realギャップについてですが、私たちはSim-to-Real転送のために特に目新しいことは行っておらず、基本的には大量のドメインランダム化に依拠しています。二つ目の、実世界からのモーションデータをモーション生成器にフィードバックするという試みについては、まだ実際に試したことはありませんが、非常に興味深いアイデアだと思いますし、試してみる価値があると思います。
5.3 データの量と多様性
質問者F: 講演をありがとうございました。私の質問は、最適化プロセスによって生成されるデータの種類に関するものです。データ生成の量そのものが重要なのか、それとも、たとえば回復動作のような特定の種類のデータや、早期に発生するケースへの着目や交差点の扱いといった特定の側面に焦点を当てることの方が重要なのか、どのようにお考えでしょうか。
Jason: こうした合成モーション生成手法の多くにおいて、データの量そのものはおそらく最も重要な要素ではないと思います。というのも、こうした合成データのほとんどはほぼ無料で生成できるものだからです。それよりも重要なのは、生成するデータの多様性、つまりデータの種類だと考えています。現在の私たちのフレームワークには、失敗ケースを特定して、そうした困難なケースに対してより多くのモーションを生成しようとするような、知的なシステムは組み込まれていません。エージェントが苦戦している特定のケースに生成の努力を集中させるべきだという発想は、今後取り組むべき非常に合理的なアイデアだと思います。まだ試したことはありませんが、非常に理にかなったアイデアだと思っています。