機器人學習

基於模型與無模型強化學習

當機器人透過反覆試錯來學習如何行動時,大致有兩種風格,區別在於它是否在腦中建立起一幅「世界會如何回應我動作」的圖景。無模型的機器人完全跳過這幅圖景:它只管嘗試各種動作,看看結果是好是壞,再一點點把自己的習慣往「能換來更多獎勵」的方向挪——就像一個孩子學騎腳踏車,純靠搖晃、摔倒、再調整,從不去想其中的物理原理。基於模型的機器人則先學出一個小小的內部模擬器——一個能預測「如果我這樣做、那樣做會發生什麼」的模型——然後用這個模型預先規劃、挑出好的動作,就像棋手在落子之前先在腦中推演好幾步。

兩種風格都在權衡同樣的兩件事:它需要多少真實世界裡的練習,以及它在行動時要做多少計算。無模型學習簡單而穩健,但對經驗的胃口可能大得嚇人——機器人也許要嘗試上百萬次,這在飛快的模擬器裡沒問題,可放到會磨損、會損壞的真實硬體上,就既痛苦又緩慢。基於模型的學習通常要省樣本得多,因為每一點經驗同時也在餵養那個內部模型,而這個模型隨後可以被幾乎免費地反覆重放、反覆規劃許多遍;它的弱點是:只要學到的模型有哪怕一點點偏差,機器人就可能自信滿滿地規劃出一套漂亮動作,結果在現實中失敗。

實際中,機器人學並不在兩者間二選一,而是把它們糅合起來。一種常見做法是:先用有限的真實資料學出一個粗略的世界模型,用它來做規劃或預訓練一個策略,然後再用少量無模型的試錯來打磨這個策略,讓它不再依賴模型犯的錯。弄清一套系統更偏向哪種風格,能幫你看懂它為什麼會有那樣的表現:無模型系統突然失敗,往往只是因為它從沒見過那個情境;而基於模型的系統失敗,則多半是被它想像出來的世界裡的某個缺陷給誤導了。

要教一隻機械臂翻煎餅:無模型的做法就是不停地翻,把漂亮的落盤獎勵出來,直到這套動作定型;基於模型的做法則先學會煎餅大致會怎麼飛,再規劃出那個應該讓它正好落盤的手腕一抖。

同一個目標,兩條路徑:要麼盲目地反覆練,要麼先學會世界如何反應、再去規劃。

這兩個標籤描述的是一套學習系統「如何搭建」,而不是它「是否成功」;許多強大的機器人系統都是混合式的——既學一個模型,又仍然依靠大量直接的試錯。

又稱
model-based RLmodel-free RL基于模型的强化学习无模型的强化学习