前面的一篇博文介紹了函數價值近似,是以簡單的線性函數來做的,這篇博文介紹使用深度神經網絡來做函數近似,也就是Deep RL。這篇博文前半部分介紹DNN、CNN,熟悉這些的讀者可以跳過,直接看後半部分的Deep Q Learning Part。
Generalization
爲什麼要使用網絡來做近似。
-
希望能使用強化學習來處理自動駕駛汽車,Atari,消費者市場,醫療,教育等等
這些領域一般都會有表格表示無法cover的高維輸入特徵(signals)或者說觀察 -
多數上述領域有巨大的狀態(state)和/或動作(action)空間
-
需要能在狀態和/或動作之間泛化的Representation(模型的表示/狀態-動作價值的表示/價值的表示/策略的表示)
-
那我們就用一個參數化的函數代替表格來表示一個(狀態-動作/狀態)價值函數
Recall: Stochastic Gradient Descent
上一篇博客概述:Linear Value Function Approximation for Prediction With An Oracle
RL with Function Approximator
- 線性價值函數器近似假定價值函數是一個一系列特徵的加權組合,其中每一個特徵是其狀態的函數
- 線性VFA通常在給定正確的特徵集的條件下表示很好
- 但是需要仔細地手動設計特徵集
- 一個替代方案是使用更豐富的函數近似簇,他們能夠從狀態(States)中直接獲取而不需要顯式的規定所有的特徵。
- 本地表示(local representation),其中包括基於核的方法(kernel based approach),有一些吸引人的性質(在某些情景下能得到收斂的結果等),但不能很好的擴展到巨大的空間和數據集上。
Deep Neural Networks(DNN)
DNNs本質上是多個函數的組合。
Deep Neural Networks (DNN) Specification and Fitting
- 通常同時組合了線性和非線性變換
- 線性:
- 非線性: 也被稱作激活函數,比如:sigmoid、ReLU
- 爲了擬合參數,需要一個loss函數(MSE,log likelihood等)
The benefit of Deep Neural Network Approximators
- 使用分佈式表示而不是本地表示
- 通用型函數近似器
- 能僅需要指數級別少的節點/參數來表示同樣一個函數
- 可以使用隨機梯度下降來學習參數
Convolutional Neural Networks
Why Do We Care About CNNs
- CNNs廣泛應用於計算機視覺
- 如果你想根據像素點做決定,對視覺輸入來說是非常有用的
Fully Connected Neural Net
Images Have Structure
- 圖像有本地結構和關聯
- 圖像在空間和頻率範圍中有不同的特徵
Convolutional NN
Locality of Information: Receptive Fields
(Filter) Stride
Shared Weights
Feature Map
- 第一個隱藏層的所有的神經元都檢測確切相同的特徵,只是在輸入圖像的不同位置做檢測
- 特徵:使得神經元產生一個特堵部分響應級別的某種輸入模式(pattern)(e.g.,一個局部邊)
- 爲什麼這說得通?
- 假定weights和bias(已經學習到的)是隱藏單元能選出一個感知域內的一條豎直邊
- 這種能力在圖像的其他位置也是有用的
- 對圖像所有位置同樣的特徵檢測器都是有用的
產生變換(空間上的)不變形(嘗試在圖像的任何位置檢測該特徵) - 受視覺系統啓發而來
Convolutional Layer: Multiple Filters
Pooling Layers
Final Layer Typically Fully Connected
Deep Q Learning
Generalization
Deep Reinforcement Learning
- 使用深度神經網絡來表示
- 價值函數
- 策略
- 模型
- 使用隨機梯度下降(SGD)優化loss函數
Deep Q-Networks(DQNs)
- 使用帶權重集的Q-network來表示狀態-動作價值函數
Recall: Action-Value Function Approximation with an Oracle
這是在做control
- 最小化真實動作-價值函數和近似動作-價值函數的均方誤差:
- 使用隨機梯度下降來尋找一個局部最小值
- 隨機梯度下降(SGD)採樣梯度
Recall: Incremental Model-Free Control Approaches
- 如同策略評估,一個狀態的真實狀態-動作價值函數是未知的所以使用一個目標值來替代
- 在蒙特·卡羅爾方法,使用一個回報作爲一個替代目標
- 在SARSA,代替真實值的是TD目標,它利用了當前的函數近似價值
- 在Q-learning,替代真實值的是TD目標,它利用了當前函數近似價值的最大值
DQNs in Atari
DeepMind發表在nature上的文章,源代碼可以在sites.google.com/a/deepmind.com/dqn找到
- 端到端從像素集s中學習價值
- 輸入狀態s是最後四幀的原始像素集的堆砌
- 輸出是18個控制桿/按鈕位置的值
- 回報是那一步的得分
- 網絡結構和超參數在所有的遊戲中都是固定的
他們的核心論點是不必在每一個遊戲單獨使用完全不同的網絡架構來做完全不同的超參數調參來獲得成功,這是一個通用的結構足夠針對所有的遊戲去學習好的決策。它的貢獻在於我們嘗試得到某種通用的算法和相關配置,能超越我們其他在強化學習論文上看到的只能在三個普通例子上運行。它在50中游戲上嘗試做到很好。
Q-Learning with Value Function Approximation
- 使用隨機梯度下降最小化MSE損失
- 使用表格查詢表示收斂到最優
- 但是使用VFA的Q-learning會發散
- 兩個擔憂引發了這個問題
- 採樣之間的相關性
- 非駐點的目標
- Deep Q-learning(DQN)同時通過下列方式解決這兩項挑戰
- 經驗重播(Experience replay)
- 固定Q-targets
DQNs: 經驗重播
- 爲了有助於移除相關性,從先前的經驗中存儲數據集(稱作重播緩存)
- 爲進行經驗重播,循環以下步驟:
- :從數據集中採樣一個tuple
- 計算採樣s的目標價值:
- 使用隨機梯度下降來更新網絡權重
不重用數據能降低內存消耗,但對弱化模型表現。經驗重播相當於重用數據,而這是有幫助的。
- 可以把目標視作一個標量,但是權重將會在下一次更新,這改變了目標價值。
DQNs: fixed Q-Targets
- 爲了提升穩定性,使用在多次更新中的目標計算固定目標權重
- 使用一個不同的權重來計算目標更不是更新目標
- 記參數集爲在目標中使用的權重,是被更新的權重
- 計算目標值時有細微的改變:
- :從數據集中採樣
- 從採樣s中計算目標值
- 使用隨機梯度下降來更新網絡權重
這種Q-learing不是真正的梯度下降方法。GTD(gradient temporal difference) learning 是"更加"真實的梯度下降算法。這樣做非常有幫助,但仍然不能保證收斂。
DQNs Summary
- DQN 使用經驗重播或固定Q-targets
- 在重播緩存中存儲變遷
- 從中採樣隨機的小批量變遷
- 計算相對於舊的,固定的參數集的Q-learnning目標
- 優化Q-network和Q-learning 目標之間的均方誤差
- 使用隨機梯度下降
基本上都是用-greedy exploration
DQN Result in Atari
這張圖來自Deep Mind團隊2015年的一篇論文,他們在50中游戲上實驗了DQN算法,使用了CNN處理每一幀遊戲畫面。在超過半數的遊戲裏,都能實現接近人類甚至大幅領先人類的水平,但是需要大量的數據和時間來訓練。
Which Aspects of DQN were Import for Success?
哪一部分對成功貢獻最大?
Deep RL
- 在Atari遊戲上的成功引起了使用深度神經網絡來做價值函數近似的濃厚興趣
- 這裏列舉了一些在之後馬上的改進(還有很多其他的)
- Double DQN (Deep Reinforcement Learning with Double Q-Learning, Van Hasselt et al, AAAI 2016)
- Prioritized Replay (Prioritized Experience Replay, Schaul et al, ICLR 2016)
- Dueling DQN (best paper ICML 2016) (Dueling Network Architectures for Deep Reinforcement Learning, Wang et al, ICML 2016)
人工智能的學術會議,大多可以免費下載論文(非IEEE),不需要權限,所以上面的鏈接你可以直接點)
補充一點:
2018年Deep Mind在AAAI發表了組合6中DQN改進方法(包括上述)的Rainbow,Rainbow: Combining Improvements
in Deep Reinforcement Learning
Recall: Double Q-Learning
and initial state
using -greedy
(with 0.5 probability) then
這是在將我們如何選擇action與評估那個action的價值分離開,以解決過估計的問題。
Double DQN
- 擴展Double Q-Learning的思想到DQN
- 當前Q-network的用於選擇動作
- 舊的Q-network的用於評估動作
Double DQN
在Atari遊戲中,Double DQN通常會有很大幫助。
Refresher: Mars Rover Model-Free Policy Evaluation
先選擇,0+,再選擇,這跟蒙特·卡羅爾方法一樣,意味着沒有誤差。所以重播時選擇元組的順序是有影響的。
Impact of Replay
- 在表格法TD-learning中,重播更新的順序能加速學習
- 重複某些更新能比其他更新看起來能夠更好地反向傳播信息
- 如何系統化的做prioritize updates?
Potential Impact of Ordering Episodic Replay Updates
- Schaul, Quan, Antonoglou, Silver ICLR 2016
- 黑盒(Oracle): 選擇元組來重播將會降低全局loss
- 在收斂方面能有指數級別的提升
- 收斂需要的更新數量
- 黑盒不是一個實際的方法但是描述了順序的影響
Prioritized Experiemce Replay
讓我們來根據TD error賦予一些元組優先級
- 記是第個經驗元組
- 採樣元組以使用優先級函數來更新
- 一個元組的優先級和DQN error成比例
(兩邊豎線絕對值的意思) - 每一個元組都更新
- 其中一個方法: 成比例(隨機優先化)
- 的話會產生了什麼樣的規則在現有的元組中做選擇?
均勻採樣
請從上面的論文鏈接裏查閱原論文以獲得更詳細的信息。
Performance of Prioritized Replay vs Double DQN
Value & Advantage Function
Advantage Fuction在採取一個動作和另一個動作的差別之間做度量。希望能理解哪一些動作會有更好的價值。
- 直觀理解:用來確定價值的需要特比注意的特徵,可能會和那些決定動作收益特徵的不同
- E.g.
- 遊戲得分和預測是相關的
- 但是在揭示相關動作價值時不是必須的
- 所以提出了優勢函數(Advantage function, Baird 1993)
Dueling DQN
Identifiability
- 優勢函數(Advantage function)
- (優勢是)可辨識的嗎?
- 不可辨別
指定優勢函數,做了一些預先設定的假設
- Unidentifiable
- 觀點1:如果a是選擇的動作,強迫
- 觀點2:使用平均值作爲baseline(更穩定)
Dueling DQN V.S. Double DQN with Prioritized Replay
Practical Tips for DQN on Atati (From J. Schulman)
以下是來自伯克利博士John Schulman,OpanAI老大的在Atari上使用DQN的建議: