□文/Vitaly Kurin □編譯/房曉楠、陳亮
視野
從強(qiáng)化學(xué)習(xí)到模仿學(xué)習(xí),true AI有多遠(yuǎn)?
□文/Vitaly Kurin □編譯/房曉楠、陳亮
在本文中,Statsbot團(tuán)隊(duì)請(qǐng)計(jì)算機(jī)科學(xué)家Vitaly Kurin簡(jiǎn)要介紹了模仿學(xué)習(xí),并概述強(qiáng)化學(xué)習(xí)的基本知識(shí)。
生物有機(jī)體是極其復(fù)雜的。即使是諸如蒼蠅或蠕蟲這樣相對(duì)簡(jiǎn)單的生物也是如此。他們不僅能夠在現(xiàn)實(shí)世界中成功生存,而且對(duì)環(huán)境的變化有著極強(qiáng)的適應(yīng)力。人類可以提前制定計(jì)劃,可以根據(jù)新的信息改變計(jì)劃,我們還可以與他人合作,以便更有效地執(zhí)行我們的計(jì)劃。
科學(xué)以及諸如歐洲核子研究組織(CERN)或阿雷西沃天文臺(tái)的巨大無(wú)線電望遠(yuǎn)鏡等科研項(xiàng)目都是人類協(xié)作和規(guī)劃藝術(shù)的完美印證。
所有試圖創(chuàng)造一個(gè)具有更小自主權(quán)的人造有機(jī)體的嘗試都表明,多年的進(jìn)化過(guò)程并不是徒勞的,而建立這樣的有機(jī)體是一項(xiàng)艱巨的任務(wù)。
不錯(cuò),我們承認(rèn),我們現(xiàn)在可以在國(guó)際象棋或圍棋中擊敗最優(yōu)秀的選手,我們可以在Atari 2600的視頻彈球中獲得不可思議的分?jǐn)?shù),甚至,我們可以在撲克賽中挑戰(zhàn)人類,從而使其破產(chǎn)。那么我們是否能打開一瓶香檳慶祝勝利?恐怕不能。
是的,機(jī)器學(xué)習(xí)最近取得了突破性進(jìn)步。新的深度學(xué)習(xí)理念與舊版本的結(jié)合使我們能夠在諸如計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別和文本翻譯等許多領(lǐng)域得以進(jìn)步。
強(qiáng)化學(xué)習(xí)也從它與深度學(xué)習(xí)的結(jié)合中受益匪淺。而對(duì)于深度強(qiáng)化學(xué)習(xí)的成功,想必你也早有耳聞,例如在Atari 2600比賽中取得超越人類的成績(jī),戰(zhàn)勝圍棋高手,以及讓機(jī)器人學(xué)習(xí)跑酷(parkou)。
來(lái)源:statsbot博客
但是,我們不得不承認(rèn),它們?cè)诂F(xiàn)實(shí)世界中的成功運(yùn)作要比玩游戲困難得多。想象一下,一個(gè)孩子在擁擠的市中心騎著自行車,或者一個(gè)人以每小時(shí)200英里的時(shí)速開著保時(shí)捷飛奔在高速公路上。面對(duì)這樣的現(xiàn)實(shí)與想象之間的差距,我們必須承認(rèn),距離目標(biāo)的實(shí)現(xiàn),還有很遠(yuǎn)的路要走。
典型的機(jī)器學(xué)習(xí)方法是從頭開始對(duì)模型進(jìn)行訓(xùn)練。給它一百萬(wàn)張圖片和一些時(shí)間,讓它對(duì)其進(jìn)行識(shí)別;給它一個(gè)星期,讓它玩太空入侵者,直到它能夠達(dá)到一個(gè)可以接受的分?jǐn)?shù)。而我們,作為人類,與其有著不同的訴求。
當(dāng)一個(gè)人開始玩一個(gè)他從未見過(guò)的游戲時(shí),他已經(jīng)擁有了大量的預(yù)先信息。在“蒙特祖瑪?shù)膹?fù)仇”這款游戲中,如果他看到了一扇門,他就會(huì)意識(shí)到,在某個(gè)地方應(yīng)該會(huì)有一把鑰匙,他需要找到鑰匙。當(dāng)他找到鑰匙的時(shí)候,他記得那扇關(guān)著的門是在他曾穿過(guò)的兩個(gè)房間的后面,然后他會(huì)返回從而打開那扇門。而當(dāng)他看到一個(gè)梯子時(shí),他意識(shí)到可以爬上去,因?yàn)樗呀?jīng)做了幾百次這樣的事情了。如果我們可以以某種方式將人類對(duì)世界的了解轉(zhuǎn)移給智能體將會(huì)怎樣呢?我們?cè)撊绾翁崛∷邢嚓P(guān)信息呢?我們?cè)撊绾蝿?chuàng)建一個(gè)基于此的模型呢?這時(shí)候有一種方式就派上用場(chǎng)了,我們稱之為模仿學(xué)習(xí)。
模仿學(xué)習(xí)并不是唯一一個(gè)利用人類數(shù)據(jù)的好方法。一些研究人員也稱之為“學(xué)徒學(xué)習(xí)”(apprenticeship learning),而另外一些研究人員將其稱為“從演示中學(xué)習(xí)”(Learningfrom Demonstration)。從我們的角度來(lái)看,所有這些標(biāo)題之間并沒(méi)有實(shí)質(zhì)性的區(qū)別,我們將從現(xiàn)在開始稱其為模仿學(xué)習(xí)。
為了引入模仿學(xué)習(xí),我們首先需要了解強(qiáng)化學(xué)習(xí)的基礎(chǔ)知識(shí)。
其實(shí)要得到強(qiáng)化學(xué)習(xí)的基本概念并不難。例如,有一些智能體,我們希望這些智能體能夠?qū)W習(xí)一些任務(wù)。那么我們可以進(jìn)行假設(shè),有一個(gè)Atari 2600控制臺(tái),智能體可以通過(guò)訪問(wèn)操縱桿,來(lái)觀察屏幕上發(fā)生了什么。
假設(shè),我們以每秒60次的速度給予智能體一個(gè)屏幕截圖,并問(wèn)它想要按什么按鈕。如果我們的智能體表現(xiàn)出色,它可以看到它的分?jǐn)?shù)在增加(正強(qiáng)化),否則我們可以給它一個(gè)懲罰作為負(fù)獎(jiǎng)勵(lì)(負(fù)強(qiáng)化)。漸漸地,通過(guò)不斷地嘗試和不停地犯錯(cuò),智能體開始明白,它最好避免去做一些行為,而去做一些能給它帶來(lái)獎(jiǎng)勵(lì)的事情。
常用強(qiáng)化學(xué)習(xí)的設(shè)置
我們可以以更為正式的數(shù)學(xué)方式描述上面的過(guò)程:將上述的強(qiáng)化學(xué)習(xí)框架(觀察—?jiǎng)幼鳌@得獎(jiǎng)勵(lì)和下一個(gè)狀態(tài))作為馬爾可夫決策過(guò)程(MDP):
其中:
S是一組狀態(tài),
A是一套動(dòng)作,
R是獎(jiǎng)勵(lì)函數(shù),
T是轉(zhuǎn)換函數(shù),
γ是貼現(xiàn)因子,權(quán)衡當(dāng)前獎(jiǎng)勵(lì)和長(zhǎng)遠(yuǎn)獎(jiǎng)勵(lì)之間的平衡。有一種普遍的觀點(diǎn)認(rèn)為,相較于遙遠(yuǎn)的未知,人類更喜歡當(dāng)前的獎(jiǎng)勵(lì),盡管有一些人認(rèn)為這種觀點(diǎn)是基于數(shù)學(xué)環(huán)境得出的應(yīng)該與現(xiàn)實(shí)有所偏差。
我們還需要對(duì)用于下一節(jié)的策略函數(shù)進(jìn)行定義,Policy是一個(gè)函數(shù),它返回一個(gè)給定狀態(tài)的動(dòng)作:
而實(shí)際上,在解決馬爾可夫決策過(guò)程時(shí)我們的最終目標(biāo)是學(xué)習(xí)一種策略,以便最大化智能體的獎(jiǎng)勵(lì)。
舉一個(gè)馬爾可夫決策過(guò)程的例子,圓圈代表狀態(tài),帶有綠色標(biāo)簽的箭頭是動(dòng)作,紅色標(biāo)簽是動(dòng)作的獎(jiǎng)勵(lì),而方塊是終端狀態(tài)。綠色數(shù)字標(biāo)簽是轉(zhuǎn)換概率。
一個(gè)學(xué)生現(xiàn)在位于藍(lán)色圓圈處,學(xué)習(xí)對(duì)他來(lái)說(shuō),很難而且有些無(wú)聊。他決定打開一個(gè)Facebook應(yīng)用程序,一旦他進(jìn)入此狀態(tài),他可以退出或繼續(xù)留在當(dāng)前位置。然后,他學(xué)習(xí)越來(lái)越多的知識(shí),最后決定去酒吧。
這個(gè)狀態(tài)是一個(gè)更小的圓圈,因?yàn)楝F(xiàn)在有一個(gè)隨機(jī)性的元素,基于學(xué)生在去過(guò)酒吧后忘記的知識(shí)量。然后,他可以學(xué)習(xí)更多知識(shí),通過(guò)考試(+10的獎(jiǎng)勵(lì)),或者現(xiàn)在他可以選擇睡覺(jué)并完成MDP。
圖片來(lái)源:David Silver的強(qiáng)化學(xué)習(xí)課程的幻燈片,第二講
由于我們將來(lái)會(huì)使用DQN算法和以及相關(guān)知識(shí),那接下來(lái),我們來(lái)簡(jiǎn)單了解一下。
整個(gè)方法建立在近似于所謂的Q函數(shù)的基礎(chǔ)上,并基于此建立智能體的行為。Q函數(shù)的概念如下:它返回一個(gè)關(guān)于特定行為和特定狀態(tài)的整體預(yù)期貼現(xiàn)獎(jiǎng)勵(lì)流,假設(shè)從下一個(gè)狀態(tài)開始,我們將遵循策略π。它回答了這樣一個(gè)問(wèn)題:“在此狀態(tài)下按此按鈕究竟有何好處”?
Q函數(shù)遵循貝爾曼方程(Bellman equation):
而貝爾曼的最優(yōu)性原則如下:不能總是回顧過(guò)去,我們應(yīng)該始終采取最高Q以最大化獎(jiǎng)勵(lì)流:
但是你可能會(huì)問(wèn),我們?cè)撛趺吹玫竭@樣的Q函數(shù)呢?讓我們來(lái)看一個(gè)例子:想象一下,你想要一杯咖啡(+20的獎(jiǎng)勵(lì))和一臺(tái)自動(dòng)售貨機(jī)里的巧克力(+10的獎(jiǎng)勵(lì))。你的總獎(jiǎng)勵(lì)不能超過(guò)30。而且,如果你已經(jīng)喝了咖啡,那么從現(xiàn)在起,總獎(jiǎng)勵(lì)就不能超過(guò)10(對(duì)巧克力的獎(jiǎng)勵(lì))。
可以這樣理解:當(dāng)前步驟和操作的Q值=下一個(gè)狀態(tài)的最大Q值(因?yàn)槲覀兊男袨槭亲顑?yōu)的)+轉(zhuǎn)換的獎(jiǎng)勵(lì)。二次目標(biāo)函數(shù)的值變成:
Q-learning本身并不新鮮。使用神經(jīng)網(wǎng)絡(luò)作為函數(shù)近似值的Q-learning也不新鮮(例如,神經(jīng)適應(yīng)型q迭代)。有關(guān)DQN的論文是第一個(gè)使用深度卷積網(wǎng)絡(luò)來(lái)解決這一類型問(wèn)題的文章,并引入了一些新穎的方法,使得訓(xùn)練過(guò)程更加穩(wěn)定。
首先,回放經(jīng)驗(yàn)。Vanilla Q-learning 的想法是一步一步操作,從而獲得獎(jiǎng)勵(lì)和下一個(gè)狀態(tài),然后根據(jù)這個(gè)轉(zhuǎn)換更新近似函數(shù)參數(shù)。DQN的想法是進(jìn)行轉(zhuǎn)換,并將其保存在“重放內(nèi)存”中——這是一個(gè)數(shù)組,用于存儲(chǔ)最后10^6(〈插入任何大數(shù)字>)個(gè)轉(zhuǎn)換期間有關(guān)獎(jiǎng)勵(lì)的信息、轉(zhuǎn)換前后的狀態(tài),以及判別事件是否已達(dá)到終端(游戲結(jié)束)。
有了回放經(jīng)驗(yàn),我們可以隨機(jī)采樣minibatch,更有效地學(xué)習(xí)。
第一,每個(gè)轉(zhuǎn)換可能潛在地用于幾個(gè)權(quán)重更新,以便更有效地使用數(shù)據(jù)。
第二,通過(guò)隨機(jī)抽樣,我們打破了樣本之間的相關(guān)性,從而減少了權(quán)重更新的方差。
使算法更穩(wěn)定的另一個(gè)做法是DQN使用兩個(gè)神經(jīng)網(wǎng)絡(luò):第一個(gè)計(jì)算當(dāng)前狀態(tài)的Q值,第二個(gè)計(jì)算下一個(gè)狀態(tài)的Q值。
你可以從具體的目標(biāo)方程式中看出:兩個(gè)不同的Q函數(shù)分別使用θ和θ'。每10000步,從學(xué)習(xí)參數(shù)θ中復(fù)制參數(shù)θ',這有助于提高穩(wěn)定性。
在這里,可能出現(xiàn)的問(wèn)題是,當(dāng)我們更新權(quán)重時(shí),Q(s,a)和Q(s',a')都會(huì)增加,這可能會(huì)導(dǎo)致振蕩或策略散度。使用兩個(gè)單獨(dú)的網(wǎng)絡(luò),可以在目標(biāo)Q值的更新和計(jì)算之間增加延遲,從而少這種情況。如果你對(duì)這些現(xiàn)象感興趣,請(qǐng)閱讀 DQN Nature paper中的“方法”部分。
好的,上面描述的一切聽起來(lái)都很簡(jiǎn)單。如果還有一些你不明白的東西,請(qǐng)看David Silver的講座,他完美地解釋了這一切!
了解了這些,我們現(xiàn)在可以建立一個(gè)True AI嗎?對(duì)不起,但我們不能。
有幾個(gè)問(wèn)題阻礙我們建立一個(gè)能夠在星際爭(zhēng)霸II上擊敗ByuN(Hyun Woo,韓國(guó)的一位星際爭(zhēng)霸選手)的智能體,使自動(dòng)駕駛汽車早日問(wèn)世,以及給你的奶奶買個(gè)午餐后為她洗碗的機(jī)器人。
其中一個(gè)問(wèn)題是,我們的智能體最后獲得的獎(jiǎng)勵(lì)可能非常少。假設(shè)你在玩國(guó)際象棋,如果你輸了,你能非常明確地知道是哪招“致命”的嗎?也許,并不存在“致命一擊”,而是過(guò)程中挪動(dòng)的幾個(gè)普通棋子使你陷入了“死局”之旅。
獎(jiǎng)勵(lì)稀疏性是阻礙我們擊敗“蒙提祖瑪?shù)膹?fù)仇”游戲的一個(gè)問(wèn)題,這是一個(gè)非常難的Atari 2600游戲,目前尚未得到破解。
與前一個(gè)密切相關(guān)的另一個(gè)問(wèn)題是樣本效率問(wèn)題。或者,更為直接地講,是樣本效率低下問(wèn)題?,F(xiàn)在對(duì)機(jī)器來(lái)說(shuō),即使是掌握一個(gè)像“太空入侵者”(Space Invaders)如此簡(jiǎn)單的游戲都可能會(huì)需要花費(fèi)數(shù)多天的游戲時(shí)間。但由于我們可以利用模擬器,所以在游戲中加速學(xué)習(xí)過(guò)程是很容易的,但是如果我們想在現(xiàn)實(shí)生活中學(xué)習(xí)一些東西呢?不幸的是,目前物理學(xué)還達(dá)不到這樣的技術(shù)層面,而且我們不能加速時(shí)間。
有一種方法可以解決這些問(wèn)題,以及其他問(wèn)題,那就是模仿學(xué)習(xí)。正如我們?cè)谶@篇文章開頭提到的那樣,人類很少學(xué)習(xí)一些沒(méi)有任何先前信息的東西。那我們現(xiàn)在使用這個(gè)數(shù)據(jù),能夠做些什么呢?
插圖來(lái)源(http://toyoutheartist.co.uk/technique/imitation/)
模仿學(xué)習(xí)是通過(guò)在某種意義上模仿人類行為來(lái)暗示給予智能體關(guān)于世界的先前信息。
模仿學(xué)習(xí)不僅有助于我們解決樣本效率低下或計(jì)算可行性問(wèn)題,還可能使訓(xùn)練過(guò)程更加安全。 我們不能把一輛自動(dòng)駕駛汽車放在街道的中間,讓它做任何它想要做的事情。我們不希望它危害周圍的人,摧毀某人的財(cái)產(chǎn)或設(shè)備。對(duì)人類演示的數(shù)據(jù)進(jìn)行預(yù)處理可能會(huì)使訓(xùn)練過(guò)程更快,避免不好的情況發(fā)生。
說(shuō)了上面所有的一切,我們忘了一件事——數(shù)據(jù)。
訓(xùn)練模型需要一些數(shù)據(jù)。訓(xùn)練深度學(xué)習(xí)模型需要更多的數(shù)據(jù)。訓(xùn)練深度強(qiáng)化學(xué)習(xí)模型需要……好的,你明白了。
所以,這一系列文章只是部分地描述了我們可以用演示數(shù)據(jù)做什么。所有這一切的要點(diǎn)是要求人類演示數(shù)據(jù)集,不幸的是,到目前為止我們沒(méi)有更多更好的辦法。
房曉楠本刊編輯
陳亮本刊編輯