DQN 笔记 State-action Value Function(Q-function)
1?State-action Value Function(Q-function)
1.1 和 狀態價值函數的對比
????????在DQN筆記:MC & TD_UQI-LIUWJ的博客-CSDN博客?中,狀態價值函數的輸入是一個狀態。它是根據狀態去計算出,看到這個狀態以后,累積獎勵的期望是多少。
????????狀態-動作價值函數【State-action Value Function】的輸入是一個狀態、動作對。它的意思是說,在某一個狀態采取某一個動作,假設我們都使用演員 π?,得到的累積獎勵的期望值有多大。
1.2 一個需要注意的問題
????????有一個需要注意的問題是,這個演員π,在看到狀態 s 的時候,它采取的動作不一定是 a。
????????Q-function 假設在狀態 s 強制采取動作 a。不管你現在考慮的這個演員π, 它會不會采取動作 a,這不重要。在狀態 s 強制采取動作 a。
? ? ? ? 接下來的狀態就進入”自動模式“,讓演員π 按照他設定的策略繼續玩下去。這樣得到的期望獎勵才是
1.3 兩種寫法
Q-function 有兩種寫法:
- 輸入是狀態跟動作,輸出就是一個標量;
- 輸入是一個狀態,輸出就是好幾個值。
????????假設動作是離散的,動作就只有 3 個可能:往左往右或是開火。
????????那這個 Q-function 輸出的 3 個值就分別代表 a 是向左的時候的 Q 值,a 是向右的時候的 Q 值,還有 a 是開火的時候的 Q 值。
????????要注意的事情是,這種寫法只有離散動作才能夠使用。如果動作是無法窮舉的,你只能夠用第一種寫法,不能用第二種寫法。
2 策略改進
????????有了這個 Q-function,我們就可以決定要采取哪一個動作,我們就可以進行策略改進(Policy Improvement)了。
2.1 大致思路
? ? ? ? 大致思路如下,假設你有一個初始的演員π,這個 π?跟環境互動,會收集數據。
????????接下來學習一個演員π的 Q 值(衡量一下π?在某一個狀態強制采取某一個動作,接下來用π?這個策略 會得到的期望獎勵)【TD,MC皆可】
????????學習出一個 Q-function 以后,就可以去找一個新的策略 π′?,π′?一定會比原來的策略π?還要好。
? ? ? ? ?這樣一直循環下去,policy 就會越來越好。
2.2 什么是更好的策略?
????????這邊”好“是說,對所有可能的狀態 s 而言,。????????
????????也就是說我們走到同一個狀態 s 的時候,如果拿π?繼續跟環境互動下去,我們得到的獎勵一定會小于等于用π′?跟環境互動下去得到的獎勵。
2.3 如何找更好的策略?
????????有了 Q-function 以后,怎么找這個 π′?呢?
? ? ? ? ?我們可以根據上式來查找 π′?
????????假設你已經學習出π?的 Q-function,今天在某一個狀態 s,你把所有可能的動作 a 都一一帶入這個 Q-function,看看哪一個 a 可以讓 Q-function 的值最大,那這個動作就是π′?會采取的動作。
????????這邊要注意一下,給定這個狀態 s,你的策略π?并不一定會采取動作a,我們是給定某一個狀態 s 強制采取動作 a,用π?繼續互動下去得到的期望獎勵,這個才是 Q-function 的定義。
2.4 為什么用決定出來的 π′?一定會比π?好?
? ? ? ? 這里也就是要說明,假設有一個策略叫做 π′,它是由決定的。我們要證對所有的狀態 s 而言,。
? ? ? ? 首先,。因為在狀態 s根據π?這個演員,它會采取的動作就是π(s)
? ? ? ? ?同時,我們根據策略更新的方式,知道:(因為 a 是所有動作里面可以讓 Q 最大的那個動作)
? ? ? ? ?而最大的那個動作就是π′(s),所以有:
? ? ? ? 于是有:
????????
?????????而?π只是當前狀態為s的時候,是會導致最大的Q(s,a),之后的各個狀態s',則不一定是最大的Q(s',a)。而π' 會保證所有的狀態s,Q(s,a)都是最大的。所以后者一定大于等于前者。
?
所以,我們可以估計某一個策略的 Q-function,接下來你就可以找到另外一個策略?π′?比原來的策略還要更好。
3 target network
?????????我們在學習 Q-function 的時候,也會用到 TD:在狀態st?,你采取動作at??以后,你得到獎勵rt??,然后跳到狀態。然后根據這個 Q-function,會得到:
????????
?????????所以在學習的時候,我們希望我們的Q-function,輸入st?,at??得到的值,跟輸入,?得到的值中間,我們希望它差了一個rt?。
?????????但是實際上這樣的一個輸入并不好學習。
????????假設這是一個回歸問題,?是網絡的輸出,是目標,你會發現目標也是會隨著訓練過程而動的。
????????當然要實現這樣的訓練,其實也沒有問題,就是你在做反向傳播的時候,的參數會被更新,這樣會導致訓練變得不太穩定,因為假設你把當作你模型的輸出,當作目標的話,你要去擬合的目標是一直在變的,這種一直在變的目標的訓練是不太好訓練的。
???????解決方法是,你會把其中一個 Q 網絡,通常是你會把右邊這個 Q 網絡固定住。
????????也就是說你在訓練的時候,你只更新左邊的 Q 網絡的參數,而右邊的 Q 網絡的參數會被固定住。
????????因為右邊的 Q 網絡負責產生目標,所以叫?目標網絡 target network。
????????因為目標網絡是固定的,所以你現在得到的目標的值也是固定的。
????????因為目標網絡是固定的,我們只調左邊網絡的參數,它就變成是一個回歸問題。
?????????在實現的時候,可以左邊的 Q 網絡更新好幾次以后,再去用更新過的 Q 網絡替換這個目標網絡。
????????但左右兩個Q網絡不要一起動,它們兩個一起動的話,結果會很容易不穩定。
(思路和PPO 有點類似強化學習筆記:PPO 【近端策略優化(Proximal Policy Optimization)】_UQI-LIUWJ的博客-CSDN博客_ppo算法
?3.1 形象的例子詮釋target network
????????我們可以通過貓追老鼠的例子來直觀地理解為什么要 fix target network。貓是?Q estimation,老鼠是?Q target。一開始的話,貓離老鼠很遠,所以我們想讓這個貓追上老鼠。
????????
?????????因為 Q target 也是跟模型參數相關的,所以每次優化后,Q target 也會動。這就導致一個問題,貓和老鼠都在動。
????????
?????????然后它們就會在優化空間里面到處亂動,就會產生非常奇怪的優化軌跡,這就使得訓練過程十分不穩定。
????????
????????所以我們可以固定 Q target,讓老鼠動得不是那么頻繁,可能讓它每 5 步動一次,貓則是每一步都在動。
????????如果老鼠每 5 次動一步的話,貓就有足夠的時間來接近老鼠。然后它們之間的距離會隨著優化過程越來越小,最后它們就可以擬合,擬合過后就可以得到一個最好的Q 網絡。
?4 探索
4.1 遇到的問題
????????當我們使用 Q-function 的時候,policy 完全取決于 Q-function。給定某一個狀態,你就窮舉所有的 a, 看哪個 a 可以讓 Q 值最大,它就是采取的動作?!獀alue based
????????這個跟策略梯度不一樣,在做策略梯度的時候,輸出其實是隨機的。我們輸出一組動作的概率分布,根據這組動作的概率分布去做采樣, 所以在策略梯度里面,你每次采取的動作是不一樣的,是有隨機性的?!猵olicy based
????????強化學習筆記:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客
? ? ? ? 而對于Q-function,如果每次采取的動作總是固定的,會有什么問題呢?
?????????會遇到的問題就是這不是一個好的收集數據的方式。因為計算Q(S,a)的時候,除了第一步強制指定的動作a之外,之后的每一步都只確定性地取決策,喪失了exploration的機制。
4.2?解決方法
????????這個問題其實就是探索-利用窘境(Exploration-Exploitation dilemma)問題。
? ? ? ? 我們使用Epsilon Greedy(ε-greedy) ,和generalized policy iteration with MC?中的一致
總結
以上是生活随笔為你收集整理的DQN 笔记 State-action Value Function(Q-function)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 错误处理:Syntax error: B
- 下一篇: 报错处理:sh: 1: Syntax e