Neil Zhu,簡書ID Not_GOD,University AI 創始人 & Chief Scientist,致力于推進世界人工智能化進程。制定并實施 UAI 中長期增長戰略和目標,帶領團隊快速成長為人工智能領域最專業的力量。
作為行業領導者,他和UAI一起在2014年創建了TASA(中國最早的人工智能社團), DL Center(深度學習知識中心全球價值網絡),AI growth(行業智庫培訓)等,為中國的人工智能人才建設輸送了大量的血液和養分。此外,他還參與或者舉辦過各類國際性的人工智能峰會和活動,產生了巨大的影響力,書寫了60萬字的人工智能精品技術內容,生產翻譯了全球第一本深度學習入門書《神經網絡與深度學習》,生產的內容被大量的專業垂直公眾號和媒體轉載與連載。曾經受邀為國內頂尖大學制定人工智能學習規劃和教授人工智能前沿課程,均受學生和老師好評。
David Silver,Google DeepMind
slide
lecture
強化學習觀點:人工智能=強化學習
強化學習是一種人工智能的通用框架:
- RL 是針對一個擁有行動能力的 agent 而言的
- 每個行動影響了 agent 的未來狀態
- 使用標量值回報信號來度量成功
一言以蔽之:選擇行動來最大化未來回報。我們最終的目標是尋求得到可以解決所有人類層級的任務的單一的 agent,這也是智能 agent 的本質。
agent 和環境
- 在每個時間步 t,agent:
- 接受狀態 st
- 接受標量回報 rt
- 執行行動 at
- 環境:
- 接受行動 at
- 產生狀態 st
- 產生標量回報 rt
強化學習的例子
這里給出一些強化學習適用的場景:
- 控制物理系統:行走、飛行、駕駛、游泳、……
- 與用戶進行交互:客戶維護 retain customers、個性化頻道 personalise channel、用戶體驗優化 optimise user experience、……
- 解決物流問題:規劃 scheduling、帶寬分配 bandwidth allocation、電梯控制、認知無線電 cognitive radio、電力優化 power optimisation、……
- 玩游戲:棋類、撲克、圍棋、Atari 游戲、……
- 學習序列化算法:注意力 attention、記憶 memory、條件計算 conditional computation、激活 activation、……
策略 policy 和估值 value 函數
- 策略 π 是給定狀態下選擇行動的行為函數:
a=π(s) - 估值函數 Qπ(s, a) 是從狀態 s 開始在策略 π 下采取行動 a 的期望全回報:
Qπ(s, a) = E[rt+1+γrt+2+γ2rt+3+...|s, a]
說白了,估值就是評估在狀態 s 時采取行動 a 的好壞。
強化學習的幾個方向
- 基于策略的 RL
- 直接搜索最優策略 π*
- 目標就是得到最大未來回報的策略
- 基于值的 RL
- 估計最優值函數 Q*(s, a)
- 在任何策略下可獲得的最大值
- 基于模型的 RL
- 構建一個環境的遷移模型
- 使用該模型進行規劃(通過查找規則)
深度強化學習
- 自然的,有這樣的一個問題,我們能不能將深度學習用在強化學習上?
- 使用深層網絡來表示估值函數/策略/模型
- 端對端的方式優化估值函數/策略/模型
- 這樣就可以使用隨機梯度下降來實現函數的優化
貝爾曼 Bellman 方程
- 估值函數可以遞歸展開:
Qπ(s, a)
= E[rt+1 + γrt+2 + γ2 rt+3 + ... | s, a]
= Es' [r + γQπ(s', a') | s, a] - 最有值函數 Q*(s, a) 可以遞歸展開為:
Q?(s, a) = Es'[r + γ maxa' Q?(s', a') | s, a] -
估值迭代算法可以解貝爾曼方程:
Qi+1(s, a) = Es' [r + γ maxa' Qi(s', a') | s, a]
深度 Q-學習
- 通過權重 w 的深層 Q-網絡來表示估值函數:Q(s, a, w) ≈ Qπ(s, a)
- 定義 Q值的均方誤差 MSE 作為目標函數:
- 目標 T=r + γ maxa'Q(s', a', w)
- L(w) = E[(T-Q(s,a,w))2]
- 所以得到下面的 Q-學習的梯度:
?L(w)/?w = E[(T-Q(s,a,w)) ?Q(s,a,w)/?w] - 使用 ?L(w)/?w 對目標函數使用 SGD 進行端對端優化
深度強化學習的穩定性問題
使用神經網絡進行簡易的 Q-學習會震蕩或者發散,原因如下:
- 數據是序列化的
- 時間連續的樣本是相關的,不是獨立的分布
- Q-值微小的變動會劇烈地影響策略
- 策略可能會震蕩
- 數據分布會從一個極端搖擺到另一個極端
- 回報和 Q-值的值范圍未知
- 簡易的 Q-學習的梯度在反向傳播的時候會非常不穩定
深度 Q-網絡 DQN
DQN 給出了基于值的深度強化學習一個穩定的解
- 使用經驗回放
- 打破數據之間的關聯,將我們拉回獨立同分布的配置下
- 從所有過去的策略中進行學習
- 固定目標 Q-網絡
- 避免了震蕩
- 將 Q-網絡和目標之間的關聯打破
- 剪切回報或者規范化網絡到一個可行的范圍內
- 健壯的梯度
穩定深度強化學習 1:經驗回放
為了移除關聯,從 agent 自身的經驗中構建數據集合:
- 根據 ???ε-貪婪策略選擇行動 at
- 將遷移 (st, at, rt+1, st+1)存入經驗內存 D 中
- 從 D 中采樣隨機 minibatch 的遷移 (s, a, r, s')
- 優化Q-網絡和Q-學習之間的 MSE:
L(w) = Es,a,r,s'~D?[(r + γ maxa'Q(s', a', w) ? Q(s, a, w))2]
穩定深度強化學習 2:固定目標 Q-網絡
為了避免震蕩,固定在 Q-學習目標中使用的參數
- 使用老的固定的參數 w-計算 Q-學習目標:
r + γ maxa'Q(s', a', w-) - 優化 Q-網絡和 Q-學習目標間的 MSE
L(w) = Es,a,r,s'~D?[(r + γ maxa'Q(s', a', w-) ? Q(s, a, w))] - 周期性地更新固定參數:w- ← w
穩定深度強化學習 3:回報/值范圍
- DQN 剪切回報在 [-1, +1] 范圍內
- 保證 Q-值不會變得太大
- 確保梯度有良好的條件 well-conditioned
- 不能夠區分小的或者大的回報
使用強化學習來玩 Atari 游戲
這確實是一個很自然的應用。
DQN 用在 Atari 游戲中
- 從像素 s 中端對端學習值 Q(s, a)
- 輸入狀態 s 就是來自過去 4 幀的原始像素的棧
- 輸出是對應于 18 個的手柄或者按鈕位置的 Q(s, a)
- 回報則在那個步驟根據分值進行改變
DQN 在 Atari 游戲中的結果
Demo 省略
DQN 起到多大作用
規范化 DQN
- 規范化 DQN 使用真實(非剪切)的回報信號
- 網絡輸出一個在穩定范圍內的標量值,
U(s, a,w) ∈ [?1, +1] - 輸出被重新規范值范圍并被轉化成 Q-值,
Q(s, a,w, σ, π) = σU(s, a,w) + π - π, σ 會調整成確保 U(s, a,w) ∈ [?1, +1]
- 網絡參數 w 被調整來確保 Q-值是一個常量
σ1U(s, a,w1) + π1 = σ2U(s, a,w2) + π2
Demo 省略(規范化的 DQN 在 PacMan 中的表現)
Gorila(GOogle ReInforcement Learning Architecture)
- 并行行動:產生新的交互
- 分布式回放記憶:保存上面產生的交互
- 并行學習:從回放的交互中進行梯度計算
- 分布式神經網絡:用上面產生的梯度來更新網絡
穩定深度強化學習 4:并行更新
Vanilla DQN 在并行時表現得不穩定。我們使用下面的方式克服這個問題:
- 丟棄陳舊的(stale)梯度
- 丟棄利群點梯度 g > μ + kσ
- AdaGrad 優化技術
Gorila 結果
使用 100 并行行動器和學習器
- Gorila 顯著地超過了 Vanilla DQN 的性能:49 個 Atari 游戲中的 41 個游戲中
- Gorila 達到了 2 倍與 Vanilla DQN 的分數:49 個 Atari 游戲中的 22 個游戲中
- Gorila 達到同樣的性能卻比 Vanilla DQN 快 10 倍:49 個 Atari 游戲中的 38 個游戲中
Gorila DQN 在 Atari 中的結果:
連續行動的確定性策略梯度
- 使用權重為 u 的深度網絡 a = π(s, u) 表示確定性策略
- 定義目標函數為全部折扣回報
J(u) = E[r1 + γr2 + γ2 r3 + ...] - 端對端通過 SGD 來優化目標函數
?J(u)/?u = Es[(?Qπ(s, a)/?a) (?π(s, u)/?u)] - 在提高 Q 最大的方向更新策略
- 即通過行動器 actor 來反向傳播評價(critic)
確定性 Actor-Critic 模型
使用兩個網絡:actor 和 critic
- critic 通過 Q-學習來估計當前策略的值
?L(w)/?w = E[(??r + γQ(s', π(s'), w) ? Q(s, a,w)) ?Q(s, a,w)/?w] - actor 按照提高 Q 的方向更新策略
?J(u)/?u = Es[?Q(s, a, w)/?a ?π(s, u)/?u]
確定性深度 Actor-Critic
- 簡易的 actor-critic 使用神經網絡會震蕩或者發散
- DDAC 給出了一個穩定解決方案
- 對 actor 和 critic 都使用經驗回放
- 使用目標 Q-網絡來避免震蕩
?L(w)/?w = Es,a,r,s'~D [??(r + γQ(s', π(s'), w?) ? Q(s, a, w)) ?Q(s, a, w)/?w]
?J(u)/?u = Es,a,r,s'~D [?Q(s, a, w)/?a ?π(s, u)/?u]
DDAC 進行連續行動控制
- 從原始像素 s 進行控制策略的端對端學習
- 輸入狀態 s 是最近 4 個幀的原始像素的棧
- 兩個分隔開的卷積網絡用于 Q 和 π
- 物理行為在 MuJoCo 中模擬
??
DDAC demo 略
基于模型的強化學習
其目標是學習一個環境轉移模型:
p(r, s'| s, a)
使用轉移模型進行規劃
- 例如,通過轉移模型來查找最優的行動
?
深度模型
- 使用深度網絡來表示轉移模型 p(r, s'| s, a)
- 定義目標函數衡量模型的好壞
- 比如,重構下一狀態的比特數目 (Gregor et al.)
- 通過 SGD 來優化目標函數
DARN Demo 略
基于模型的強化學習的挑戰
復合錯誤:
- 轉移模型轉移路徑符合的錯誤
- 長的狀態轉移路徑的結尾,回報可能完全錯誤
- 基于模型的強化學習在 Atari 中失效
深度估值/策略網絡可以隱式地進行規劃
- 網絡每層執行任意一步計算
- n層網絡可以向前看 n 步
- 到底是否需要轉移模型呢?
深度學習應用在圍棋中
Monte-Carlo 搜索
- Monte-Carlo 搜索(MCTS)模擬未來的轉移路徑
- 構建很大的擁有數百萬位置的查找搜素樹
- 目前最好的 19 X 19 的圍棋程序就是使用 MCTS 技術 (Gelly et al.)
卷積網絡
- 12-層卷積網絡用來訓練預測專家走法
- 原始卷積網絡(只看一個位置,不含搜索)
- 等價于擁有 105 位置的搜索樹 MoGo 的性能 (Maddison et al.)
結論
- 強化學習給出了一種通用的人工智能框架
- 強化學習問題可以通過端對端深度學習技術來解決
- 單一的 agent 現在已經能解決很多具有挑戰性的任務
- 強化學習+深度學習=人工智能
問題?
“The only stupid question is the one you never ask.” - Richard Sutton