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

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

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

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

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