基礎知識集
Sim2Real(シム・トゥ・リアル)
01定義
Sim2Real(シム・トゥ・リアル)とは、物理シミュレーター上(試行錯誤が安価・高速・安全に行える環境)でロボットの制御方策を学習させ、それを実機のロボットハードウェアに展開する手法、およびその中心的な課題を指します。
02リアリティギャップ
最大の難しさは「リアリティギャップ」です。シミュレーションの物理演算・センサーノイズ・素材の質感は現実世界と完全には一致しないため、シミュレーション上では完璧に動作する方策が、実際の摩擦・実際の照明・実際の物体の重さに直面した瞬間に失敗することがあります。
学習環境
試行錯誤が安価・高速・安全に行える一方で、物理演算・センサーノイズ・素材の質感は現実の近似にすぎません。
実機環境
実際の摩擦・実際の照明・実際の物体の重さ。そのどれも、方策がまったく同じ形では経験していないものです。
032つの対処手法
このギャップを埋める主な手法は、互いに補い合う2つがあります。「ドメインランダマイゼーション」は、1つの固定された環境ではなく、多様なシミュレーション条件を横断して方策を学習させることで、1つのシミュレーターの細かな癖に過学習させるのではなく、変動に対して頑健にします。一方「システム同定(システムID)」は逆のアプローチを取ります。シミュレーターを変動させるのではなく、摩擦・質量・モーターの応答特性といったシミュレーターのパラメータを実測値と照らして丁寧に較正し、最初から現実に近い、より精度の高い単一のシミュレーションを作ります。実際のSim2Realの現場では、両方を組み合わせて使うことも多くあります。
ドメインランダマイゼーション
学習の実行のたびに、シミュレーターのテクスチャ・照明・物理パラメータを変化させ、方策を1つの厳密な設定ではなく変動そのものに頑健にします。
システム同定(システムID)
シミュレーターのパラメータを実測値と照らして較正し、最初から現実に近い、より精度の高い単一のシミュレーションを作ります。
04実例:OpenAI Dactyl
OpenAIは、完全にシミュレーション上だけで学習させたロボットハンド「Dactyl(ダクティル)」でドメインランダマイゼーションを実証しました。学習が進むにつれてランダム化の難易度を自動的に上げていく「自動ドメインランダマイゼーション(ADR)」という手法を使ったものです。その結果得られた方策は、実機で片手でルービックキューブを解くことに成功し、研究者がぬいぐるみのキリンでハンドを小突くという、学習中には一度も見たことのない外乱を与えても動作し続けました。
05よくある質問(FAQ)
シミュレーターの精度を上げれば「リアリティギャップ」は無くなりますか?
完全には無くなりません。どんなシミュレーターも、現実世界の物理演算・センサーノイズ・素材を完璧には再現できません。精度を上げることは助けにはなりますが(それがシステム同定の役割です)、ドメインランダマイゼーションは、シミュレーション精度をひたすら上げることだけに頼るのではなく、方策自体を変動に頑健にするために使われます。
ドメインランダマイゼーションとは具体的に何をランダム化しますか?
テクスチャ・照明といった見た目の要素と、摩擦・質量・物体の寸法といった物理的な要素です。学習した方策が1つのシミュレーターの厳密な設定に過学習しないよう、学習の実行ごとに変化させます。
ドメインランダマイゼーションとシステム同定、どちらを選ぶべきですか?
二者択一ではありません。多くの実際のパイプラインでは、まずシステム同定でシミュレーターを較正しある程度正確なベースラインを作り、その上にドメインランダマイゼーションを重ねて、較正しきれずに残った誤差にも方策が耐えられるようにします。
06出典
04. 実例:OpenAI Dactyl