一、學習內容
4.基於策略梯度求解RL
4.1隨機策略與策略梯度
先來複習一下之前講的value-based和policy-based的RL方法:
Policy-based的方法可直接輸出動作的概率,比較適用於隨機性策略
具體來說就是在網絡裏面使用常見的softmax函數
爲了方便大家理解,這裏舉個Pong遊戲的例子:
策略是一個episode完了才能評估的,目的是爲了讓總的Reward儘可能大:
策略的狀態轉移軌跡可以用以下流程來表示:
軌跡發生的概率和策略的期望回報的關係如下:
對比一下DQN和PolicyGradient裏面的優化過程:
策略梯度法在優化過程中,會選擇loss最小的那一條軌跡
4.2PolicyGradient(策略梯度)算法
區別於DQN中的TD單步更新,經典的PG裏面用的是蒙特卡洛回合(episode)制更新:
具體到代碼就是從後向前計算所有reward的和。這裏特別提醒下,sarsa中,reward是下一時刻的reward,和後面的sa是下標一樣的。
從算法流程來看,剛纔reward折算的過程就是倒數第二行:
類比監督學習來理解PolicyGradient,上面是MNIST的監督學習網絡,下面是PolicyGradient中監督的過程(可以看到,多乘了一項rewardG_t作爲監督項):
具體Loss的代碼定義如下(注意-R後面少了個左括號):
4.3PG代碼
PolicyGradient的REINFORCE算法整體流程如下:
可見PARL框架也是早就設計好了:)
代碼文件結構如下:
CartPole例子的PG算法訓練結果:
model代碼:
algorithm代碼
agent代碼
訓練代碼
運行展示
4.4總結、作業、公式推導
策略梯度(PG)方法的一個總結:
PolicyGradient解決Pong問題的一個示例:
圖像預處理的技巧:
reward的衰減和正則化:
PolicyGradient算法的原理推導(這裏講的非常好,很多書和材料都沒有推導)。
注意2點:
1.藍框裏的是一個近似變換,使用了log函數
2.使用log函數後,狀態轉移概率p因爲都沒有對theta求導,因此可以刪掉
注意最下方公式最右邊有點小錯誤,很好理解,按馬爾科夫鏈,應該是s2,a2,李科澆老師是直接複製過來忘改了。這裏改正爲: