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

核心想法:先學模型,再做規劃

為什麼一個會替世界建立模型的智能體,能用少得多的經驗就學會做事。

免模型學習浪費掉了什麼

大多數入門的強化學習(reinforcement learning)都是免模型(model-free)的:智能體從不試著理解世界如何運作,只是靠原始的試誤學習(trial and error)慢慢記住哪些動作通常有回報。這行得通,但很「耗食」——一個免模型智能體可能需要數百萬次互動,才能掌握人類幾分鐘就懂的任務。原因在於,每一課都必須透過實際經歷的獎勵(reward)傳遞,一次只能走一步昂貴的路。

网格世界中的 Q 学习:一个无模型智能体,只是记住哪些动作有回报,从不为世界建立模型。

一个交互式网格世界,Q 学习智能体在探索时更新动作价值。

基於模型的強化學習(model-based RL)問的是另一個問題:如果智能體先學會預測世界接下來會怎樣,再用這個預測去推敲好的行為,而不必在真實世界裡為每個錯誤付出代價,會怎麼樣?這正是棋手在心裡盤算三步棋、而不是真的動一顆棋子看會發生什麼時,用的同一個技巧。

「模型」到底是什麼?

習得動態模型(learned dynamics model)只是智能體從自身經驗訓練出的一個函數,它回答:給定這個狀態與這個動作,下一個狀態是什麼,我會得到多少獎勵?嚴格地說,它逼近環境的轉移動態(transition dynamics)獎勵函數(reward function)——在馬可夫決策過程(Markov decision process)中,這兩塊就完整描述了世界如何回應。

\hat{s}_{t+1},\ \hat{r}_{t+1} = f_\theta(s_t, a_t)

学习到的动力学模型:函数 f_θ 根据当前状态和动作预测下一个状态与奖励。

兩大紅利:資料效率與規劃

一旦有了模型,你就能免費取得便宜的經驗。你不必在真實世界中行動,而可以做模型展開(model rollouts)——由模型扮演環境角色的想像軌跡。策略每走一步真實步驟,就能在成千上萬步想像步驟上訓練,這正是基於模型的樣本效率(sample efficiency)的核心。當真實互動很慢、危險或昂貴時(機械手臂、電網、病患),從每個真實樣本中榨出更多學習,就是整場遊戲的關鍵。

一次模型展开像走马尔可夫链一样把学到的模型一步步向前推进,生成想象的轨迹,让智能体无需真实行动即可获得廉价的练习。

由转移箭头相连的状态,一步步向前推进成一条想象的展开轨迹。

第二個紅利是規劃(planning):有了模型,你可以向前搜尋各種可能的未來,在真正出手之前選出看起來最好的動作。這也是為什麼基於模型的想法支撐了這個領域最亮眼的一些成果,從棋類冠軍到高資料效率的機器人。

基於模型的循環,一步一步看

  1. 收集:在環境中行動,取得一些真實經驗。
  2. 擬合模型:用這些經驗訓練習得動態模型,去預測下一狀態與獎勵。
  3. 規劃或想像:用模型產生展開,在不碰真實世界的情況下改進策略或價值估計。
  4. 行動:用改進後的策略行動、收集新資料,然後重複——每一圈都讓模型與行為同時變得更好。
基于模型的循环所依托的智能体—环境回路:收集真实经验,然后拟合、规划并行动。

一张智能体执行动作并从环境接收状态和奖励的示意图。

用虛擬碼先嚐一口

# one outer iteration of a model-based loop
data += collect_real_steps(env, policy, n=1000)   # a little real experience
model.fit(data)                                    # learn next-state + reward

for _ in range(many):                              # cheap imagined practice
    s = sample_start_state(data)
    for t in range(H):                             # a short model rollout
        a = policy(s)
        s_next, r = model.predict(s, a)            # the model IS the env here
        policy.update(s, a, r, s_next)
        s = s_next
模型代替了環境,因此策略能練習的次數遠遠超過真實互動所允許的。