A3C(Asynchronous Advantage Actor-Critic)是由Google DeepMind團隊於2016年提出的一種基於異步梯度的深度強化學習框架(Asynchronous Methods for Deep Reinforcement Learning),利用了多執行緒同時並行運行的特點,讓多個Actor(演員)並行訓練而定期與全局參數同步。該方法在Atari遊戲和3D迷宮等方面都有不錯的效果。
符號
符號
|
含義
|
|
狀態。
|
|
動作。
|
|
回報。
|
|
一個軌跡中第個時間步對應的狀態、動作以及回報。偶爾使用代替。
|
|
折扣因子;用於懲罰未來回報中的不確定性。
|
|
累積回報;或者說累積折扣回報。
|
|
在當前狀態下採取動作後轉移到下一個狀態並得到回報的概率。
|
|
隨機策略(智能體行為邏輯);代表由參數化的策略。
|
|
確定性策略;雖然也可以把確定性策略記為,但是採用一個不同的字母可以讓我們更容易分辨一個策略到底是確定性的還是隨機的。或者都是強化學習算法要學習的目標。
|
|
狀態-值函數衡量狀態的期望累積回報;代表由ω參數化的狀態-值函數。
|
|
當智能體遵循策略時狀態的期望累積回報;。
|
|
動作-值函數,與狀態-值函數類似,但是它衡量在狀態下採取動作後的期望累積回報;代表由參數化的動作-值函數。
|
|
與類似,當智能體遵循策略時,在狀態下採取動作後的期望累積回報;
。
|
|
優勢函數,;可以認為優勢函數是加強版本的動作-值函數,但是由於它採用狀態-值函數作為基準使得它具有更小的方差。
|
[1]
優勢函數
由。
當選取k步TD後,在A3C中由於有參數,優勢函數可改寫為:
[2]
算法流程
異步優勢Actor-Critic - 每個Actor-Learner執行緒的偽代碼如下:
- 定義全局參數向量和以及全局計數器
- 定義執行緒自身參數向量和,初始化執行緒步數計數器
- 當:
- 重置梯度: 和
- 將執行緒自身的參數向量與全局參數向量同步:,
- 令執行緒計數器並隨機採樣一個初始狀態
- 當(終止狀態)且:
- 根據當前執行緒的策略選擇當前執行的動作執行動作後接受回報並轉移到下一個狀態。
- 更新t以及並且
- 初始化保存累積回報估計值的變量:
- 對於,執行:
- 累積關於參數的梯度:
- 累積關於參數的梯度:
- 分別使用和異步更新和
[3]
改進
在Asynchronous Methods for Deep Reinforcement Learning (頁面存檔備份,存於網際網路檔案館)中作者還將熵()加到目標函數中以避免收斂到次優確定性解,這是由於在最大化熵的過程中會避免分布過於集中,包含熵在內的完整目標函數梯度如下[4]
其中H為熵函數,是用於控制熵正則化項的超參數。
論文
[1] (頁面存檔備份,存於網際網路檔案館)
代碼實現
[2] (頁面存檔備份,存於網際網路檔案館)
參考資料