Sim-to-Real転移
シミュレータで鍛えた方策が実機で崩れる原因を「リアリティギャップ」として分解し、ドメインランダム化とシステム同定という2つの原理的対策の使い分けが分かります。
- 1.実機で方策が破綻する原因は力学モデル誤差・センサ/アクチュエータ遅延・観測ノイズの3系統に分解できる(リアリティギャップ)。
- 2.ドメインランダム化はシミュレータのパラメータを意図的にばらつかせ、実機を『訓練分布内の一点』に押し込むことで頑健な方策を学習する。
- 3.システム同定は逆に実機データからシミュレータを実物へ精密化するアプローチで、両者は競合ではなく組み合わせて使う設計変数。
シミュレータで学習した方策はなぜ実機で崩れるのか
強化学習や模倣学習でロボットの制御方策を訓練する際、実機で何百万ステップも試行錯誤させるのは時間・コスト・安全性の面で現実的ではありません。そこで物理シミュレータ上で方策を学習し、学習済みの重みをそのまま実機のコントローラへ移植する、という手順が広く使われます。これがSim-to-Real転移です。
ところが、シミュレータ内では成功率がほぼ100%に達していた方策を実機に載せた途端、歩行ロボットが数歩で転倒する、マニピュレータが目標物体を掴み損ねる、といった性能劣化が頻発します。この劣化の根本原因を指して**リアリティギャップ(reality gap)**と呼びます。リアリティギャップは単一の現象ではなく、力学モデルの誤差・アクチュエータとセンサの非理想性・観測の不確かさという、性質の異なる複数の誤差源が重なったものです。原理を理解せずに「とりあえずランダム化する」だけでは対策が空振りに終わるため、まず誤差源を分解して捉える必要があります。
リアリティギャップを構成する3つの誤差源
| 誤差源 | 具体例 | 方策への影響 |
|---|---|---|
| 力学モデル誤差 | 質量・慣性テンソル・摩擦係数・接触の反発係数が実機と不一致 | 方策が学習した状態遷移と実際の遷移がずれ、想定外の状態へ逸脱 |
| アクチュエータの非理想性 | モータのトルク遅れ、ギアのバックラッシ、電流リミット、通信遅延 | 計算した入力どおりに関節が動かず、フィードバックループの位相が狂う |
| 観測ノイズ・センサ特性 | カメラの露光・歪み、IMUのバイアスドリフト、エンコーダの量子化誤差 | 方策が学習時に見ていない分布の観測を受け取り、行動選択を誤る |
力学モデル誤差はさらに、パラメータ誤差(質量や摩擦係数の推定値のずれ)と構造誤差(接触モデルや空気抵抗など、シミュレータがそもそもモデル化していない現象)に分けられます。パラメータ誤差は後述のシステム同定で縮小できますが、構造誤差はシミュレータの物理エンジン自体の限界であり、パラメータをどれだけ追い込んでも解消しません。特に接触・摩擦のモデリングはロボット工学のsim-to-realで最も厄介な要因です。剛体接触は数値的に不連続(衝突の瞬間に速度が跳ぶ)であり、シミュレータごとに異なる正則化やソルバの近似を使うため、同じCADモデルでも物理エンジンを変えるだけで方策の転移性が大きく変わることが知られています。
学習理論の言葉で言えば、方策はシミュレータ上の状態遷移分布 p_sim(s'|s,a) の下で最適化されますが、実機は分布 p_real(s'|s,a) に従います。Sim-to-Realが失敗するのは、方策が p_sim に過学習し、p_real との差(分布シフト)に対して汎化しないためです。ドメインランダム化とシステム同定は、この2つの分布の差を縮める・あるいは差があっても崩れない方策を作る、という同じ問題への異なるアプローチです。
ドメインランダム化: シミュレータ側をばらつかせる
**ドメインランダム化(domain randomization)**は、力学パラメータ・視覚的外観・センサノイズなどをシミュレータ内で試行ごとにランダムに変化させながら方策を訓練する手法です。摩擦係数を毎エピソード 0.4〜1.2 の範囲でランダムに引き直す、リンク質量を公称値の 80%〜120% でばらつかせる、観測に正規分布ノイズを加える、といった操作を訓練全体で繰り返します。
狙いは、実機の未知の物理パラメータを言い当てることではなく、実機がランダム化した訓練分布の内側に収まるように分布を広げることです。方策がランダム化された多様な力学条件すべてで機能するよう最適化されれば、その方策は特定の1点のパラメータに過剰適合せず、実機という「見たことのない1点」に対しても汎化しやすくなります。この意味でドメインランダム化は、教師あり学習におけるデータ拡張の強化学習版と理解できます。
ドメインランダム化の設計変数(例):
力学パラメータ : 質量・慣性・摩擦係数・関節減衰・接触反発係数
アクチュエータ : トルク遅れの時定数、電流リミット、ギア効率
観測 : センサノイズの分散、遅延(レイテンシ)、量子化
視覚(画像入力時): テクスチャ・照明・カメラ位置・背景(ドメインランダム化の視覚版)
ランダム化の範囲を広げるほど方策は頑健になりますが、同時に問題の分散が増えて最適解が「平均的にそこそこ良い」保守的な方策に近づき、実機固有の性能上限(達成可能な最速・最高精度)を犠牲にします。逆にランダム化幅が狭すぎると実機のパラメータが訓練分布からはみ出し、リアリティギャップが埋まりません。さらに、シミュレータがそもそもモデル化していない構造誤差(例えば想定していない接触モード)はどれだけパラメータをランダム化しても再現できないため、ドメインランダム化は「パラメータ誤差」には有効でも「構造誤差」には無力である点に注意が必要です。
システム同定: シミュレータを実機に寄せる
ドメインランダム化が「シミュレータを広げて実機を内包する」方向のアプローチだとすれば、**システム同定(system identification)**はその逆で、「実機を計測してシミュレータのパラメータを実物に近づける」方向のアプローチです。実機に既知の入力(トルク指令や既知軌道)を与えて応答(関節角度・角速度・接触力など)を計測し、その計測データとシミュレータの出力の誤差を最小化するようにシミュレータのパラメータ(質量・慣性・摩擦係数・アクチュエータの伝達関数など)を最適化します。
システム同定の基本ループ:
1. 実機に既知の入力信号を与える → 例: 正弦波状のトルク指令
2. 実機の応答を計測 → 関節角度・角速度・力/トルク
3. 同じ入力をシミュレータに与える → シミュレータ応答を得る
4. 実機とシミュレータの応答誤差を計算 → 目的関数(例: 二乗誤差)
5. 誤差を最小化するようパラメータ更新 → 勾配法・ベイズ最適化等
6. 収束するまで1-5を繰り返す
システム同定によってシミュレータの忠実度(フィデリティ)が上がれば、そのシミュレータ上で学習した方策は最初からリアリティギャップが小さい状態でスタートできます。近年は、ランダム化幅そのものをシステム同定の対象にする手法(実機ロールアウトの結果を使ってランダム化パラメータの事後分布を更新する)も使われており、これはドメインランダム化とシステム同定を融合したアプローチと言えます。すなわち両者は競合する二択ではなく、「どれだけ実機データを使えるか」「安全に実機で試行できる回数」に応じて配合を変える設計変数です。実機データが豊富に取れるなら同定を重視して忠実度を上げ、実機試行が高コスト・危険なら同定は最小限にとどめてランダム化で頑健性を確保する、という使い分けになります。
| 観点 | ドメインランダム化 | システム同定 |
|---|---|---|
| 方向性 | シミュレータを広げて実機を内包 | シミュレータを実機へ精密化 |
| 必要な実機データ | 基本的に不要(訓練前に無くても始められる) | 実機の計測データが必須 |
| 得られる方策の性質 | 多様な条件に頑健だが保守的になりやすい | 同定した条件下では高精度だが未知条件に弱い |
| 構造誤差への耐性 | 対応できない(パラメータ空間の外は扱えない) | 同定対象に含めれば軽減できる場合がある |
| 実務での位置づけ | 頑健性重視・実機試行が高コストな場面 | 忠実度重視・実機データが取得しやすい場面 |
転移を妨げるその他の要因
パラメータの不一致以外にも、転移を難しくする要因があります。第一に観測と行動の遅延です。シミュレータでは状態取得から行動出力までが理想的に瞬時ですが、実機ではセンサ読み取り・通信・演算・アクチュエータ応答の各段階で遅延が積み重なり、方策が学習した「即座のフィードバック」という前提が崩れます。第二にアクチュエータの飽和と非線形性で、シミュレータの単純なトルクリミットは実機のモータ特性(電流・熱・電圧降下による実効トルクの低下)を粗くしか近似できません。第三に初期状態分布の違いで、シミュレータは学習を効率化するために都合の良い初期状態(すでにバランスが取れた姿勢など)から開始しがちですが、実機の起動状態はより多様で、方策が経験していない領域に最初から置かれることがあります。
- リアリティギャップ: シミュレータの遷移分布
p_simと実機の遷移分布p_realの差。力学モデル誤差・アクチュエータ非理想性・観測ノイズの3系統に分解して捉える。 - ドメインランダム化: パラメータ誤差に有効、構造誤差には無力。ランダム化幅は頑健性と性能上限のトレードオフ。
- システム同定: 実機応答とシミュレータ応答の誤差を最小化してパラメータを推定する逆問題。実機データが前提。
- 両者の関係: 競合ではなく併用可能な設計変数。実機試行コストと入手可能なデータ量で配合を決める。
- 遅延・飽和・初期状態分布もリアリティギャップの主要因であり、パラメータ調整だけでは解決しない。
まとめ
Sim-to-Real転移の核心は、シミュレータと実機の間の分布の差(リアリティギャップ)を、力学モデル誤差・アクチュエータ非理想性・観測ノイズという性質の異なる誤差源に分解して扱うことにあります。ドメインランダム化はシミュレータ側のパラメータを意図的に広くばらつかせて実機を訓練分布に内包させる頑健化のアプローチ、システム同定は逆に実機の計測データを使ってシミュレータを実物へ精密化する忠実度向上のアプローチであり、両者はどちらか一方を選ぶものではなく、実機試行のコストと入手可能なデータ量に応じて組み合わせる設計変数です。加えて、接触モデリングのような構造誤差や、観測・行動の遅延、アクチュエータの飽和特性、初期状態分布の違いは、パラメータの追い込みだけでは解消しない転移阻害要因であり、これらを個別に見極めることが実機で機能する方策を設計する上での実務的な勘所になります。
ロボティクス Article
Sim-to-Real転移を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
Sim-to-Real
比較で見る軸
難易度: advanced / カテゴリ: ロボティクス / タグ数: 5
導入後に効く点
ドメインランダム化はシミュレータのパラメータを意図的にばらつかせ、実機を『訓練分布内の一点』に押し込むことで頑健な方策を学習する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ロボティクス
- タグ数
- 5
判断チェックリスト
- 自社の用途が「Sim-to-Real / 強化学習」に近いか確認する。
- 強みである「実機で方策が破綻する原因は力学モデル誤差・センサ/アクチュエータ遅延・観測ノイズの3系統に分解できる(リアリティギャップ)。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。