深度強化學習第十二章——Deep Deterministic Policy Gradient(DDPG)
深度強化學習第十二章——Deep Deterministic Policy Gradient(DDPG
從名字上看DDPG是由D(Deep)+D(Deterministic)+PG(Policy Gradient)組成
1.Deterministic Policy Gradient(DPG)
首先,我們先來了解下DPG是什麼
確定性策略梯度(Deterministic Policy Gradient,簡稱DPG)。
1.2 為什麼要DPG
不是有策略梯度(PG)了嗎,為什麼還有有DPG嘞
對於某一些動作集合來說,它可能是連續值,或者非常高維的離散值,這樣動作的空間維度極大。如果我們使用隨機策略,即像DQN一樣研究它所有的可能動作的概率,並計算各個可能的動作的價值的話,那需要的採集大量樣本。
即通過PG學習得到了隨機策略之後,在每一步行為時,我們還需要對得到的最優策略概率分佈進行取樣,才能獲得action的具體值。
而action通常是高維的向量,比如25維、50維。在高維的action空間的頻繁取樣,無疑是很耗費計算能力。
而且計算梯度需要通過蒙特卡洛取樣來進行估算,也需要在高維的action空間進行取樣,耗費+1。
簡單來說,就是像暴力求解一樣,太燒計算機了,得換種解法
所以在2014年,由Deepmind的D.Silver等提出 Deterministic policy gradient algorithms,即確定性策略演算法。
一定的策略
μ
\mu
μ,對應一定的確定性動作的策略網路的引數
θ
μ
\theta^{\mu }
θμ,在同一個狀態
s
s
s處,,動作
a
t
a_t
at是唯一確定的,
a t = μ ( s ∣ θ μ ) a_t=\mu(s|\theta^{\mu}) at=μ(s∣θμ)
在這之前,業界普遍認為,環境模型無關(model-free)的確定性策略是不存在的,而D.Silver等通過嚴密的數學推導,證明了DPG的存在。
為了更好地理解DPG,我們先回顧一下策略梯度(PG),基於Q值的梯度計算公式:
▽ θ J ( π θ ) = E s ∼ p π , a ∼ π θ [ ▽ θ l o g π θ ( a ∣ s ) Q π ( s , a ) ] \bigtriangledown _{\theta }J(\pi_{\theta})=E_{s\sim p^{\pi},a\sim \pi_{\theta}}[\bigtriangledown _{\theta }log\pi_{\theta}(a|s)Q^{\pi}(s,a)] ▽θJ(πθ)=Es∼pπ,a∼πθ[▽θlogπθ(a∣s)Qπ(s,a)]
隨機性策略梯度需要在整個動作空間
π
θ
\pi_{\theta}%
πθ取樣,而DPG梯度公式如下:
▽
θ
J
(
μ
θ
)
=
E
s
∼
p
μ
[
▽
θ
μ
θ
(
s
)
▽
a
Q
μ
(
s
,
a
)
∣
a
=
μ
θ
]
\bigtriangledown _{\theta }J(\mu_{\theta})=E_{s\sim p^{\mu}}[\bigtriangledown _{\theta }\mu_{\theta}(s)\bigtriangledown _{a}Q^{\mu}(s,a)|_{a=\mu_{\theta}}]
▽θJ(μθ)=Es∼pμ[▽θμθ(s)▽aQμ(s,a)∣a=μθ]
跟隨機策略梯度的式子相比,對動作的積分變為回報Q函式對動作的導數。
2. Deep Deterministic Policy Gradient(DDPG)
Deepmind在2016年提出DDPG,將深度學習神經網路融合進DPG的策略學習方法。
DPG對比DPG,核心改進是:採用卷積神經網路作為策略網路和Q網路,且DDPG有四個網路。
DDPG採用確定性策略 μ \mu μ來選取動作 a t = μ ( s ∣ θ μ ) a_{t}=\mu (s|\theta^{\mu }) at=μ(s∣θμ),其中 θ μ \theta^{\mu } θμ產生確定性動作的策略網路的引數。
2.1 AC演算法
Actor-Critic(AC)演算法分為Actor和Critic兩部分。
Actor的前身是policy gradient,它可以輕鬆地在連續動作空間內選擇合適的動作,value-based的Q-learning只能解決離散動作空間的問題。
但是又因為Actor是基於一個episode的return來進行更新的,所以學習效率比較慢。這時候我們發現使用一個value-based的演算法作為Critic就可以使用TD方法實現單步更新,這其實可以看做是拿偏差換方差。
這樣兩種演算法相互補充就形成了我們的Actor-Critic。
Actor 基於概率分佈選擇行為, Critic 基於 Actor 生成的行為評判得分, Actor 再根據 Critic 的評分修改選行為的概率。
2.2 DDPG的四個網路
根據AC演算法,聯想到使用策略網路充當Actor,使用價值網路充當Critic,再根據上述DPG演算法,Actor部分不再使用自己的Loss函式和Reward進行更新,而是使用Critic部分Q值對action的梯度來對actor進行更新。
事實上如果我們只用當前價值網路評估Q值,會產生過估計。
用DQN的改進方法中的Double DQN(DDQN):
先在當前Q網路中先找出最大Q值對應的動作,在目標網路裡面去計算目標Q值,我們能不能採用類似的方法去估計Q值?回到DDPG,critic部分增加一個目標網路與DDQN的目標Q網路功能類似,但是還需要選取動作用來估計目標Q值,由於我們有自己的Actor策略網路,用類似的做法,增加一個Actor目標網路,對經驗回放池中取樣的下一狀態使用貪婪法選擇動作。
於是我們得到了DDPG的四個網路:
- Actor當前網路:負責策略網路引數\theta的迭代更新,負責根據當前狀態S選擇當前動作A,用於和環境互動生成S’, R
- Actor目標網路:負責根據經驗回放池中取樣的下一狀態 S’ 選擇最優下一動作 A’,網路引數\theta^{’}定期從\theta複製
- Critic當前網路:根據目標Q值對網路引數 w 進行迭代更新,負責計算當前Q值,其中目標Q值
y j = { R t e m i n a l i s t r u e R + γ Q ′ ( S ′ , A ′ , w ′ ) t e m i n a l i s f a l s e y_{j}=\left\{\begin{matrix} R & teminal &is& true\\ R+\gamma Q^{'}(S^{'},A^{'},w^{'}) & teminal &is&false \end{matrix}\right. yj={RR+γQ′(S′,A′,w′)teminalteminalisistruefalse - Critic目標網路:負責計算目標Q值中的Q{’}(S{’},A{’},w{’}),網路引數 w’ 定期從 w 複製
3.DDPG 與 DPG
DDPG從當前網路到目標網路的複製和DQN不一樣。回想DQN,我們是直接把將當前Q網路的引數複製到目標Q網路, DDPG這裡沒有使用這種硬更新,而是使用了軟更新,即每次引數只更新一點點
θ
′
←
τ
θ
+
(
1
−
τ
)
θ
′
\theta^{'}\leftarrow \tau \theta+(1-\tau )\theta^{'}
θ′←τθ+(1−τ)θ′
w
′
←
τ
w
+
(
1
−
τ
)
w
′
w^{'}\leftarrow \tau w+(1-\tau )w^{'}
w′←τw+(1−τ)w′
其中 τ \tau τ是更新系數,同時,為了學習過程可以增加一些隨機性,探索潛在的更優策略,通過Ornstein-Uhlenbeck process(OU過程)為action新增噪聲,最終輸出的動作A為
A = π θ ( S ) + O U n o i s e A=\pi_{\theta}(S)+OU noise A=πθ(S)+OUnoise
最後對於 Actor當前網路,這裡由於是確定性策略,原論文定義的損失梯度為
▽ J ( θ ) = 1 m ∑ j = 1 m ( ▽ a Q ( s i , a i , w ) ∣ s = s i , a = π θ ( s ) ▽ θ π θ ( s ) ∣ s = s i ) \bigtriangledown J(\theta )=\frac{1}{m} \sum _{j=1}^{m}(\bigtriangledown _{a}Q(s_{i},a_{i},w)|_{s=s_{i},a=\pi_{\theta}(s)}\bigtriangledown_{\theta }\pi_{\theta}(s)|_{s=s_{i}}) ▽J(θ)=m1∑j=1m(▽aQ(si,ai,w)∣s=si,a=πθ(s)▽θπθ(s)∣s=si)
假如對同一個狀態,我們輸出了兩個不同的動作 a 1 和 a 2 a_{1}和a_{2} a1和a2,從Critic當前網路得到了兩個反饋的Q值,分別是 Q 1 , Q 2 Q_{1},Q_{2} Q1,Q2,假設 Q 1 > Q 2 Q_{1}>Q_{2} Q1>Q2,即採取動作 a 1 a_{1} a1可以得到更多的獎勵,那麼策略梯度的思想是什麼呢,就是增加a_{1}的概率,降低a_{2}的概率,也就是說,Actor想要儘可能的得到更大的Q值。所以我們的Actor的損失可以簡單的理解為得到的反饋Q值越大損失越小,得到的反饋Q值越小損失越大,因此只要對狀態估計網路返回的Q值取個負號即可,即:
J ( θ ) = − 1 m ∑ j = 1 m Q ( s i , a i , w ) J(\theta )=-\frac{1}{m} \sum _{j=1}^{m}Q(s_{i},a_{i},w) J(θ)=−m1∑j=1mQ(si,ai,w)
DDPG可以看做是DDQN、Actor-Critic和DPG三種方法的組合演算法.
參考:謝宜廷的部落格
相關文章
- Deterministic Policy Gradient AlgorithmsGo
- 強化學習(十三) 策略梯度(Policy Gradient)強化學習梯度
- 強化學習(十六) 深度確定性策略梯度(DDPG)強化學習梯度
- 強化深度學習task06連續動作空間和DDPG深度學習
- Deep Reinforcement Learning 深度增強學習資源
- 深度學習及深度強化學習研修深度學習強化學習
- 深度學習及深度強化學習應用深度學習強化學習
- 深度學習+深度強化學習+遷移學習【研修】深度學習強化學習遷移學習
- 深度強化學習揭秘強化學習
- 強化學習演算法筆記之【DDPG演算法】強化學習演算法筆記
- 深度學習(Deep Learning)深度學習
- 《DEEP LEARNING·深度學習》深度學習
- 深度強化學習day01初探強化學習強化學習
- 從Q學習到DDPG,一文簡述多種強化學習演算法強化學習演算法
- 《深度強化學習》手稿開放了!強化學習
- 深度學習 DEEP LEARNING 學習筆記(一)深度學習筆記
- 深度學習 DEEP LEARNING 學習筆記(二)深度學習筆記
- 深度學習、強化學習核心技術實戰深度學習強化學習
- 關於強化學習、深度學習deeplearning研修強化學習深度學習
- Deep Learning(深度學習)學習筆記整理系列深度學習筆記
- 深度學習(Deep Learning)優缺點深度學習
- 【深度學習】大牛的《深度學習》筆記,Deep Learning速成教程深度學習筆記
- 深度強化學習核心技術實戰強化學習
- 機器學習、深度學習、強化學習課程超級大列表!機器學習深度學習強化學習
- 深度學習模型調優方法(Deep Learning學習記錄)深度學習模型
- Deep Learning(深度學習)學習筆記整理系列之(一)深度學習筆記
- 強化學習(九)Deep Q-Learning進階之Nature DQN強化學習
- 楊強:深度學習、強化學習、遷移學習的結合及應用進展深度學習強化學習遷移學習
- 使用Actor-Critic的DDPG強化學習演算法控制雙關節機械臂強化學習演算法機械臂
- 【強化學習】強化學習/增強學習/再勵學習介紹強化學習
- RL 基礎 | Policy Gradient 的推導
- 貝葉斯深度學習(bayesian deep learning)深度學習
- 12. 2020年秋季UC Berkeley CS285《深度強化學習》第4課:強化學習導論_2/6【中英字幕】強化學習
- 【強化學習】使用off-policy演算法機器人抓取任務基準;生成對抗網路 GAN 就是強化學習強化學習演算法機器人
- 深度強化學習技術開發與應用強化學習
- 深度強化學習的 18 個關鍵問題強化學習
- 深度學習問題記錄:Building your Deep Neural深度學習UI
- Deep Crossing模型——經典的深度學習架構ROS模型深度學習架構