JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

模擬到真實的難題:跨越現實鴻溝

在模擬中訓練既便宜又安全,但部署到真實世界時策略往往崩潰。認識現實鴻溝,以及縮小它的工具箱——領域隨機化、系統辨識、領域適應。

我們究竟為何要在模擬中訓練

強化學習是個大胃王:一個策略在變得堪用之前,可能需要數百萬次嘗試。在真實機器人上,每次嘗試都要花掉實際時間、磨損硬體,還可能弄壞東西——甚至傷人。於是我們在模擬器中訓練,那裡的嘗試快速、可平行、免費又安全,再把學到的策略搬到真實裝置上。這就是模擬到真實轉移(sim-to-real)

模擬還讓我們做到真實世界裡不可能的事:瞬間重置到任意狀態、讓上千個機器人平行運行、讀取完美的真值狀態來塑形獎勵。問題在於——模擬器永遠不是真實世界。

現實鴻溝

每個模擬器都在細微處出錯:摩擦力略有偏差、馬達延遲幾毫秒、相機看到的顏色略有不同、接觸物理只是近似。一個學會利用這些特定怪癖的策略,在模擬中可能表現精湛,到了硬體上卻毫無用處。這種落差就是現實鴻溝(reality gap),也是應用型機器人強化學習裡的頭號反派。

因为强化学习会做优化,它会主动寻找回报最高的行为——这里 Q-learning 智能体在网格世界中搜索最优策略,正是这种动力让它去钻仿真器的空子。

可交互的 Q-learning 网格世界,智能体学习动作价值以抵达目标。

領域隨機化:讓真實只是又一個樣本

最具影響力的解法把問題翻轉過來。與其打造一個完美的模擬器,不如打造一整族不完美的模擬器,並在每個回合隨機改變它們——重力、摩擦力、質量、感測雜訊、光照、延遲。這就是領域隨機化(domain randomization)。如果策略必須在廣泛的物理分布上都成功,那麼真實世界看起來就只是那個分布裡的又一次抽樣,於是策略得以轉移。

\max_{\theta}\; \mathbb{E}_{\xi \sim p(\xi)}\!\left[\, J(\pi_\theta;\, \xi) \,\right]

把域随机化写成目标:在整个随机化物理参数 ξ 的分布上最大化期望回报,于是真实设备只是其中又一个样本。

for episode in training:
    # randomise the simulator before each rollout
    sim.gravity  = uniform(9.4, 10.2)
    sim.friction = uniform(0.7, 1.3)
    sim.mass     = base_mass * uniform(0.8, 1.2)
    sim.latency  = uniform(0, 40)   # milliseconds
    rollout(policy, sim)            # learn to be robust to ALL of these
領域隨機化:在一整個物理分布上訓練,讓真實裝置只是策略早已能應付的又一個樣本。

隨機化太少,你會過擬合到模擬器;太多,任務會難到策略什麼都學不會。實務上常讓隨機化範圍隨訓練逐步擴大——一套自動課程,從簡單開始,隨著代理人應付得來而逐漸放寬。

随机化范围就像一个拟合旋钮:太小会过拟合到仿真器,太大又会让任务难到策略什么都学不会——目标是中间那个恰到好处的拟合。

三条曲线,分别展示欠拟合、恰当拟合和过拟合。

從另一側縮小鴻溝

領域隨機化讓策略更強健;另外兩個互補的工具則讓模擬器更誠實。系統辨識(system identification)量測真實裝置——它真正的質量、摩擦力、延遲——並據以校準模擬器,在訓練前就縮小鴻溝。領域適應(domain adaptation)則對齊代理人所感知到的東西:它把真實的感測讀數(或真實相機影像)映射回策略在模擬中見過的分布,讓同一個策略賓至如歸。

  1. 辨識:量測真實系統並校準模擬器,使其基準狀態盡量接近。
  2. 隨機化:把剩下的未知量散佈成一個分布,讓策略對你量不到的部分仍然強健。
  3. 適應:透過把真實觀測映射進模擬分布,彌合任何殘餘的感知落差。
  4. 盡早且頻繁地在硬體上測試:真實裝置才是最終唯一算數的基準。

這些技術合在一起,把模擬到真實從一種期盼變成一套方法——例如,讓完全在模擬中訓練的靈巧機器人操作(robotic manipulation)策略,在實體機械手第一次開機時就能運作。