Sim-to-Real 落差為什麼這麼難消除:域隨機化與系統辨識兩條解法路線

2026-09-04

模擬訓練得再好,真實世界還是不太一樣

強化學習在虛擬模擬環境裡訓練機器人策略,能以幾乎零成本的速度做海量的平行試錯,這是本站在模仿學習 vs 強化學習一文中討論過的強化學習相對模仿學習的核心優勢。但這個優勢有一個長期存在的但書——在模擬環境訓練出的策略,直接部署到真實機器人上,表現經常明顯下降,這個現象稱為 sim-to-real gap(模擬到真實的落差),是機器人強化學習領域至今仍在持續研究緩解方法的核心難題之一。

落差從哪裡來:不是視覺擬真度,是物理參數的細微差異

多數人直覺會以為 sim-to-real 落差主要來自模擬畫面看起來不夠真實,但實際上更關鍵的落差來自物理引擎底層的參數設定——接觸力學模型裡的摩擦係數、材質彈性係數、關節齒隙與傳動間隙、感測器雜訊的統計特性、致動器從接收指令到實際產生力矩之間的真實延遲,這些參數即使在最擬真的模擬平台(如本站在 Isaac Sim vs Gazebo vs MuJoCo 比較文章中介紹的三套主流平台)裡,也很難做到跟每一台特定實體機器人完全一致。強化學習策略在訓練過程中,容易間接學習並依賴這些細微參數的特定數值,一旦部署環境的實際參數跟訓練時設定的模擬參數有落差,策略的表現就可能明顯偏離訓練時的預期。

域隨機化:用誇大的變異範圍換取穩健性

域隨機化(Domain Randomization)的核心邏輯反直覺卻有效——與其追求讓模擬參數盡可能精確貼近真實世界(這個目標本身難以完全達成),不如訓練時故意對這些參數做大範圍隨機擾動,讓策略在訓練過程中被迫面對遠比真實世界實際變化範圍更廣的參數分布。如果策略能在這個刻意誇大的變異範圍內都維持穩定表現,那麼落在這個範圍之內的真實世界實際參數,自然也在策略已經學會穩健應對的能力範圍內。這種做法本質上是用訓練階段見過的參數多樣性,換取部署階段對未知精確參數值的容忍度,而不是徒勞地試圖讓模擬環境變得完美精確。

系統辨識:反過來讓模擬貼近這一台特定機器人

系統辨識(System Identification)走的是相反的路線——不是讓模擬變得更隨機多樣,而是先在真實機器人上做一系列受控實驗(例如量測特定負載下的實際反應延遲、量測特定表面的實際摩擦係數),把量測出的真實物理參數回頭校正到模擬環境的設定裡,讓模擬盡可能精確貼近這一台特定機器人的真實物理特性。這種方法的優勢是校正後的模擬環境更貼近真實,訓練效率通常優於範圍設定過廣的域隨機化;限制是每一台機器人(甚至同一台機器人隨著長期使用磨損)的實際物理參數可能都有微妙差異,系統辨識得到的校正結果不一定能完全泛化到所有部署場景。

務實的做法:兩者結合,而非二選一

多數實務團隊不會把域隨機化跟系統辨識視為互斥選項,而是結合使用——先用系統辨識把模擬參數校正到接近真實的中心值,再用域隨機化在這個校正過的中心值周圍做適度(而非誇張)範圍的隨機擾動,兼顧訓練效率與對殘餘未知誤差的穩健度。即使如此,sim-to-real 落差也很難被完全消除,這也是為什麼多數團隊在模擬訓練完成後,仍然會保留一個真實世界的微調(fine-tuning)階段,用少量真實資料做最後一哩路的校正,而不是完全信任純模擬訓練出的策略能無縫遷移到真實硬體上。

常見問題

faq_01.log
既然模擬環境已經做得很擬真,為什麼 sim-to-real 落差還是機器人強化學習裡持續存在的難題?
問題不在於模擬環境「像不像」,而在於機器人策略(尤其是強化學習訓練出的策略)對訓練環境裡的細微統計特性極度敏感——即使物理引擎的視覺擬真度已經很高,接觸力學模型的參數(摩擦係數、彈性係數、關節齒隙)、感測器雜訊的統計分布、致動器的真實回應延遲,這些不容易被人眼直接察覺的細節差異,都可能被策略在訓練過程中間接學習並依賴,一旦部署到真實世界、這些細微參數跟模擬環境不完全一致,策略的表現就可能明顯下降,這也是為什麼即使是本站在 Isaac Sim vs Gazebo vs MuJoCo 一文中介紹過、業界公認擬真度很高的模擬平台,訓練出的策略仍然普遍需要額外的遷移技巧才能可靠部署到真實硬體上。
faq_02.log
域隨機化聽起來像是刻意讓訓練環境「變得不準確」,這樣真的有幫助嗎?
有幫助,而且這正是域隨機化反直覺卻有效的核心邏輯——與其花費大量工程資源試圖讓模擬環境的每一個物理參數都盡可能貼近真實世界(這個目標本身難以完全達成),不如反過來在訓練時故意對這些參數(摩擦係數、質量分布、感測器雜訊)做大範圍隨機擾動,讓策略在訓練過程中被迫面對比真實世界更廣泛的參數變化範圍。如果一個策略能在這種刻意誇大的參數變異範圍內都維持穩定表現,那麼真實世界的實際參數(介於這個誇大範圍之內)自然也在策略已經學會穩健應對的範圍內,這是用「訓練時見過更多樣的變異」換取「部署時對特定真實參數的容忍度」,而不是追求模擬環境本身的精確度。
faq_03.log
系統辨識(system identification)跟域隨機化是互斥的兩種方法,還是可以一起用?
可以一起用,而且兩者解決的是同一個問題的不同層面。系統辨識是反過來的思路——先在真實機器人上做一系列受控實驗,量測出真實系統的物理參數(實際摩擦係數、真實致動器延遲特性),再把這些量測結果回頭校正模擬環境的參數設定,讓模擬盡可能貼近這一台特定機器人的真實物理特性;域隨機化則是承認模擬與真實之間終究會有殘餘的落差,用大範圍隨機化訓練換取策略對這個殘餘落差的穩健度。實務上常見的做法是兩者結合——先用系統辨識把模擬參數校正到大致準確的中心值附近,再用域隨機化在這個校正過的中心值周圍做適度隨機擾動,這樣既避免了域隨機化範圍設定過度誇張導致訓練效率低落,又保留了域隨機化對殘餘未知誤差的容錯能力。

相關術語

訂閱 RoboTech Lab 電子報

每週一封,整理新的教學、論文導讀與機器人業界動態。隨時可以取消訂閱。