部分內(nèi)容與圖片摘自:JoyRL 、 EasyRL
DQN (Deep Q-Network)
說(shuō)明
DQN通過(guò)深度學(xué)習(xí)技術(shù)處理高維狀態(tài)空間,它的核心是使用深度神經(jīng)網(wǎng)絡(luò)來(lái)近似Q值函數(shù)。傳統(tǒng)Q-learning依賴(lài)于一個(gè)查找表(Q表)來(lái)存儲(chǔ)每個(gè)狀態(tài)-動(dòng)作對(duì)的Q值,但這在高維空間中變得不可行。DQN通過(guò)訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)這個(gè)映射關(guān)系。
除了用深度網(wǎng)絡(luò)代替 Q表之外,DQN算法還引入了一些技巧,如經(jīng)驗(yàn)回放和目標(biāo)網(wǎng)絡(luò)。
經(jīng)驗(yàn)回放:通過(guò)存儲(chǔ)代理的經(jīng)驗(yàn)(狀態(tài),動(dòng)作,獎(jiǎng)勵(lì),新?tīng)顟B(tài))在回放緩存中,并在訓(xùn)練時(shí)從中隨機(jī)抽樣,這樣做可以打破數(shù)據(jù)間的時(shí)間相關(guān)性,提高學(xué)習(xí)的穩(wěn)定性和效率。
目標(biāo)網(wǎng)絡(luò):DQN使用了兩個(gè)網(wǎng)絡(luò):一個(gè)用于估計(jì)當(dāng)前的Q值(在線(xiàn)網(wǎng)絡(luò)),另一個(gè)用于生成目標(biāo)Q值(目標(biāo)網(wǎng)絡(luò))。這種分離有助于穩(wěn)定訓(xùn)練過(guò)程,因?yàn)樗鼫p少了目標(biāo)值隨學(xué)習(xí)過(guò)程快速變化的問(wèn)題。
偽代碼
initialize replay memory D
initialize action-value function Q with random weights
for episode = 1, M do
initialize state s
for t = 1, T do
select action a with ε-greedy policy based on Q
execute action a, observe reward r and new state s'
store transition (s, a, r, s') in D
sample random minibatch from D
calculate target for each minibatch sample
update Q using gradient descent
end for
end for
應(yīng)用范圍
- 適用于具有高維狀態(tài)空間和離散動(dòng)作空間的問(wèn)題。
- 常用于游戲和模擬環(huán)境。
Double DQN
說(shuō)明
主要解決了DQN在估計(jì)Q值時(shí)的過(guò)高估計(jì)(overestimation)問(wèn)題。在傳統(tǒng)的DQN中,選擇和評(píng)估動(dòng)作的Q值使用相同的網(wǎng)絡(luò),這可能導(dǎo)致在某些狀態(tài)下對(duì)某些動(dòng)作的Q值被高估,從而影響學(xué)習(xí)的穩(wěn)定性和最終策略的質(zhì)量。
Double DQN 通過(guò)使用兩個(gè)不同的網(wǎng)絡(luò) QA 和 QB 來(lái)分別進(jìn)行動(dòng)作的選擇和價(jià)值的估計(jì),進(jìn)而減少了傳統(tǒng)DQN可能導(dǎo)致的Q值過(guò)高估計(jì)問(wèn)題。
具體來(lái)說(shuō),動(dòng)作選擇是基于 QA 網(wǎng)絡(luò)進(jìn)行的,而價(jià)值估計(jì)則是基于 QB網(wǎng)絡(luò)。在更新 QA 的過(guò)程中,使用 QB 來(lái)估計(jì)下一狀態(tài)的價(jià)值,但是每隔固定的時(shí)間步, QB 會(huì)被 QA 的權(quán)值更新,從而實(shí)現(xiàn)兩個(gè)網(wǎng)絡(luò)的同步。這種方法提高了Q值估計(jì)的準(zhǔn)確性,從而可以在復(fù)雜的決策環(huán)境中提供更穩(wěn)定和可靠的學(xué)習(xí)性能。
偽代碼
# Same as DQN until the target calculation
for each minibatch sample (s, a, r, s'):
if s' is terminal:
y = r
else:
a' = argmax_a Q(s', a; θ) # action selection by Q-network
y = r + γ * Q(s', a'; θ') # target calculation by target network
update Q using gradient descent
應(yīng)用范圍
-
減少估計(jì)偏差,提高策略穩(wěn)定性。
-
適用于需要精確動(dòng)作價(jià)值估計(jì)的場(chǎng)景。
Dueling DQN
實(shí)現(xiàn)原理
Dueling DQN修改的是網(wǎng)絡(luò)結(jié)構(gòu),算法中在輸出層之前分流( dueling )出了兩個(gè)層,如圖所示,一個(gè)是優(yōu)勢(shì)層,用于估計(jì)每個(gè)動(dòng)作帶來(lái)的優(yōu)勢(shì),輸出維度為動(dòng)作數(shù)一個(gè)是價(jià)值層,用于估計(jì)每個(gè)狀態(tài)的價(jià)值,輸出維度為 1。
這種結(jié)構(gòu)設(shè)計(jì)使得Dueling DQN在評(píng)估每個(gè)狀態(tài)的價(jià)值時(shí)更加準(zhǔn)確,尤其是在那些動(dòng)作選擇不會(huì)極大影響環(huán)境的情況下。換句話(huà)說(shuō),即使在狀態(tài)的價(jià)值變化不大時(shí),Dueling DQN也能有效地學(xué)習(xí)到動(dòng)作間的差異,這對(duì)于在復(fù)雜策略空間中找到最優(yōu)策略特別有用。
應(yīng)用范圍
Dueling DQN特別適合于那些狀態(tài)值比動(dòng)作選擇本身更重要的場(chǎng)景,例如,在一些策略游戲或者決策問(wèn)題中,環(huán)境可能對(duì)特定動(dòng)作不敏感(比如不需要開(kāi)火?),此時(shí),能夠精確評(píng)估狀態(tài)價(jià)值的Dueling DQN將非常有用。此外,Dueling DQN也適用于需要從大量相似動(dòng)作中做出選擇的任務(wù),因?yàn)樗軌蚋玫貐^(qū)分各個(gè)動(dòng)作的微小差異。
偽代碼
# Network architecture change
for each minibatch sample (s, a, r, s'):
V = V(s; θV) # State value function
A = A(s, a; θA) # Advantage function
Q = V + (A - mean(A)) # Q value calculation
update Q using gradient descent
Per DQN (Prioritized Experience Replay DQN)
Per DQN增強(qiáng)了基本DQN的經(jīng)驗(yàn)回放機(jī)制,通過(guò)優(yōu)先級(jí)回放來(lái)指導(dǎo)學(xué)習(xí)過(guò)程。在傳統(tǒng)的經(jīng)驗(yàn)回放中,訓(xùn)練樣本是隨機(jī)抽取的,每個(gè)樣本被重新使用的概率相同。然而,并非所有的經(jīng)驗(yàn)都同等重要。Per DQN通過(guò)計(jì)算時(shí)間差分誤差(Temporal Difference Error,TD error),為每個(gè)經(jīng)驗(yàn)樣本分配一個(gè)優(yōu)先級(jí),優(yōu)先級(jí)高的樣本更有可能被抽取來(lái)進(jìn)行學(xué)習(xí)。
- 時(shí)序差分誤差:TD error是實(shí)際獎(jiǎng)勵(lì)與當(dāng)前Q值函數(shù)預(yù)測(cè)獎(jiǎng)勵(lì)之間的差異。較大的TD error意味著對(duì)應(yīng)的經(jīng)驗(yàn)可能會(huì)給我們的學(xué)習(xí)帶來(lái)更多信息。
- 優(yōu)先級(jí)的設(shè)定:在經(jīng)驗(yàn)優(yōu)先回放(Prioritized Experience Replay)中,每個(gè)經(jīng)驗(yàn)的優(yōu)先級(jí)是根據(jù)其時(shí)序差分誤差(TD error)的大小來(lái)設(shè)定的。TD error是實(shí)際獎(jiǎng)勵(lì)與估計(jì)獎(jiǎng)勵(lì)之間的差異,它反映了當(dāng)前策略預(yù)測(cè)的準(zhǔn)確性。一個(gè)高TD error的經(jīng)驗(yàn)表示當(dāng)前策略有更大的學(xué)習(xí)潛力,因此被賦予更高的優(yōu)先級(jí),以便更頻繁地從經(jīng)驗(yàn)回放中被抽樣學(xué)習(xí)。
應(yīng)用范圍
Per DQN適用于那些代理可以從特定經(jīng)驗(yàn)中快速學(xué)習(xí)的場(chǎng)景。在復(fù)雜的環(huán)境中,一些關(guān)鍵的決策點(diǎn)可能只出現(xiàn)幾次,傳統(tǒng)的隨機(jī)抽樣可能會(huì)忽略這些經(jīng)驗(yàn)。Per DQN確保這些有價(jià)值的經(jīng)驗(yàn)?zāi)軌虮桓l繁地回顧和學(xué)習(xí),從而加速學(xué)習(xí)過(guò)程,有助于更快地收斂到一個(gè)好的策略。
偽代碼
initialize priority replay memory D
for each minibatch sample (s, a, r, s'):
calculate TD error: δ = |r + γ * max_a' Q(s', a') - Q(s, a)|
update priority of (s, a, r, s') in D based on δ
update Q using gradient descent
缺陷:直接使用TD誤差作為優(yōu)先級(jí)存在一些問(wèn)題。首先,考慮到算法效率問(wèn)題,我們?cè)诿看胃聲r(shí)不會(huì)把經(jīng)驗(yàn)回放中的所有樣本都計(jì)算TD誤差并更新對(duì)應(yīng)的優(yōu)先級(jí),而是只更新當(dāng)前取到的一定批量的樣本。這樣一來(lái),每次計(jì)算的TD誤差是對(duì)應(yīng)之前的網(wǎng)絡(luò),而不是當(dāng)前待更新的網(wǎng)絡(luò)。
所以引入了額外的技巧:隨機(jī)采樣和重要性采樣。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-809492.html
NoisyDQN
增加噪聲層(煉丹的通用操作),提高模型泛化性,避免陷入局部最優(yōu)解。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-809492.html
偽代碼
initialize Q network with noisy layers
for each minibatch sample (s, a, r, s'):
select action a using Q with noise
execute action a, observe r, s'
store transition, sample minibatch
update Q using gradient descent
應(yīng)用范圍
- 適用于探索性任務(wù)和非穩(wěn)態(tài)環(huán)境。
- 動(dòng)態(tài)調(diào)整探索策略,適合于需要適應(yīng)性探索的復(fù)雜場(chǎng)景。
到了這里,關(guān)于DQN、Double DQN、Dueling DQN、Per DQN、NoisyDQN 學(xué)習(xí)筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!