1. 強化學習的基本組件
- Actor : 負責操縱行為 (我們可以控制調整)
- Env : 環境,Actor 行為會與之互動 (我們無法控制調整)
- Reward : Actor 在 Env 中做出特定行為時的獎勵 (我們無法控制調整)
2. Policy of Actor
- Actor 中具有 Policy,負責決定 Actor 在特定條件下的行為
- 若我們使用 NN 來實現 policy ,則:
- NN 參數 :
- NN 輸入 : actor 的觀察
- NN 輸出 : 根據輸入,得到所有可執行行為的機率分布
- 最後Actor 所採取的行為是根據 policy 輸出的機率分布取樣得到 (而不是直接取機率最大的,這樣才會有隨機性)
3. 以遊戲為例
- Episode:
- 遊戲開始
- Actor 從環境得到觀察 ,做出行為 ,得到獎勵 ,並不斷重複此循環
- 遊戲結束
- 每個 episode 可以計算總獎勵,actor 的目標就是要最大化這個總獎勵
4. Actor, Env, Reward 之間的關係
- 把 episode 過程中的 s, a 記錄下來,會得到一組 trajectory
- 每個參數為 θ 的 policy,都可能產生多種 trajectory (因為 policy 書出去有隨機性,環境也有隨機性)
- 在給定 policy 參數 θ 下,可以計算出每一種 trajectory 發生的機率:
- : actor 在遊戲一開始觀察到的環境狀態 (此項由環境所控制)
- : actor 觀察到 時,採取行為 的機率 (此項由 policy 所控制)
- : 當 actor 在觀察到 並採取行為 時,下個觀察得到 的機率 (此項由環境所控制)
- 我們在更新 policy 時,所需要知道的是 policy 在參數 θ 下,總獎勵的期望值 :
5. Policy Gradient
-
透過一連推導,可以得到 對 θ 的梯度
-
中間將期望值的計算,透過抽樣來近似 (因為在複雜情況下,我們不可能真的把所有 trajectory 都找出來)
-
從最後一個式子可以得知,若一個 trajectory 的獎勵為正,則梯度會傾向提升該 trajectory 過程中所有特定決策的機率
-
實際實作的方式是,使用參數 θ 的 policy 玩 N 次遊戲,透過這 N 次的結果來計算 對 θ 的梯度近似值
6. RFL vs. 分類問題
- 這兩個任務其實本質上很類似
- 在分類問題中,模型根據輸入 ,計算出分類正確答案的機率,並透過梯度更新去最大化正確答案的機率
- 在強化學習中,因為不知道輸入 的正確答案 ,所以透過乘上獎勵作為正確答案的參考
7. 實作上會用到的 Tips
A. Add a baseline
- 透過前面提到的梯度會發現,我們在極大化獎勵期望值的時候,會根據獎勵大小鼓勵 actor 輸出合適的機率分布
- 如果獎勵全部都是正的,則被所有我們採樣到的情況,其機率分布會同時增加 (但有的增加的多,有的增加的少)
- 這樣會產生一個問題是,我們計算的獎勵期望值其實是近似 (因為沒有辦法窮舉所有情況),所以對於沒有被我們採樣到的情況,其機率會被抑制 (因為別人都增加,但他不增加)
B. Assign suitable credit
- 前面透過獎勵來更新參數時,考慮的是整個 trajectory 最後得到的總獎勵,忽略了 trajectory 中每個行為 所產生的獎勵
- 但其實就算一個 trajectory 最終獎勵是高的,也不代表 trajectory 中的每個行為都是好的
- 而且在一個路徑中,時間點 t 後面的行為,理論上與時間點 t 前面獲得的獎勵
- 一般而言,行為的發生對未來獎勵產生的影響,是會隨著時間差距變大而影響變小的
- 這時候可以在計算 時,把每一項的路徑總獎勵 ,換成是每一項所影響而產生的獎勵,並乘上一個與時間相關的衰退項
- 投影片中,橘紅色的框框是 Advantage Function , 除了可以用上面提到的方法實現之外,也可以透過一個模型 (critic) 來實現。
參考:
- 李弘毅老師的強化學習開放課程 : DRL Lecture 1: Policy Gradient (Review)