俺のブログ

学習メモや日記をつらつらと書きます。

Sim2Real転移のためのDomain Randomization(翻訳)

この記事は,Lilian Weng氏によるDomain Randomization for Sim2Real Transferの記事を日本語訳したものです.

元記事 : Domain Randomization for Sim2Real Transfer: 2019年5月5日 by Lilian Weng

訳 : たける

シミュレーター上で学習したモデルやポリシーを実ロボット上で動作させる場合,確実にsim2realのギャップに直面してしまいます.Domain Randomizationは,学習する環境をランダム化することで,このギャップを埋めるというシンプルながらも協力なアイデアです.

ロボット分野における最も難しい課題の一つに,どのようにして実世界にモデルを転移させるかという問題があります.深層強化学習アルゴリズムのサンプル非効率性と,実ロボットでのデータ収集が高コストな事から,理論的には無限にデータを収集できるシミュレーターでのモデル学習が必要となることがよくあります.ですが,シミュレーターと物理世界のリアリティギャップは,物理ロボットとの作業では失敗につながることが多いです.このギャップは,物理パラメータ(摩擦,kp , 減衰,質量,密度など)の違い,さらには不正確な物理モデリング(柔らかい表面感の衝突など)によって引き起こされます.

sim2realのギャップを近づけるためには,シミュレーターを改善し現実に近づける必要があります.いくつかアプローチがあります:

  • System Identification(システム同定)

    • システム同定とは,物理システムの数学的モデルを構築することです.強化学習のコンテクストでは,数学的モデルとはシミュレーターのことです.シミュレーターをより現実的な物にするためには,注意深いキャリブレーションが必要です.
    • 残念ながら,キャリブレーションには多くの費用がかかります.さらに,同じマシンでも温度や湿度,位置,時間の経過による摩耗で,多くの物理パラメータが大きく異なる可能性があります.
  • Domain Adaption(ドメイン適応)

    • Domain Adaption(DA)とは,タスクモデルによって強制されたマッピング正則化によって,シミュレーションのデータ分布を実際のものと一致するように更新するために開発された転移学習手法の一つです.
    • 多くのドメイン適応モデルは,特に画像分類やEnd-to-Endの画像ベースの強化学習タスク用に,敵対的損失(Adversarial Loss)やGANで構築されています.
  • Domain Randomization(ドメインランダム化)
    • Domain Randomization(DR)を使用すると,ランダム化されたプロパティを使用して様々なシミュレーション環境を作成することができ,それら全てで機能するようにモデルを学習します.
    • このモデルは実世界の環境に適用できる可能性が高いですが,実際のシステムは訓練バリエーションの豊富な分布の中での1つのサンプルになると思われます.

Domain AdaptionとDomain Randomizationはどちらも教師なしです.Domain Adaptionは,実際の分布を捉えるために大量の実データサンプルを必要としますが,Domain Randomizationは実データをほとんど必要としない,もしくは全く必要としません.本記事では,このDomain Randomizationに焦点を当てています.

f:id:tkr1205:20201013130646p:plain
図1. sim2real転移における,3つのアプローチを表したコンセプト図

Domain Randomizationとは何か

定義をより一般的にするために,フルにアクセスすることが可能な環境(つまりシミュレーター)をソースドメイン,モデルを転移させる環境(つまり物理的な世界)をターゲットドメインと呼びます.学習はソースドメインで行います.ランダム化空間(\xi \in \Xi \subset \mathbb{R}^N)からサンプリングされた構成(\xi)を使用して,ソースドメイン(e_\xi)N個のランダム化パラメータのセットを制御することが可能です.

方策の学習の過程で,エピソードはランダム化が適応されたソースドメインから収集されます.したがって,方策は様々な環境にさらされ,一般化することを学びます.方策のパラメータ(\theta)は,分布全体で期待報酬(R)の平均を最大化するように学習されます.

f:id:tkr1205:20201010165829p:plain

ここで,(\tau_\xi)は,(\xi)でランダム化されたソースドメインから収集された軌道です.ある意味で,「ソースドメインとターゲットドメイン間の不一致は,ソースドメインの変動性としてモデル化されます」(Peng et al. 2018)

一様Domain Randomization

Domain Randomizationのオリジナルの形式(Tobin et al. 2017;Sadeghi et al. 2016)では,各ランダム化パラメータ(\xi_i)は,\xi_i \in [\xi_i^\text{low}, \xi_i^\text{high}, i=1,...,N]によって制限されます.そして各パラメータは,範囲内で均一にサンプリングされます.

ランダム化パラメータは,例えば以下のようなシーンの外観を制御することが可能です(Fig. 2参照).シミュレーション及びランダム化された画像から学習したモデルは,実際のランダム化されていない画像に転移させることが可能です.

  • 座標や形状,オブジェクトの色
  • 素材の質感
  • 照明の条件
  • 画像にランダムなノイズの付与
  • シミュレーター内のカメラの位置や向き,視野
f:id:tkr1205:20201010172247p:plain
図2. ランダム化された環境でキャプチャされた画像.(引用元: Tobin et al, 2017(https://arxiv.org/abs/1703.06907))

シミュレーターにおける物理ダイナミクスもまたランダム化(Peng et al. 2018)することが可能です.研究によると,再帰な方策は部分観測可能な現実を含む様々な物理ダイナミクスに適応可能であることが示されている.例として,以下のような物が挙げられます

  • オブジェクトの質量と寸法
  • ロボットの質量と寸法
  • 減衰,kp,関節の摩擦
  • PID制御のゲイン
  • 関節の制限
  • 行動における遅延
  • 観測ノイズ

OpenAI Roboticsでは,ビジュアル及びダイナミクスのDomain Randomizationを使用して,実ロボットのDexterouis Robot Handで方策を学習することができています(OpenAI, 2018).この研究では,ロボットハンドに50回連続でランダムなターゲットの向きにオブジェクトを回転させることを目標としています.このタスクにおけるsim2realのギャップは,(a)ロボットとオブジェクト間の多くの同時接触と(b)オブジェクトの衝突やその他の動きの不完全なシミュレーションにより,非常に大きくなっている.最初,方策はオブジェクトを5秒以上落とさずにいられませんでした.しかし,Domain Randomizationのおかげで,方策は最終的に驚くほどうまく機能するように進化しました.


Learning Dexterity: Uncut

なぜDomain Randomizationはうまくいくのか?

次に,なぜDomain Randomizationはそんなにうまくいくのか尋ねるでしょう.アイデア自体は非常に単純に思えます.以下の2つは私が最も説得力があると思った説明です.

最適化としてのDomain Randomization

あるアイデア(Vuong, et al. 2019)では,Domain Randomizationにおけるランダム化パラメータの学習が,双レベルの最適化であるとみなしています.実際の環境[tex:e{real}]にアクセスでき,ランダム化構成が[tex:\phi, \xi \sim P\phi(\xi)]でパラメータ化された分布からランダム化構成がサンプルされると仮定し,方策[tex:\pi\theta]が学習されている[tex:e{real}]で最大のパフォーマンスを達成するように以下の様に学習します.

f:id:tkr1205:20201013131852p:plain

ここで,\mathcal{L}(\pi; e)は環境eで評価される方策\piの損失関数です.

一様なDomain Randomizationでは,人の手でランダム化の範囲を選択しますが,多くの場合ドメインの知識と転移性能に基づいた何度かの試行錯誤を伴う調整が必要とされます.基本的に,これは最適な[tex:\mathcal{L}(\pi{\theta^*(\phi)}; e\text{real})]のために\phiをチューニングする手動の最適化プロセスです.

次セクションでのガイド付きDomaion Randomizationは,主にこの視点に触発されており,双レベルの最適化を行い,最適なパラメータ分布を自動的に学習することを目的としています.

メタ学習としてのDomain Randomization

OpenAIのプロジェクト(OpenAI, 2018)では,様々なダイナミクスで一般化するためにLSTM方策を学習しました.ロボットが最初の回転をできるようになると,次の回転ができるようになる必要な時間が遥かに短くなることがわかりました.またオンポリシーな方策は,物理ロボットに転移できないことがわかりました.どちらも方策が動的に学習し,新しい環境に適応しているという証拠です.

ある意味で.Domain Randomizationは様々な異なるタスクのコレクションを構成します.リカレントネットワークのメモリは,タスク間のメタ学習を実現し,実世界の設定でさらに作業ができるようにします.

ガイド付きDomain Randomization

普通のDomain Randomziationは,現実のデータへのアクセスを想定していないため,ランダム化の設定はシミュレーションの中で可能な限り広く一様にサンプリングされ.実際の環境がこの広い分布でカバーされることを期待しています.一様なサンプリングを,タスクパフォーマンスや実際のデータ,シミュレーターからのガイダンスに置き換えるように,より洗練された戦略を考えるのが妥当です.

ガイド付きDomain Randomization(Guided Domain Randomization)のモチベーションの一つに.非現実的な環境でのモデルの学習を避けることで計算リソースを節約するというものがあります.もう一つは,過度に広いランダム化分布から生じる可能性があり,方策の学習の成功を妨げる可能性がある実行不可能な方法を回避することです.

タスクパフォーマンスのための最適化

様々なランダム化パラメータ[tex:\xi \sim P \phi (\xi)] を使用して,一連の方策を学習するとします,ここで[tex:P\xi]は\phiによってパラメータ化された\xiの分布です.後で,フィードバックを収集するために,ターゲットドメインのダウンストリームタスクでそれら全てを試す事にしました(つまり,実際にロボットを制御するか,バリデーションセットで評価します).このフィードバックは,\xiの設定がどれくらい良いものかを示し,\phiを最適化するための信号を提供します.

NASに触発されたAutoAugument(Cubuk, et al. 2018)は,画像分類のための最良のデータオーグメンテーション(せん断,回転,反転など)の選択を強化学習の問題として学習する仕組みです.AutoAugmentは,sim2real転移には提案されていませんが,タスクのパフォーマンスによって導かれるDomain Randomizationのバケットに含まれることに注意してください.個々のオーグメンテーション設定は,バリデーションセットで評価され,パフォーマンスの向上はPPOを学習するための報酬として使用されます.この方策は,データセットごとに異なるオーグメンテーション戦略を出力します.例えばCIFAR-10の場合,AutoAugumentは主にカラーベースの変換を選択しますが,ImageNetはジオメトリベースを優先して選択します.

Ruiz(2019)は,タスクフィードバックを強化学習の報酬と見なして,\xiを調整するための「learning to simulate(シミュレーションの学習)」という名前の強化学習ベースの手法を提案しました.多変量ガウス分布としてモデル化された方策を,メインタスクのバリデーションデータのパフォーマンス距離を報酬として,\xiを推定するように学習されています.

f:id:tkr1205:20201013131934p:plain
図3. "learning to simulate"のアプローチを示した概要図. (引用元: Ruiz(2019), https://arxiv.org/abs/1810.02513)

進化アルゴリズムは別の方法であり.フィードバックを進化を促すための適応度として扱います(Yu et al, 2019).この研究では,CMA-ES(共分散行列適応進化戦略)を用いましたが,ターゲット環境での\xi条件付き方策の評価を適応度としています.付録で,研究者らはCMA-ESと\xiダイナミクスをモデル化するようなベイズ最適化やニューラルネットワークなどの他の方法と比較しています.これらのメソッドは,CMA-ESほど安定しておらず,サンプル効率が低いという主張がされています.興味深いことに,P(\xi)ニューラルネットワークでモデル化すると,LSTMがフィードフォワードネットワークよりも著しく優れています.

sim2realギャップは,外観のギャップとコンテンツのギャップの組み合わせであると考える人もいます.つまり,GANに影響を受けたほとんどのDomain Adaptionモデルは,外観のギャップに焦点を合わせています.Meta-Sim(Kar, et al. 2019)は,タスク固有の合成データセットを生成することにより,コンテンツのギャップを埋めることを目的としています.Meta-Simは,自動運転車の学習を例としているため非常に複雑な環境となっています.この場合,合成シーンはプロパティ(場所や色)を持つオブジェクトの階層,及びオブジェクト間の関係によってパラメータ化されます.階層とは,Structure Domain Randomization(SDR; Prakash, et al. 2018)に近い確率的シーン文法によって指定され,事前にわかっている前提です.モデルGはシーンプロパティsの分布を拡張するように次の方法で学習します,

  1. まず,事前学習を行います.恒等関数G(s)=sを学習します.
  2. 実際のデータ分布とシミュレーションデータ分布間のMMD損失を最小化します.これには微分不可能なレンダラーを通じたバックプロパゲーションが含まれます.この論文は,G(s)の属性を摂動させることで,数値的に計算しています.
  3. 合成データで学習しましたが,実際のデータで評価した場合,REINFORCEタスクの損失を最小化します.繰り返しになりますが,これはAutoAugumentと非常によく似ています.

不幸にも,このようなメソッドはsim2realには適していません.強化学習や進化アルゴリズムには,多数の実サンプルが必要です.また,物理ロボットのデータ収集をリアルタイムで学習ループに含めるのは非常に高いコストがかかります.計算リソースが少なくなるかどうかは,タスクによって異なります.

実データ分布との一致

実際のデータをガイド付きDomain Randomizationに使用することは,システム同定やDomain Adaptionを行うのとよく似ています.Domain Adaptionの中心となるアイデアは,実際のデータ分布に一致するようにデータ分布を修正することです.実データガイド付きDomain Randomizationの場合,シミュレータの状態分布を実世界の状態分布に近づけるランダム化パラメータ\xiを学習したいというものです.

SimOptモデル(Chebotar et al. 2019)は,まず初期ランダム化分布[tex:P\phi(\xi)]の下で学習を行い,方策[tex:\pi{\theta, P\theta}]を得ます.そして,この方策はシミュレーターと物理ロボットの両方に適用され,それぞれ軌道[tex:\tau\xi]と\tau_\text{real}を収集します.最適化目的関数は,以下のシミュレーションと実際の軌道間の誤差を最小化することです.

f:id:tkr1205:20201013132241p:plain

ここで,D(.)は,軌道ベースの不一致を測るものです.「Learning to simulate」の論文同様に,SimOptも微分不可能シミュレーターを通じて,勾配伝播の問題を解決する必要があります.これには,相対エントロピーポリシー検索(relative entropy policy search)と呼ばれる手法を用いました,詳細は論文を参照してください.

f:id:tkr1205:20201013132352p:plain
図4. SimOptフレームワークの概要図. (引用元: Chebotar et al, 2019(https://arxiv.org/abs/1810.05687))

"Randomized-to-Canonical Adaption Networks"を略であるRCAN(James et al. 2019)は,エンドツーエンドな強化学習タスクに対して有効なDomain AdaptionとDomain Randomizationを組み合わせた物です.Image-conditional GAN(cGAN)は,ドメインランダム化された画像をランダム化されていない画像に変換するようにシミュレーターで学習されます.その後,同じモデルを使用して実際の画像を,対応するシミュレートされた画像に変換し,エージェントが学習したものと同じようにします.基本的な仮説は,ドメインランダム化されたシミュレーション画像の分布が実際のサンプルをカバーするのに十分広いということです.

f:id:tkr1205:20201013132904p:plain
図5. RCANは,ドメインランダム化された画像や実画像を対応するシミュレーション画像に変換できる,条件付き画像生成器です(引用元: James et al., 2019(https://arxiv.org/abs/1812.07252))

モデルは,ビジョンベースのロボットアームで把持を行うために,シミュレーターでエンドツーエンドに学習します,ランダム化は,トレイの仕切りやオブジェクトの掴む位置,ランダムなテクスチャ,照明の位置,方向,色などが各タイムステップで適用されます.生成される正規バージョンの見た目は,シミュレーターのデフォルトの見た目です.RCANは生成器を学習しようとするということです.

G ランダム化された画像 → {正規バージョンの画像,セグメンテーション,深度}

ここで,セグメンテーションマスクと背インド画像は補助タスクとして使用されます.RCANは,一様なDomain Randomzationと比較して,ゼロショット転移に優れていましたが.どちらも実画像のみで学習されたモデルよりも性能が低いことが示されています.コンセプト的には,RCANはGraspGANと逆で,Domain Adaptionによって合成画像を実画像に変換します.

シミュレーターでのガイド付きデータ

DeceptionNetとして知られる,ネットワークドリブンなDomain Randomization(Zakharov et al. 2019)は,画像分類タスクでのドメイン間のギャップを埋めるのに役立つランダム化を学習することで動機づけされています.

ランダム化は,エンコーダ-デコーダアーキテクチャを持つDeceptionモジュールを通じて適用されます.Deceptionモジュールは,画像を変換(背景の変更,歪みの追加,照明の変更など)するように特別な設計がされています.他の認識ネットワーク(Recognition Net)は,変換された画像に対して分類を実行することでメインのタスクを処理します.

学習の工程には2段階あります,

  1. 認識ネットワークを固定した状態で,誤差逆伝播中に逆勾配を適用して,予測とラベルの差を最大化します.これにより,Deceptionモジュールが最も混乱するトリックを学習できます.
  2. Deceptionモジュールを固定した状態で,入力画像を変更して認識ネットワークを学習します.

f:id:tkr1205:20201013135025p:plain
図6. どのようにしてDeceptionNetが働くか.(引用元: Zakharov et al., 2019(https://arxiv.org/abs/1904.02750))

Deceptionモジュールを学習するためのフィードバックは,ダウンストリーム分類器から提供されます.しかし,上記のセクションのようにタスクのパフォーマンスを最大化しようとするのではなく,ランダム化モジュールがより難しいケースを作り出すことを目的としています.大きな欠点の一つに,データセットやタスクごとに異なるDeceptionモジュールを手動で設計する必要があるため,簡単にスケーラブルにできない点です.ゼロショットであるという事を考えると,結果はSOTAのDomain AdaptionメソッドによるMNIST, LineMODよりも悪いです.

同様に,Active Domain Randomization(ADR;Mehta et al., 2019)も.より難しいトレーニングサンプルを作成するためにシミュレーションデータに依存しています.ADRは,指定されたランダム化範囲内で最も情報量の多い環境のバリエーションを探索します.ここで,情報量はランダム化された環境インスタンスと参照(元の,非ランダム化な)環境インスタンスにおけるロールアウトの不一致で測ります.少しSimOptに似てる気がしますか?まぁ,SimOptはシミュレーションと実際のロールアウトの不一致を測るのに対し,ADRはランダム化と非ランダム化シミュレーションの不一致を測り.高コストな実データ収集を避けいることに注意してください.

f:id:tkr1205:20201013135221p:plain
図7. どのようにしてActive Domain Randomization(ADR)が働くか(引用元: Mehta et al., 2019(https://arxiv.org/abs/1904.04762))

学習は,以下の流れで行われます

  1. 与えられた方策を参照環境とランダム化された環境の両方で実行し,それぞれ2セットの軌道を収集します.
  2. ロールアウトした軌道が,参照環境でのものか,ランダム化環境のものかどうかを識別するモデル(discriminator)を学習します.予測された\log p(ランダム化される確率)が報酬として使用されます.ランダム化環境のロールアウトと参照環境のロールアウトが異なるほど.予測が容易になり,報酬が高くなります.
    • 直感的には,環境が簡単なら,同じエージェントが参照環境と同様の軌道を生成できます.そして,モデルは様々な行動を奨めることで,困難な環境でも報酬を与え探索します.
  3. 分類器による報酬は,Stein Variational Policy Gradient(SVPG)に伝えられ,多様なランダム化の設定を出力します.

ADRのアイデアは,2つの小さな懸念点があります.確率的な方策を実行する際に,環境変数の難易度を測定するのに軌道間の類似度を使用するのは,あまり良い方法ではないかもしれません.sim2realの結果は,残念ながらそれほどエキサイティングではないように見えますが,論文ではADRがランダム化パラメータの範囲を狭めていることが勝因であると述べられています.

参考

[1] Josh Tobin, et al. “Domain randomization for transferring deep neural networks from simulation to the real world.” IROS, 2017.

[2] Fereshteh Sadeghi and Sergey Levine. “CAD2RL: Real single-image flight without a single real image.” arXiv:1611.04201 (2016).

[3] Xue Bin Peng, et al. “Sim-to-real transfer of robotic control with dynamics randomization.” ICRA, 2018.

[4] Nataniel Ruiz, et al. “Learning to Simulate.” ICLR 2019

[5] OpenAI. “Learning Dexterous In-Hand Manipulation.” arXiv:1808.00177 (2018).

[6] OpenAI Blog. “Learning dexterity” July 30, 2018.

[7] Quan Vuong, et al. “How to pick the domain randomization parameters for sim-to-real transfer of reinforcement learning policies?.” arXiv:1903.11774 (2019).

[8] Ekin D. Cubuk, et al. “AutoAugment: Learning augmentation policies from data.” arXiv:1805.09501 (2018).

[9] Wenhao Yu et al. “Policy Transfer with Strategy Optimization.” ICLR 2019

[10] Yevgen Chebotar et al. “Closing the Sim-to-Real Loop: Adapting Simulation Randomization with Real World Experience.” Arxiv: 1810.05687 (2019).

[11] Stephen James et al. “Sim-to-real via sim-to-sim: Data-efficient robotic grasping via randomized-to-canonical adaptation networks” CVPR 2019.

[12] Bhairav Mehta et al. “Active Domain Randomization” arXiv:1904.04762

[13] Sergey Zakharov,et al. “DeceptionNet: Network-Driven Domain Randomization.” arXiv:1904.02750 (2019).

[14] Amlan Kar, et al. “Meta-Sim: Learning to Generate Synthetic Datasets.” arXiv:1904.11621 (2019).

[15] Aayush Prakash, et al. “Structured Domain Randomization: Bridging the Reality Gap by Context-Aware Synthetic Data.” arXiv:1810.10093 (2018).