去年11月,一篇名為《Playing Atari with Deep Reinforcement Learning》的文章被初創(chuàng)人工智能公司DeepMind的員工上傳到了arXiv網(wǎng)站。兩個月之后,谷歌花了500萬歐元買下了DeepMind公司,而人們對這個公司的了解僅限于這篇文章。近日,Tartu大學(xué)計算機(jī)科學(xué)系計算神經(jīng)學(xué)小組的學(xué)者在robohub網(wǎng)站發(fā)表文章,闡述了他們對DeepMind人工智能算法的復(fù)現(xiàn)。在arXiv發(fā)表的原始論文中,描述了一個單個的網(wǎng)絡(luò),它能夠自我學(xué)習(xí)從而自動的玩一些老的電視游戲。它僅僅通過屏幕上面的圖像和游戲中的分?jǐn)?shù)是否上升下降,從而做出選擇性的動作。

在訓(xùn)練的一開始,這個程序?qū)τ螒蛞稽c(diǎn)都不了解。它并不知道這個游戲的目標(biāo),是保持生存、殺死誰或者是走出一個迷宮。它對這個游戲的影響也不清楚,并不知道它的動作會對這個游戲產(chǎn)生什么影響,甚至不知道這個游戲中會有哪些目標(biāo)物品。通過在這個游戲中嘗試并且一遍一遍失敗,這個系統(tǒng)會逐漸學(xué)會如何表現(xiàn)來獲得比較好的分?jǐn)?shù)。同時需要注意的是,這個系統(tǒng)對所有不同的游戲使用了同樣的系統(tǒng)結(jié)構(gòu),程序員沒有對不同程序給予這個程序任何特殊的提示,比如上、下或者開火等等。最終結(jié)果顯示,這個系統(tǒng)能夠掌握一些游戲,并且比一些人類玩家還要玩得好。這個結(jié)果可以看作對AGI(Artificial General Intelligence)邁近的一小步,非常吸引人。文章給出了如下的細(xì)節(jié),從任務(wù)、機(jī)器學(xué)習(xí)基礎(chǔ)、深度學(xué)習(xí)模型和學(xué)習(xí)過程四部分闡述了他們的工作。
一、任務(wù)這個系統(tǒng)獲得了某個游戲屏幕的某幅圖像,如下圖是從一個最簡單的游戲Breakout中獲取的一幅圖片。在簡單的分析之后,它已經(jīng)選擇了如何做出下一步。這個動作已經(jīng)被執(zhí)行了,并且這個系統(tǒng)被告知了分?jǐn)?shù)是否增加了、減少了或者沒有變。基于這個信息,以及已經(jīng)進(jìn)行了的大量的游戲,這個系統(tǒng)會學(xué)習(xí)如何玩從而提高游戲的分?jǐn)?shù)。

二、機(jī)器學(xué)習(xí)和人工神經(jīng)網(wǎng)絡(luò)在深入深度學(xué)習(xí)的實(shí)現(xiàn)過程之前,文章先介紹了機(jī)器學(xué)習(xí)和人工神經(jīng)網(wǎng)絡(luò)的概念。機(jī)器學(xué)習(xí)的一個非常通常的任務(wù)是這樣的:給出了一個目標(biāo)的信息,從而能夠知道它屬于哪個種類。在深度學(xué)習(xí)的過程中,程序想要決定在目前游戲狀態(tài)下如何進(jìn)行下一步動作。機(jī)器學(xué)習(xí)算法從例子中進(jìn)行學(xué)習(xí):給出了許多的目標(biāo)例子和它們的種類,學(xué)習(xí)算法從中找出了那些能夠鑒定某個種類的目標(biāo)特征。學(xué)習(xí)算法會產(chǎn)生一個模型,能夠在訓(xùn)練集中最小化錯誤分類率。這個模型之后會被用來預(yù)測那個未知目標(biāo)的種類。人工神經(jīng)網(wǎng)絡(luò)ANN(Artificial Neural Networks)是機(jī)器學(xué)習(xí)的一個算法。它是由人類的大腦結(jié)構(gòu)產(chǎn)生的靈感。這個網(wǎng)絡(luò)由許多節(jié)點(diǎn)組成,如同大腦由神經(jīng)元組成,并且互相之間聯(lián)系在一起,如同神經(jīng)元之間通過神經(jīng)突觸和神經(jīng)樹聯(lián)系在一起。對于每個神經(jīng)元,都會對其應(yīng)該傳遞的信號的情況做特殊規(guī)定。通過改變這些連接的強(qiáng)弱,可以使得這些網(wǎng)絡(luò)計算更加快速。現(xiàn)在神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)通常由如下部分組成:神經(jīng)的輸入層(獲得目標(biāo)的描述)

隱藏層(主要部分,在這些層中學(xué)習(xí))
輸出層(對于每個種類都一個神經(jīng)節(jié)點(diǎn),分?jǐn)?shù)最高的一個節(jié)點(diǎn)就是預(yù)測的種類)
在學(xué)習(xí)過程結(jié)束之后,新的物體就能夠送入這個網(wǎng)絡(luò),并且能夠在輸出層看到每個種類的分?jǐn)?shù)。三、深度學(xué)習(xí)在這個系統(tǒng)中,一個神經(jīng)網(wǎng)絡(luò)被用來期望在當(dāng)前游戲狀態(tài)下每種可能的動作所得到的反饋。下圖給出了文章中所提到的神經(jīng)網(wǎng)絡(luò)。這個網(wǎng)絡(luò)能夠回答一個問題,比如“如果這么做會變得怎么樣?”。網(wǎng)絡(luò)的輸入部分由最新的四幅游戲屏幕圖像組成,這樣這個網(wǎng)絡(luò)不僅僅能夠看到最后的部分,而且能夠看到一些這個游戲是如何變化的。輸入被經(jīng)過三個后繼的隱藏層,最終到輸出層。
輸出層對每個可能的動作都有一個節(jié)點(diǎn),并且這些節(jié)點(diǎn)包含了所有動作可能得到的反饋。在其中,會得到最高期望分?jǐn)?shù)的反饋會被用來執(zhí)行下一步動作。四、學(xué)習(xí)過程系統(tǒng)通過學(xué)習(xí)過程來計算最高期望分?jǐn)?shù)。確切地說,在定義了網(wǎng)絡(luò)的結(jié)構(gòu)之后,剩下唯一會變化的就只有一件事:連接之間的強(qiáng)弱程度。學(xué)習(xí)過程就是調(diào)整這些方式地權(quán)重,從而使得通過這個網(wǎng)絡(luò)的訓(xùn)練樣例獲得好的反饋。文章將這個問題當(dāng)作一個優(yōu)化問題,目標(biāo)是獲取最好的反饋??梢酝ㄟ^將梯度下降與激勵學(xué)習(xí)方法結(jié)合起來解決。這個網(wǎng)絡(luò)不僅僅需要最大化當(dāng)前的反饋,還需要考慮到將來的動作。這一點(diǎn)可以通過預(yù)測估計下一步的屏幕并且分析解決。用另一種方式講,可以使用(當(dāng)前反饋減去預(yù)測反饋)作為梯度下降的誤差,同時會考慮下一幅圖像的預(yù)測反饋。關(guān)于代碼的更多細(xì)節(jié),可以參考他們報告中的代碼架構(gòu)圖:

五、總結(jié)文章最后給出了DeepMind深度學(xué)習(xí)的整個流程:構(gòu)建一個網(wǎng)絡(luò)并且隨機(jī)初始化所有連接的權(quán)重
將大量的游戲情況輸出到這個網(wǎng)絡(luò)中
網(wǎng)絡(luò)處理這些動作并且進(jìn)行學(xué)習(xí)
如果這個動作是好的,獎勵這個系統(tǒng),否則懲罰這個系統(tǒng)
系統(tǒng)通過如上過程調(diào)整權(quán)重
在成千上萬次的學(xué)習(xí)之后,超過人類的表現(xiàn)。
這個結(jié)果可以看做是在AGI方向的從傳統(tǒng)機(jī)器學(xué)習(xí)邁出的一小步。盡管這一步可能非常小,這個系統(tǒng)可能都不知道或者理解它做的事情,但是這個深度學(xué)習(xí)系統(tǒng)的學(xué)習(xí)能力遠(yuǎn)遠(yuǎn)超過之前的系統(tǒng)。并且,在沒有程序員做任何提示的情況下,它的解決問題的能力也更加寬廣。他們的代碼可以在GitHub主頁上找到