本文主要講解有關 Deep Q Network(DQN)算法的相關內容。
1. DQN 的基本思想
傳統的 Q-Learning 算法當 Q 表過大時不僅難以存儲而且難以搜索,並且當狀態是連續的話,用 Q 表存儲是不現實的,這時可以用一個函數來擬合 Q 表,所以提出了神經網絡和 Q-Learning 相融合的 Deep Q-Learning(DQN)算法,其中神經網絡用來代替 Q 表,以獲得狀態和動作對應的 Q 值。
在 DQN 中將狀態和動作作為神經網絡的輸入值,並得到相應的輸出——對應的 Q 值 。也可以只輸入狀態,輸出所有的動作值,然後挑選值最大的動作作為下一步要採取的動作。
在對 NN 進行訓練時,需要設置損失函數,但是在該問題中又是沒有標籤數據的。可以將損失函數設為:
Q-target 和 Q-eval 就是 Q-Learning 算法中的對應值。該損失函數和 Q-Learning 算法中 Q 表更新公式的含義相同,都是用 Q-eval 逼近 Q-target。
2. DQN 的兩大神器
(1)Experience replay(經驗回放):NN 的訓練樣本獨立,而 RL 中的前後狀態相關,所以需要做一點改動。因為 Q-Learning 是一個離線學習算法,所以在每次 DQN 更新時,可以隨機選取一些過去的狀態來進行學習。這種方式打亂了狀態之間的相關性,可以使神經網絡更有效率。
(2)Fixed Q-target(固定 Q-目標):因為網絡會不斷的更新,所以相同 s 和 a 下的 Q-target 和 Q-eval 的值是不固定的,這樣訓練起來比較困難。所以可以將 Q-target 固定住,這樣目標問題就變成了一個迴歸問題:用 Q-eval 去逼近 Q-target。
具體實現時,在 DQN 中使用兩個結構相同但是參數不同的 NN,預測 Q-eval 的估值網絡具有最新的參數,而預測 Q-target 的目標網絡的參數則是之前的,隔一段時間才會更新參數(將估值網絡的參數賦給目標網絡)。 這種方式降低了 Q-target 和 Q-eval 之間的相關性。
3. DQN 算法流程