1. 程式人生 > >DeepMind背後的人工智慧:深度學習原理初探

DeepMind背後的人工智慧:深度學習原理初探

去年11月,一篇名為《Playing Atari with Deep Reinforcement Learning》的文章被初創人工智慧公司DeepMind的員工上傳到了arXiv網站。兩個月之後,谷歌花了500萬歐元買下了DeepMind公司,而人們對這個公司的瞭解僅限於這篇文章。近日,Tartu大學計算機科學系計算神經學小組的學者在robohub網站發表文章,闡述了他們對DeepMind人工智慧演算法的復現。

在arXiv發表的原始論文中,描述了一個單個的網路,它能夠自我學習從而自動的玩一些老的電視遊戲。它僅僅通過螢幕上面的影象和遊戲中的分數是否上升下降,從而做出選擇性的動作。

在訓練的一開始,這個程式對遊戲一點都不瞭解。它並不知道這個遊戲的目標,是保持生存、殺死誰或者是走出一個迷宮。它對這個遊戲的影響也不清楚,並不知道它的動作會對這個遊戲產生什麼影響,甚至不知道這個遊戲中會有哪些目標物品。通過在這個遊戲中嘗試並且一遍一遍失敗,這個系統會逐漸學會如何表現來獲得比較好的分數。同時需要注意的是,這個系統對所有不同的遊戲使用了同樣的系統結構,程式設計師沒有對不同程式給予這個程式任何特殊的提示,比如上、下或者開火等等。

最終結果顯示,這個系統能夠掌握一些遊戲,並且比一些人類玩家還要玩得好。這個結果可以看作對AGI(Artificial General Intelligence)邁近的一小步,非常吸引人。文章給出瞭如下的細節,從任務、機器學習基礎、深度學習模型和學習過程四部分闡述了他們的工作。

一、任務

這個系統獲得了某個遊戲螢幕的某幅影象,如下圖是從一個最簡單的遊戲Breakout中獲取的一幅圖片。在簡單的分析之後,它已經選擇瞭如何做出下一步。這個動作已經被執行了,並且這個系統被告知了分數是否增加了、減少了或者沒有變。基於這個資訊,以及已經進行了的大量的遊戲,這個系統會學習如何玩從而提高遊戲的分數。

二、機器學習和人工神經網路

在深入深度學習的實現過程之前,文章先介紹了機器學習和人工神經網路的概念。

機器學習的一個非常通常的任務是這樣的:給出了一個目標的資訊,從而能夠知道它屬於哪個種類。在深度學習的過程中,程式想要決定在目前遊戲狀態下如何進行下一步動作。機器學習演算法從例子中進行學習:給出了許多的目標例子和它們的種類,學習演算法從中找出了那些能夠鑑定某個種類的目標特徵。學習演算法會產生一個模型,能夠在訓練集中最小化錯誤分類率。這個模型之後會被用來預測那個未知目標的種類。

人工神經網路ANN(Artificial Neural Networks)是機器學習的一個演算法。它是由人類的大腦結構產生的靈感。這個網路由許多節點組成,如同大腦由神經元組成,並且互相之間聯絡在一起,如同神經元之間通過神經突觸和神經樹聯絡在一起。對於每個神經元,都會對其應該傳遞的訊號的情況做特殊規定。通過改變這些連線的強弱,可以使得這些網路計算更加快速。現在神經網路的結構通常由如下部分組成:

  • 神經的輸入層(獲得目標的描述)
  • 隱藏層(主要部分,在這些層中學習)
  • 輸出層(對於每個種類都一個神經節點,分數最高的一個節點就是預測的種類)

在學習過程結束之後,新的物體就能夠送入這個網路,並且能夠在輸出層看到每個種類的分數。

三、深度學習

在這個系統中,一個神經網路被用來期望在當前遊戲狀態下每種可能的動作所得到的反饋。下圖給出了文章中所提到的神經網路。這個網路能夠回答一個問題,比如“如果這麼做會變得怎麼樣?”。網路的輸入部分由最新的四幅遊戲螢幕影象組成,這樣這個網路不僅僅能夠看到最後的部分,而且能夠看到一些這個遊戲是如何變化的。輸入被經過三個後繼的隱藏層,最終到輸出層。

輸出層對每個可能的動作都有一個節點,並且這些節點包含了所有動作可能得到的反饋。在其中,會得到最高期望分數的反饋會被用來執行下一步動作。

四、學習過程

系統通過學習過程來計算最高期望分數。確切地說,在定義了網路的結構之後,剩下唯一會變化的就只有一件事:連線之間的強弱程度。學習過程就是調整這些方式地權重,從而使得通過這個網路的訓練樣例獲得好的反饋。

文章將這個問題當作一個優化問題,目標是獲取最好的反饋。可以通過將梯度下降與激勵學習方法結合起來解決。這個網路不僅僅需要最大化當前的反饋,還需要考慮到將來的動作。這一點可以通過預測估計下一步的螢幕並且分析解決。用另一種方式講,可以使用(當前反饋減去預測反饋)作為梯度下降的誤差,同時會考慮下一幅影象的預測反饋。

關於程式碼的更多細節,可以參考他們報告中的程式碼架構圖:

五、總結

文章最後給出了DeepMind深度學習的整個流程:

  1. 構建一個網路並且隨機初始化所有連線的權重
  2. 將大量的遊戲情況輸出到這個網路中
  3. 網路處理這些動作並且進行學習
  4. 如果這個動作是好的,獎勵這個系統,否則懲罰這個系統
  5. 系統通過如上過程調整權重
  6. 在成千上萬次的學習之後,超過人類的表現。

這個結果可以看做是在AGI方向的從傳統機器學習邁出的一小步。儘管這一步可能非常小,這個系統可能都不知道或者理解它做的事情,但是這個深度學習系統的學習能力遠遠超過之前的系統。並且,在沒有程式設計師做任何提示的情況下,它的解決問題的能力也更加寬廣。他們的程式碼可以在GitHub主頁上找到。