David Silver全面解讀深度強(qiáng)化學(xué)習(xí):從基礎(chǔ)概念到AlphaGo
強(qiáng)化學(xué)習(xí)在與之相關(guān)的研究者中變得越來越流行,尤其是在 DeepMind 被 Google 收購以及 DeepMind 團(tuán)隊(duì)在之后的 AlphaGo 上大獲成功之后。在本文中,我要回顧一下 David Silver 的演講。
David Silver 的演講視頻可在這里查看:
http://techtalks.tv/talks/deep-reinforcement-learning/62360/
在這個(gè)演講視頻中,David 做了對深度學(xué)習(xí)(DL)和強(qiáng)化學(xué)習(xí)(RL)的基本介紹,并討論了如何將這兩種學(xué)習(xí)方法結(jié)合成一種方法。有三種不同的可以結(jié)合深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)的方法:基于價(jià)值(value-based)、基于策略(policy-based)以及基于模型(model-based)的方法。在這個(gè)演講中,David 提供了許多他們自己的實(shí)驗(yàn)的實(shí)例,最后以對 AlphaGo 的簡單討論結(jié)束了演講。
一、概覽
演講分為五個(gè)部分:
- 介紹深度學(xué)習(xí)
- 介紹強(qiáng)化學(xué)習(xí)
- 基于價(jià)值的深度強(qiáng)化學(xué)習(xí)
- 基于策略的深度強(qiáng)化學(xué)習(xí)
- 基于模型的深度強(qiáng)化學(xué)習(xí)
然而,當(dāng)我看完講座、理解了各個(gè)主題之后,便決定在上述的演講結(jié)構(gòu)中引入一個(gè)新的部分——做一個(gè)深度強(qiáng)化學(xué)習(xí)(Deep RL)的概述。這篇文章將會(huì)按照如下組織:
- 介紹深度學(xué)習(xí)
- 介紹強(qiáng)化學(xué)習(xí)
- 深度強(qiáng)化學(xué)習(xí)概述
- 基于價(jià)值的深度強(qiáng)化學(xué)習(xí)
- 基于策略的深度強(qiáng)化學(xué)習(xí)
- 基于模型的深度強(qiáng)化學(xué)習(xí)
希望上述的文章結(jié)構(gòu)能夠幫助大家更好地理解整個(gè)主題。我會(huì)重點(diǎn)關(guān)注演講視頻中的重點(diǎn),并盡可能去解釋一些問題的復(fù)雜概念。我也會(huì)給出我自己的觀點(diǎn)、建議以及一些可以幫助到大家的參考資料。
在深入研究更加復(fù)雜的強(qiáng)化學(xué)習(xí)(RL)主題之前,我會(huì)盡可能提供一些關(guān)于深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)的基本知識,因?yàn)閷Σ涣私膺@兩個(gè)主題的基本知識的人而言,這個(gè)演講是有一定難度的。希望這些基本知識可以幫助大家。如果你對自己的知識非常有信心,那么,你可以跳過文章的前兩部分。
二、深度學(xué)習(xí)介紹
什么是深度學(xué)習(xí)?
深度學(xué)習(xí)是表征學(xué)習(xí)的通用框架,它有以下特點(diǎn):
- 給定一個(gè)目標(biāo)(objective)
- 學(xué)習(xí)能夠?qū)崿F(xiàn)目標(biāo)的特征
- 直接的原始輸入
- 使用最少的領(lǐng)域知識
深度學(xué)習(xí)(deep learning)的意思就是深度表征(deep representation)。
如圖所示,一個(gè)深度表征由很多函數(shù)組成,它的梯度可以通過鏈?zhǔn)椒▌t來反向傳播。
「深(deep)」的程度可以由函數(shù)或者參數(shù)的數(shù)量來推斷。計(jì)算機(jī)硬件以及算法的發(fā)展使得計(jì)算機(jī)能夠在合適的時(shí)間范圍內(nèi)完成上圖所述的函數(shù)的計(jì)算,這是深度學(xué)習(xí)異軍突起背后的原因。
反向傳播(backpropagation)算法在解決深度問題中起著至關(guān)重要的作用。對任何一個(gè)想學(xué)習(xí)深度學(xué)習(xí)的人而言,理解反向傳播是很重要的。
請不要混淆深度神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)。深度學(xué)習(xí)是一項(xiàng)實(shí)現(xiàn)機(jī)器學(xué)習(xí)的技術(shù) [3]。它僅僅是一種機(jī)器學(xué)習(xí)的方法。而深度神經(jīng)網(wǎng)絡(luò)通常被人們用來理解深度表征。
深度神經(jīng)網(wǎng)絡(luò)通常包括以下內(nèi)容:
線性變換、非線性激活函數(shù)、以及關(guān)于輸出的損失函數(shù),例如均方差和對數(shù)似然值。
我們用隨機(jī)梯度下降的方法來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
如上圖所示,按照能夠使得損失函數(shù) L(W) 減小的方向去調(diào)整參數(shù) W.
實(shí)踐中一個(gè)常用的有效方法就是權(quán)值共享(Weight Sharing),它是減少參數(shù)數(shù)量的關(guān)鍵。有兩種神經(jīng)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)權(quán)值共享,即循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network)和卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeural Network)。
如上圖所示,循環(huán)神經(jīng)網(wǎng)絡(luò)在時(shí)間步長之間共享權(quán)值,卷積神經(jīng)網(wǎng)絡(luò)在空間區(qū)域共享權(quán)值。
三、強(qiáng)化學(xué)習(xí)簡介
什么是強(qiáng)化學(xué)習(xí)?
在這個(gè)講座中,David給出了一張圖表明強(qiáng)化學(xué)習(xí)在不同領(lǐng)域中的復(fù)雜地位,如下圖所示:
盡管我們在機(jī)器學(xué)習(xí)社區(qū)中廣泛使用強(qiáng)化學(xué)習(xí),但強(qiáng)化學(xué)習(xí)不僅僅是一個(gè)人工智能術(shù)語。它是許多領(lǐng)域中的一個(gè)中心思想,因此圖片的標(biāo)題是「強(qiáng)化學(xué)習(xí)的多個(gè)方面(Many Face of Reinforcement Learning)」。事實(shí)上,許多這些領(lǐng)域面臨著與機(jī)器學(xué)習(xí)相同的問題:如何優(yōu)化決策以實(shí)現(xiàn)最佳結(jié)果。
這就是決策科學(xué)(scienceof decision-making)。在神經(jīng)科學(xué)中,人類研究人腦并發(fā)現(xiàn)了一種遵循著名的強(qiáng)化算法的獎(jiǎng)勵(lì)系統(tǒng)。在心理學(xué)中,人們研究的經(jīng)典條件反射和操作性條件反射,也可以被認(rèn)為是一個(gè)強(qiáng)化問題。類似的,在經(jīng)濟(jì)學(xué)中我們研究理性博弈論;在數(shù)學(xué)中我們研究運(yùn)籌學(xué);在工程學(xué)中我們研究優(yōu)化控制。所有的這些問題都可以被認(rèn)為一種強(qiáng)化學(xué)習(xí)問題—它們研究同一個(gè)主題,即為了實(shí)現(xiàn)最佳結(jié)果而優(yōu)化決策。
強(qiáng)化學(xué)習(xí)是一個(gè)由行為心理學(xué)啟發(fā)的機(jī)器學(xué)習(xí)領(lǐng)域 [4]。舉個(gè)例子,一個(gè)學(xué)生名叫 Mike,如果他今天閱讀了一篇與強(qiáng)化學(xué)習(xí)相關(guān)的論文,他將會(huì)在昨天的分?jǐn)?shù)的基礎(chǔ)上獲得 1 分的獎(jiǎng)勵(lì)(稱作正反饋)。如果他打了一整天的籃球,他的分?jǐn)?shù)將會(huì)被扣掉 1 分(稱為負(fù)反饋)。因而,如果 Mike 想每天都想獲得更多的獎(jiǎng)勵(lì)(正反饋),他會(huì)每天都去學(xué)習(xí)。
「本質(zhì)上,這些都是閉環(huán)系統(tǒng),因?yàn)閷W(xué)習(xí)系統(tǒng)的行為會(huì)影響它之后的輸入。此外,(1) 學(xué)習(xí)系統(tǒng)沒有像很多其它形式的機(jī)器學(xué)習(xí)方法一樣被告知應(yīng)該做出什么行為;(2) 相反,必須在嘗試了之后才能發(fā)現(xiàn)哪些行為會(huì)導(dǎo)致獎(jiǎng)勵(lì)的最大化;(3) 在大多數(shù)有趣并且有挑戰(zhàn)性的例子中,當(dāng)前的行為可能不僅僅會(huì)影響即時(shí)獎(jiǎng)勵(lì),還會(huì)影響下一步的獎(jiǎng)勵(lì)以及后續(xù)的所有獎(jiǎng)勵(lì)。這三個(gè)特征是強(qiáng)化學(xué)習(xí)中最重要的三個(gè)區(qū)分特征,作為閉環(huán)系統(tǒng)的本質(zhì)、沒有關(guān)于該采取什么行動(dòng)和后續(xù)的包括獎(jiǎng)勵(lì)信號和完成學(xué)習(xí)的時(shí)間的直接指示。」
強(qiáng)化學(xué)習(xí)和標(biāo)準(zhǔn)監(jiān)督學(xué)習(xí)的區(qū)別就在于從來不呈現(xiàn)正確的輸入/輸出對,也不存在次優(yōu)化的行為被顯式地修正。此外,還關(guān)注在線性能。在線性能涉及在對未知領(lǐng)域的探索和當(dāng)前領(lǐng)域知識的利用之間尋求一個(gè)平衡。
前面說了一下什么是強(qiáng)化學(xué)習(xí)的問題,那么,我們?yōu)槭裁匆P(guān)注強(qiáng)化學(xué)習(xí)呢? 簡而言之,強(qiáng)化學(xué)習(xí)是一個(gè)通用的決策框架。實(shí)際上我們關(guān)心的是開發(fā)一個(gè)能夠在現(xiàn)實(shí)世界中做出決策的代理(agent)。我們不僅想給它算法并讓它采取行動(dòng)。我們還想讓代理做決策。而強(qiáng)化學(xué)習(xí)可以讓代理學(xué)會(huì)做決策。
- 強(qiáng)化學(xué)習(xí)用于具有行動(dòng)能力的代理
- 每一個(gè)動(dòng)作(action)都能影響代理將來的狀態(tài)(state)
- 通過一個(gè)標(biāo)量的獎(jiǎng)勵(lì)(reward)信號來衡量成功
- 目標(biāo):選擇一系列行動(dòng)來最大化未來的獎(jiǎng)勵(lì)
在每一個(gè)時(shí)刻 t,代理會(huì)執(zhí)行一個(gè)動(dòng)作 at, 收到一個(gè)觀測信號 Ot, 收到一個(gè)標(biāo)量獎(jiǎng)勵(lì) rt。外界環(huán)境會(huì)收到一個(gè)動(dòng)作 at, 發(fā)出一個(gè)觀測信號 Ot+1,發(fā)出一個(gè)獎(jiǎng)勵(lì)信號 rt+1。
由于每個(gè)問題都有其各自不同的特點(diǎn),所以,為了實(shí)現(xiàn)「通用」的目標(biāo),我們需要找到它們的共同點(diǎn)和一些規(guī)律性的東西。希望大家可以在沒有解釋的情況下理解上圖的內(nèi)容。圖中的大腦是我們所說的代理,圖中的地球是代理所處的環(huán)境。任何時(shí)刻,當(dāng)代理執(zhí)行一個(gè)動(dòng)作 at 之后,它將會(huì)收到對環(huán)境的觀測量 Ot 以及來自環(huán)境的獎(jiǎng)勵(lì) rt,同時(shí),收到動(dòng)作 at 之后,環(huán)境會(huì)發(fā)出下一個(gè)觀測量 Ot+1,以及獎(jiǎng)勵(lì) rt+1。這就引入了一個(gè)新的概念:狀態(tài)。
如上圖所示,狀態(tài)是所有經(jīng)歷(experience)的總和,經(jīng)歷就是上圖中的第一個(gè)序列函數(shù)。某時(shí)刻 t 的狀態(tài) st 是該時(shí)刻以及之前所有時(shí)刻的所有觀測量、獎(jiǎng)勵(lì)以及動(dòng)作序列的函數(shù)。但是,當(dāng)代理所處的環(huán)境具有一種我們所說的完全可觀測性之后,就有了上圖中的第二個(gè)狀態(tài)函數(shù)——某時(shí)刻的狀態(tài)僅僅是該時(shí)刻的觀測值 Ot 的函數(shù),這樣一來,整個(gè)經(jīng)歷似乎具備了某種類似于馬爾可夫性的性質(zhì)。
然后,就有了三個(gè)新的想法:策略(policy)、價(jià)值函數(shù)(value function)和模型(model)。
一個(gè)強(qiáng)化學(xué)習(xí)系統(tǒng)的主要組成
一個(gè)強(qiáng)化學(xué)習(xí)的代理可能包含一個(gè)或多個(gè)下述的組成:
- 策略:代理的行為函數(shù)
- 價(jià)值函數(shù) (Value function):評價(jià)一個(gè)狀態(tài)或者行為的好壞及其程度
- 模型(Model):代理對環(huán)境的表征
策略指的是代理的行為,它是從狀態(tài)到行為的映射。包括確定策略和隨機(jī)策略。
- 確定策略:a =π(s)
- 隨機(jī)策略:π(a|s)= P[a|s]
1. 價(jià)值函數(shù)
價(jià)值函數(shù)是對未來獎(jiǎng)勵(lì)的預(yù)測,表示在狀態(tài) s 下,執(zhí)行動(dòng)作 a 會(huì)得到多少獎(jiǎng)勵(lì)?
Q 價(jià)值函數(shù)表示獎(jiǎng)勵(lì)總值的期望。表示在給定一個(gè)策略π,貼現(xiàn)因子γ,和狀態(tài) s 下,執(zhí)行動(dòng)作 a,獲得獎(jiǎng)勵(lì)的綜合的期望是多少?
Q 價(jià)值函數(shù)還能夠分解為上圖描述的貝爾曼方程。
貝爾曼方程,以其提出者 Richard Bellman 命名,也被稱作動(dòng)態(tài)規(guī)劃方程。它是與動(dòng)態(tài)規(guī)劃有關(guān)的數(shù)學(xué)優(yōu)化相關(guān)的優(yōu)化問題的必要條件。
優(yōu)化價(jià)值函數(shù)就是使得價(jià)值函數(shù)達(dá)到可實(shí)現(xiàn)的最大值。以此為條件就會(huì)得到整個(gè)問題的最優(yōu)解,以及相應(yīng)的最優(yōu)策略π*。
2. 模型:
整個(gè)模型就是從經(jīng)歷中學(xué)習(xí)的過程。
由于我們已經(jīng)定義了強(qiáng)化學(xué)習(xí)代理的三個(gè)組成部分,所以不難理解,優(yōu)化其中的任何一個(gè)都會(huì)得到一個(gè)較好的結(jié)果。
有三種實(shí)現(xiàn)強(qiáng)化學(xué)習(xí)的途徑,分別基于不同的原則。即:基于價(jià)值的強(qiáng)化學(xué)習(xí),基于策略的強(qiáng)化學(xué)習(xí),以及基于模型的強(qiáng)化學(xué)習(xí)。
- 基于價(jià)值的強(qiáng)化學(xué)習(xí),需要估計(jì) Q 價(jià)值函數(shù)的最大值 Q*,這是在任意策略下能夠得到的最大 Q 價(jià)值函數(shù)。
- 基于策略的強(qiáng)化學(xué)習(xí),直接搜索最佳的策略π*,這將得到能夠最大化未來獎(jiǎng)勵(lì)的策略π*。
- 基于模型的強(qiáng)化學(xué)習(xí),構(gòu)建一個(gè)環(huán)境的模型,用模型進(jìn)行諸如前向搜索的規(guī)劃。
四、深度強(qiáng)化學(xué)習(xí)(DeepReinforcement Learning)
什么是深度強(qiáng)化學(xué)習(xí)?簡言之,就是強(qiáng)化學(xué)習(xí)+深度學(xué)習(xí)。
將強(qiáng)化學(xué)習(xí)和深度學(xué)習(xí)結(jié)合在一起,我們尋求一個(gè)能夠解決任何人類級別任務(wù)的代理。強(qiáng)化學(xué)習(xí)定義了優(yōu)化的目標(biāo),深度學(xué)習(xí)給出了運(yùn)行機(jī)制——表征問題的方式以及解決問題的方式。強(qiáng)化學(xué)習(xí)+深度學(xué)習(xí)就得到了能夠解決很多復(fù)雜問題的一種能力——通用智能。
DeepMind 中深度強(qiáng)化學(xué)習(xí)的例子有:
- 游戲:Atari 游戲、撲克、圍棋
- 探索世界:3D 世界、迷宮
- 控制物理系統(tǒng):操作、步行、游泳
- 與用戶互動(dòng):推薦、優(yōu)化、個(gè)性化
那么,我們?nèi)绾谓Y(jié)合強(qiáng)化學(xué)習(xí)和深度學(xué)習(xí)呢?
(1)用深度神經(jīng)網(wǎng)絡(luò)來代表價(jià)值函數(shù)
- 策略
- 模型
(2)用隨機(jī)梯度下降來優(yōu)化損失函數(shù)
下面的三部分,我們分別討論三種結(jié)合強(qiáng)化學(xué)習(xí)和深度學(xué)習(xí)的方法。
五、基于價(jià)值的深度強(qiáng)化學(xué)習(xí)
基于價(jià)值的深度強(qiáng)化學(xué)習(xí)的基本思想就是建立一個(gè)價(jià)值函數(shù)的表示,我們稱之為 Q 函數(shù)。
其中:
- s =狀態(tài)
- a =動(dòng)作
- w =權(quán)值
正如我們在上邊圖片中看到的一樣,基本上就是一個(gè)黑盒子,將狀態(tài)和動(dòng)作作為輸入,并輸出 Q 和一些權(quán)值參數(shù)。
我們會(huì)用到基于 Q學(xué)習(xí)的基本方法。這種方法會(huì)想出我們需要的損失函數(shù),而且是以貝爾曼方程作為開始的。
如上圖所示,我們等號右邊作為優(yōu)化的目標(biāo)?,F(xiàn)在逐步解釋這個(gè)算法:將左側(cè)的內(nèi)容移到等號右邊。
隨后我們用隨機(jī)梯度下降的方法去最小化最小均方差 (MSE),一般這個(gè)方法在優(yōu)化的過程中都會(huì)奏效的。如果每一個(gè)狀態(tài)和動(dòng)作都有一個(gè)單獨(dú)的值,那么在這個(gè)方法下,價(jià)值函數(shù)會(huì)收斂到一個(gè)最優(yōu)值。不幸的是,由于我們使用的是神經(jīng)網(wǎng)絡(luò),會(huì)有兩個(gè)問題出現(xiàn):
- 采樣之間的相關(guān)性:加入我是一個(gè)四處走動(dòng)的機(jī)器人,通過實(shí)際數(shù)據(jù)來學(xué)習(xí)。我將算法中的每一步視為采取行動(dòng)的狀態(tài),如此一來,這些狀態(tài)和動(dòng)作就會(huì)和上一次執(zhí)行的動(dòng)作非常接近。也就是說,我們采取的方法中存在很強(qiáng)的相關(guān)性。
- 我們從中學(xué)習(xí)到的目標(biāo)依賴于目標(biāo)本身,因此這些都是非平穩(wěn)的動(dòng)態(tài)。正是由于非平穩(wěn)動(dòng)態(tài)的存在,我們的近似函數(shù)會(huì)螺旋式失控,并且導(dǎo)致我們的算法崩潰。
如果我們繼續(xù)使用神經(jīng)網(wǎng)絡(luò),上述兩個(gè)問題是不會(huì)被解決的。
為了實(shí)現(xiàn)穩(wěn)定的深度強(qiáng)化學(xué)習(xí),我們引入的第一個(gè)方法是被稱為 DQN 的深度強(qiáng)化網(wǎng)絡(luò)。如下面的 PPT 所描述的,這在 Q 學(xué)習(xí)的基礎(chǔ)上引入了根本的提升。其中的思想非常簡單:通過讓代理從自己的經(jīng)歷中構(gòu)建數(shù)據(jù)集,消除非平穩(wěn)動(dòng)態(tài)中的所有相關(guān)性。然后從數(shù)據(jù)集中抽取一些經(jīng)歷并進(jìn)行更新。
在解釋完前面的東西之后,David Silver 給大家舉了一個(gè)他們 DeepMind 團(tuán)隊(duì)的一個(gè)例子:Atari 游戲。他們訓(xùn)練出了一個(gè)能夠?qū)? Atari 游戲玩的很好的系統(tǒng)。相信下面的插圖能夠有助于讀者理解代理和環(huán)境(包括狀態(tài)、動(dòng)作以及獎(jiǎng)勵(lì))之間的關(guān)系
Atari 中的 DQN
- 從狀態(tài) s 中端對端地學(xué)習(xí) Q 價(jià)值函數(shù)Q(s,a)。
- 輸入狀態(tài) s 是最近 4 幀的原始像素組成的堆棧
- 輸出的 Q 價(jià)值函數(shù) Q(s,a) 用于 18個(gè)操縱桿/按鈕的位置
- 獎(jiǎng)勵(lì)就是每一步動(dòng)作所對應(yīng)的得分的變化
這是一個(gè)卷積神經(jīng)網(wǎng)絡(luò) (CNN)
網(wǎng)絡(luò)結(jié)構(gòu)和超參數(shù)在所有的游戲中都是固定不變的。
1. 采用深度 Q 網(wǎng)絡(luò)的 Atari 的 Demo:
- Nature 上關(guān)于深度 Q 網(wǎng)絡(luò) (DQN) 論文:http://www.nature.com/articles/nature14236
- GoogleDeep Mind 團(tuán)隊(duì)深度 Q 網(wǎng)絡(luò) (DQN) 源碼:http://sites.google.com/a/deepmind.com/dqn/
繼 Nature 上發(fā)表深度 Q 網(wǎng)絡(luò)之后,有好多關(guān)于 DQN 的改進(jìn)。但 David 主要關(guān)注以下三點(diǎn):
2. 雙深度 Q 網(wǎng)絡(luò)(Double DQN):
要理解第一個(gè)改進(jìn),我們首先必須明白 Q 學(xué)習(xí)中存在的一個(gè)問題。問題就踹 MAX 算子上。事實(shí)上那樣得到的近似值不足以做出決定,并且這個(gè)偏差可能在實(shí)際應(yīng)用中導(dǎo)致一系列問題。因此,為了解決這個(gè)問題,我們用了兩個(gè)深度 Q 網(wǎng)絡(luò)把評價(jià)動(dòng)作的方式分解為兩個(gè)路徑。一個(gè)深度 Q 網(wǎng)絡(luò)用來選擇動(dòng)作,另一個(gè)用來評價(jià)動(dòng)作,這在實(shí)踐中確實(shí)很有幫助。
確定優(yōu)先級的經(jīng)歷回放:
第二個(gè)改進(jìn)就是我們做經(jīng)歷回放的方式。舊方法做經(jīng)歷回放的時(shí)候會(huì)給所有的經(jīng)歷附一個(gè)相同的權(quán)重。然而相等的權(quán)重并不是一個(gè)好的思想,如果給所有的經(jīng)歷給一個(gè)優(yōu)先級,你可能做得更好一些。我們僅僅采用了以此誤差的絕對值,它表示在一個(gè)時(shí)刻的某一個(gè)特定狀態(tài)有多么好或者多么差。那些你并沒有很好的理解的經(jīng)歷才是所有的經(jīng)歷中你最想回放的。因?yàn)樾枰嗟母聛沓C正你的鍵值。
3. 決斗網(wǎng)絡(luò)(DuelingNetwork)
第三個(gè)改進(jìn)就是把Q 網(wǎng)絡(luò)分成兩個(gè)信道。一部分用來計(jì)算當(dāng)你忽略了一些動(dòng)作的時(shí)候你會(huì)得到多少獎(jiǎng)勵(lì)(幻燈片中的action-independent),另一部分用來計(jì)算實(shí)際中當(dāng)你采取了某一個(gè)特定的動(dòng)作之后你會(huì)做得多么好。然后將兩個(gè)網(wǎng)絡(luò)的計(jì)算結(jié)果求和。然后取兩者的總和。正如前面視頻中演示的,如果你把這個(gè)結(jié)果正則化,結(jié)果會(huì)發(fā)現(xiàn)這兩個(gè)通道會(huì)閃爍,因?yàn)樗鼈冇胁煌臄U(kuò)展(scaling)屬性。將兩個(gè)網(wǎng)絡(luò)分開,去幫助神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)更多的東西,這實(shí)際上是很有幫助的。
它們通過在Google 利用下面的結(jié)構(gòu)(Gorila)來讓系統(tǒng)加速,這很適合海量數(shù)據(jù)。
Gorila 結(jié)構(gòu)運(yùn)行在很多不同的機(jī)器上,這讓它們可以共同運(yùn)行深度 Q 網(wǎng)絡(luò)。我們有許多個(gè)代理并行運(yùn)行的實(shí)例,有我們環(huán)境的許多不同的實(shí)例,這些環(huán)境都是基于許多不同的機(jī)器,這樣便能讓我們在力所能及的情況下生成盡可能多的經(jīng)歷。
這些經(jīng)歷被存放在一個(gè)分布式的經(jīng)歷回放記憶(experience replay memory)中。本質(zhì)上就是將所有并行的代理的經(jīng)歷收集起來并且以分布式的方式存儲。我們由很多學(xué)習(xí)器能夠在這些經(jīng)歷中并行采樣。一旦你有了這個(gè)經(jīng)歷回放的緩存,我們可以從中讀取很多不同的東西并且將其應(yīng)用于系統(tǒng)的更新上。然后,從那些學(xué)習(xí)器返回的參數(shù)更新將被共享到我們存儲的分布式神經(jīng)網(wǎng)絡(luò)中,然后在實(shí)際上運(yùn)行在這些機(jī)器上的每個(gè)代理共享。
那么,在沒有Google 的資源的情況下,我們?nèi)绾巫霾拍芗铀購?qiáng)化學(xué)習(xí)呢?可以使用異步強(qiáng)化學(xué)習(xí):
- 利用標(biāo)準(zhǔn) CPU 的多線程
- 將一個(gè)代理的多個(gè)實(shí)例并行執(zhí)行
- 線程間共享網(wǎng)絡(luò)參數(shù)
- 并行地消除數(shù)據(jù)地相關(guān)性
- 經(jīng)歷回放的可替代品
- 在單個(gè)機(jī)器上進(jìn)行類似于 Gorila 的加速!
六、基于策略的深度強(qiáng)化學(xué)習(xí)
深度策略網(wǎng)絡(luò)
策略梯度
Actor-Critic算法
異步優(yōu)勢Actor Critic 算法(A3C)
Labyrinth中的異步優(yōu)勢Actor Critic 算法(A3C)
從輸入的像素中進(jìn)行 softmax 策略 π(a|st) 的端到端學(xué)習(xí)。對環(huán)境的觀測量 ot 是當(dāng)前幀的原始像素。狀態(tài) st= f(o1, …, ot) 是一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)(LSTM)。網(wǎng)絡(luò)在策略π(a|s) 下同時(shí)輸出價(jià)值 V(s) 和激活函數(shù) softmax 的結(jié)果值。任務(wù)是收集蘋果(+1 分獎(jiǎng)勵(lì))和逃跑(+10 分獎(jiǎng)勵(lì))。
1. 我們?nèi)绾翁幚砀呔S連續(xù)動(dòng)作空間?
與深度 Q 網(wǎng)絡(luò)類似,我們在這里有 DPG 算法。希望你現(xiàn)在對深度 Q 網(wǎng)絡(luò)有了較好的理解,這將有助于你理解下一部分內(nèi)容。
2. 確定策略梯度(DPG/DeterministicPolicy Gradient)算法
下面是 DavidSilver 關(guān)于 DPG 的論文的鏈接:
http://www.jmlr.org/proceedings/papers/v32/silver14.pdf_
深度確定策略梯度
模擬物理中的確定策略梯度算法:
在 MuJoCo 上模擬物理域
- 從原始輸入的狀態(tài) s 中進(jìn)行控制策略的端對端學(xué)習(xí)
- 輸入狀態(tài) s 是最近 4 個(gè)幀 (4 個(gè)狀態(tài)) 的原始數(shù)據(jù)
- 對價(jià)值 Q 和策略π使用兩個(gè)分離的卷積神經(jīng)網(wǎng)絡(luò)
- 策略π被朝著能夠最大程度提成價(jià)值 Q 的方向調(diào)節(jié)
圖為兩個(gè)分離的卷積神經(jīng)網(wǎng)絡(luò),分別對應(yīng) Q 價(jià)值函 Q(s,a)和策略π(s)。
然后我們來看一看其他的經(jīng)典游戲,例如撲克。我們能夠使用深度強(qiáng)化學(xué)習(xí)的方法在多代理的游戲中找到納什均衡嗎?納什均衡就像多代理決策問題中的解決方案。在這個(gè)均衡下,每個(gè)代理都滿足它們的策略,沒人愿意偏離當(dāng)前的策略。
因此,如果我們找到了納什均衡,我們就解決了這個(gè)小問題。很多研究都在關(guān)注如何在更加龐大、有趣的博弈游戲中實(shí)現(xiàn)這種均衡。
這里的思想是,我們首先學(xué)習(xí)一個(gè)價(jià)值 Q 網(wǎng)絡(luò),然后學(xué)習(xí)一個(gè)策略網(wǎng)絡(luò),然后挑選一些最佳相應(yīng)和平均最佳相應(yīng)之間的動(dòng)作。
代理在游戲中進(jìn)行虛擬自我對抗 (FSP)。
下面的幻燈片闡述了在德州撲克進(jìn)行 FSP 的結(jié)果:隨著迭代次數(shù)的增加,不同的算法都收斂了。
3. 基于模型的深度強(qiáng)化學(xué)習(xí)
學(xué)習(xí)環(huán)境的模型
- Demo:Atari 的生成模型
- 復(fù)雜的誤差使規(guī)劃富有挑戰(zhàn)傳遞模型中的誤差會(huì)在軌跡上復(fù)合
- 規(guī)劃的軌跡會(huì)與執(zhí)行的軌跡有所不同
- 在長時(shí)間的不正常軌跡結(jié)束時(shí),獎(jiǎng)勵(lì)是完全錯(cuò)誤的
學(xué)習(xí)一個(gè)模型,即如何用深度學(xué)習(xí)完成基于模型的強(qiáng)化學(xué)習(xí),并不是這個(gè)問題的難點(diǎn)。我們知道了如何規(guī)定學(xué)習(xí)模型的問題。事實(shí)上這不過是一個(gè)監(jiān)督學(xué)習(xí)的問題罷了「如果你想預(yù)測:假設(shè)我采取了這個(gè)動(dòng)作之后,環(huán)境會(huì)變成什么樣子」。在這次講座中,他沒有太多地談?wù)撨@個(gè)問題,他只是展示了一個(gè)來自密歇根大學(xué)的視頻,演示你如何能夠建立一個(gè)模型,以及建立這個(gè)模型有多困難。這是該視頻的屏幕截圖:左側(cè)是預(yù)測,右側(cè)是真實(shí)情況。但是,這是很難實(shí)現(xiàn)的。
然而,如果我們有一個(gè)完美的模型呢?也就是說,游戲規(guī)則是已知的。是的,我們知道,AlphaGo 就是這樣的。
Nature 上關(guān)于 AlphaGo 的論文:
http://www.nature.com/articles/nature16961
AlphaGo 相關(guān)的資源: deepmind.com/research/alphago/
為什么下圍棋對于計(jì)算機(jī)而言是很困難的?
暴力搜索是很難處理的。
- 搜索空間是巨大的
- 對計(jì)算機(jī)而言,評價(jià)哪一個(gè)玩家占據(jù)上風(fēng),「幾乎是不可能的」。但是在一些諸如象棋的游戲中,就比較容易判斷了。
過去很多人都認(rèn)為找到一個(gè)解決這個(gè)問題的好方法是不可能的。
DeepMind 建立了一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(CNN),這個(gè)網(wǎng)絡(luò)將每一個(gè)狀態(tài)(只要由棋子落下)看作一幅圖像。然后用卷積神經(jīng)網(wǎng)絡(luò)去構(gòu)造兩個(gè)不同的神經(jīng)網(wǎng)絡(luò)。
一個(gè)代表價(jià)值網(wǎng)絡(luò)
另一個(gè)代表策略網(wǎng)絡(luò):
為了訓(xùn)練它,我們結(jié)合了監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí),共有三個(gè)步驟,如下所示:
經(jīng)過每一步之后的表現(xiàn):
價(jià)值網(wǎng)絡(luò)和策略網(wǎng)絡(luò)的效果:
七、總結(jié)
- 通用、穩(wěn)定并且可拓展的強(qiáng)化學(xué)習(xí)現(xiàn)在是可能的
- 用深度網(wǎng)絡(luò)去代表價(jià)值、策略和模型
- 在 Atari、Labyrinth、物理、撲克、圍棋中取得了成功
- 使用一系列深度強(qiáng)化學(xué)習(xí)的范例
強(qiáng)化學(xué)習(xí)是一個(gè)受行為心理學(xué)啟發(fā)的機(jī)器學(xué)習(xí)領(lǐng)域。它正在變得越來越流行。在需要構(gòu)建一個(gè)可以像人類一樣甚至超越人類能力去做一些事的人工智能時(shí),它是非常有用的,比如 AlphaGo。然而,在我看來,在開始學(xué)習(xí)強(qiáng)化學(xué)習(xí)之前,我們首先應(yīng)該理解一些基本的機(jī)器學(xué)習(xí)相關(guān)的知識。良好的數(shù)學(xué)背景將會(huì)非常有助于你的學(xué)習(xí),并且,這至關(guān)重要!
David Silver 目前任職于 Google DeepMind 團(tuán)隊(duì)。他的演講可以幫助我們獲得對強(qiáng)化學(xué)習(xí)(RL)和深度強(qiáng)化學(xué)習(xí)(Deep RL)的基本理解,這不是一件特別難的事。
【本文是51CTO專欄機(jī)構(gòu)機(jī)器之心的原創(chuàng)譯文,微信公眾號“機(jī)器之心( id: almosthuman2014)”】