強化學習筆記之【Q-learning演算法和DQN演算法】
前言:
強化學習領域,繁冗複雜的大段程式碼裡面,核心的數學公式往往只有20~40行,剩下的程式碼都是為了應用這些數學公式而服務的
這可比遙感影像難太多了,亂七八糟的數學公式看得頭大
本文初編輯於2024.10.5
CSDN主頁:https://blog.csdn.net/rvdgdsva
部落格園主頁:https://www.cnblogs.com/hassle
Q-learning演算法
需要先看:
Deep Reinforcement Learning (DRL) 演算法在 PyTorch 中的實現與應用【Q-learning部分】
7個最流行的強化學習演算法實戰案例(附 Python 程式碼)【Q-learning部分】【不要看這個的DQN部分,裡面用的是單網路】
- 上述公式為Q-learning演算法中的Q值更新公式
- Q-learning演算法中的Q值更新公式引數解釋:
-
Q[CurrentState, Action]: 這是在當前狀態(CurrentState)下,採取特定動作(Action)所對應的Q值。Q值代表了在給定狀態下采取該動作的預期累積回報。
-
LearningRate (α): 學習率是一個介於0和1之間的引數,用來控制新資訊(即當前的經驗和估計的未來回報)對Q值更新的影響。較高的學習率會使得新經驗更快速地影響Q值,而較低的學習率則會使得Q值更新更加平滑,減小波動。
-
reward: 這是在執行動作(Action)後獲得的即時獎勵。它用於衡量該動作的好壞,與環境的反饋直接相關。
-
gamma (γ): 折扣因子是一個介於0和1之間的引數,用於確定未來獎勵的重要性。γ越接近1,智慧體越重視未來的獎勵;γ越接近0,智慧體則更關注眼前的即時獎勵。
-
max(Q[NextState]): 這是在下一個狀態(NextState)中所有可能動作的Q值中的最大值。它表示在下一個狀態下預計能獲得的最大未來回報。
- 透過上述公式進行Action的選擇
個人理解:Q-learning是off-policy演算法。reward是現在的行為可見的確定的收益,gamma*max(Q[NextState])是預計的未來的總收益(不包括現在,即reward),Q[CurrentState, Action]是預計的現在的總收益(包括現在,即reward),此點參考【強化學習】 時序差分TD error的通俗理解,方程的右側表示Q值的更新。它使用了目前的Q值,加上基於當前獲得的獎勵和預計的未來獎勵的調整。這個調整部分是基於時序差分(即 TD-errors)學習的原則。
DQN演算法
需要先看:
Deep Reinforcement Learning (DRL) 演算法在 PyTorch 中的實現與應用【DQN部分】【程式碼中有take_action函式】
【深度強化學習】(1) DQN 模型解析,附Pytorch完整程式碼【程式碼實現部分】【程式碼中DQN網路缺少take_action函式,結合上文看吧】
- 上述公式為深度 Q 網路(DQN)演算法中的Q值更新公式
- 透過上述公式進行Action的選擇,注意這裡用的是q_network而不是target_network
大白話解釋:
state和action為經驗池裡面提取的batch,不是某一時刻的state和action
DQN例項化為q_network,輸入state對應輸出q_values,action也是這個網路給出的
DQN例項化為target_network,輸入next_state對應輸出next_q_values
next_q_values例項化為q_targets
q_values和q_targets進行q_network的引數更新
- 深度 Q 網路(DQN)演算法中的Q值更新公式引數解釋:
- target[action]: 這是當前狀態下,執行特定動作
action
的目標 Q 值。我們希望透過更新這個 Q 值來使其更接近真實的 Q 值。 - reward: 這是在當前狀態下執行
action
所得到的即時獎勵。 - done: 這是一個布林值,表示當前狀態是否是終止狀態。如果
done
為 1(或 True),表示已經到達終止狀態,那麼後續不再有獎勵;如果為 0(或 False),則表示還有後續狀態和獎勵。 - self.gamma: 這是折扣因子(通常在 0 到 1 之間),用於控制未來獎勵對當前決策的影響。較高的折扣因子意味著更關注未來的獎勵。
- next_q_values.max(): 這是在下一個狀態中所有可能動作的 Q 值的最大值,表示在下一個狀態下能獲得的最佳期望獎勵。
個人理解:DQN採用雙網路,是off-policy演算法。一個訓練網路僅使用當前資料,對一種state採取最優的action,需要頻繁更新。一個目標網路使用歷史資料,採取總體最優action,不需要頻繁更新。相較於Q-learning,使用Q函式代替了Q矩陣的作用,在狀態很多時Q矩陣難以處理,Q函式擅長對複雜情況進行建模。