--- tags: RL, DRL --- # DDPG筆記(Deep Deterministic Policy Gradient) 適用於:連續動作 Acotr-Critic : policy gradient單部更新 結合DQN Deep 使用兩套結構相同、但更新頻率不同的神經網路 現實網路、估計網路 Deterministic 連續動作上 只輸出一個動作值 相反的policy gradien則是以動作分佈來選動作 Policy Gradient 動作估計網路: 輸出實時動作供actor在現實中實行 動作現實網路: 更新價值網路系統 Valued-Based (價值網路系統) 狀態現實網路: 輸出狀態的價值,輸入 動作現實網路 輸出的動作 + 狀態觀測值 狀態估計網路: 輸出狀態的價值,輸入 actor實行過的動作 ![](https://hackmd.io/_uploads/SyiOpu-pn.png) 參考 https://youtu.be/3e6pfzux1x0 Actor更新: ![](https://hackmd.io/_uploads/rkphxKba3.png) (實時更新)eval_net (延遲更新)target_net 兩者結構相同 只差在更新頻率 基於policy graient 對eval_net更新時 輸入狀態(當前) 輸出動作 接著 critic會針對上述動作(在狀態下)評分 以 a_grad 動作梯度 輸出 動作梯度 * Actor參數的梯度 = Actor更新的方向 Critic更新: ![](https://hackmd.io/_uploads/SJitAdZp3.png) 使用TD-error來更新 TD-error(反傳遞的差)就是target-Q 減去 evaluation-Q 也有 eval_net 和 target_net (兩者結構相同) target_net輸出target-Q (輸入下一個狀態 和 Actor提供的動作) Actor提供的動作: 來自actor的target_net基於下一個狀態輸出的動作 target_net輸出evaluation-Q (透過現在的動作、現在的狀態計算 與actor無關) 有了TD-error後 就用來更新(反傳遞)Critic的參數 參考 https://youtu.be/TQE4OLSz2BE critic.learn 輸入TD-error (包含R、A、S、S') actor .learn 輸入Policy Gradient (包含A、S)