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)策略,在實體機械手第一次開機時就能運作。