【强化学习】Policy Gradient原理
1.Policy Gradient和DQN系列強化算法最大的區別在于:
DQN系列基于Value,也就是說執行完所有的動作并保存所得到的價值,根據這些價值計算出最優價值函數,并以此選擇動作,最終獲得一個特定的策略。
Policy Gradient基于策略來選擇動作,Value Based方法中將動作價值函數進行近似,引入了一個動作價值函數q^,狀態s和動作a為輸入,價值函數輸出,得到近似的動作價值。
PG中采用類似的思路,將策略表示成一個連續的函數之后,使用連續函數的優化方法尋找最優策略。
2.Policy Gradient要想得到最優策略需要經過這么幾個步驟:
1.得有一個連續的函數,有了連續的函數才能使用連續 函數的優化方法尋找最優策略。我們類比DQN中的方法,將策略Π表示為一個連續的函數(這里只是把她表示出來,具體是需要詳細的設計的):
2.找到一個可以優化的函數目標。最簡單的優化目標是初始狀態收獲的期望
但有的問題沒有明確的初始狀態,這時可以將優化目標定義為平均價值
或者每一步的平均獎勵
得到這個目標函數之后,我們要對他求一個梯度,為啥要求梯度呢,特意去翻了翻高數知識,梯度是指方向導數的最大值,梯度向量的方向即為函數值增長最快的方向,所以。有了梯度之后我們就可以隨時找到函數值變化最大的方向,就可以實時的更新策略函數的參數從而找到最優策略了。
其中,我們把
這塊稱為分值函數
這大概就是PG的大概思路,所以我們接下來只要設計一個合適的策略函數,前面的就通了。
關于設計合適的策略函數,最常用的策略函數就是softmax策略函數了,它主要應用于離散空間,使用描述狀態和行為的特征 ?(s,a)和參數
θ的線性組合來權衡一個行為發生的幾率
策略函數表示出來了!接下來就按照前面的流程,求導得對應的分值函數:
好了我們現在想要的東西都得到了,接下來我們設計策略梯度算法,給它把數學符號和公式想辦法變成代碼就完工了!
下面這個就是一種最簡單的策略梯度算法:
3.Softmax是什么?
https://blog.csdn.net/bitcarmanlee/article/details/82320853?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161853644116780366579767%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161853644116780366579767&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-82320853.pc_search_result_no_baidu_js&utm_term=softmax
如果將max看成一個分類問題,就是非黑即白(兩個變量a,b,如果a>b,則max為a,fan’zhi),最后的輸出是一個確定的變量。更多的時候,我們希望輸出的是取到某個分類的概率,或者說,我們希望分值大的那一項被經常取到,而分值較小的那一項也有一定的概率偶爾被取到,所以我們就應用到了soft的概念,即最后的輸出是每個分類被取到的概率。
4.交叉熵損失函數
https://blog.csdn.net/bitcarmanlee/article/details/105619286
圖片參考:
劉建平Pinard
https://www.cnblogs.com/pinard/p/10137696.html
下一篇是我的PG代碼注釋版本
總結
以上是生活随笔為你收集整理的【强化学习】Policy Gradient原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑上如何设置路由器电脑如何配置路由器
- 下一篇: 【强化学习】Policy Gradien