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

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

在arXiv發表的原始論文中,描述了一個單個的網絡,它可以自我學習從而自動的玩一些老的電視遊戲。它僅僅經過屏幕上面的圖像和遊戲中的分數是否上升降低,從而作出選擇性的動做。程序員

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

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

1、任務

這個系統得到了某個遊戲屏幕的某幅圖像,以下圖是從一個最簡單的遊戲Breakout中獲取的一幅圖片。在簡單的分析以後,它已經選擇瞭如何作出下一步。這個動做已經被執行了,而且這個系統被告知了分數是否增長了、減小了或者沒有變。基於這個信息,以及已經進行了的大量的遊戲,這個系統會學習如何玩從而提升遊戲的分數。網絡

2、機器學習和人工神經網絡

在深刻深度學習的實現過程以前,文章先介紹了機器學習和人工神經網絡的概念。架構

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

人工神經網絡ANN(Artificial Neural Networks)是機器學習的一個算法。它是由人類的大腦結構產生的靈感。這個網絡由許多節點組成,如同大腦由神經元組成,而且互相之間聯繫在一塊兒,如同神經元之間經過神經突觸和神經樹聯繫在一塊兒。對於每一個神經元,都會對其應該傳遞的信號的狀況作特殊規定。經過改變這些鏈接的強弱,可使得這些網絡計算更加快速。如今神經網絡的結構一般由以下部分組成:ide

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

在學習過程結束以後,新的物體就可以送入這個網絡,而且可以在輸出層看到每一個種類的分數。學習

3、深度學習

在這個系統中,一個神經網絡被用來指望在當前遊戲狀態下每種可能的動做所獲得的反饋。下圖給出了文章中所提到的神經網絡。這個網絡可以回答一個問題,好比「若是這麼作會變得怎麼樣?」。網絡的輸入部分由最新的四幅遊戲屏幕圖像組成,這樣這個網絡不只僅可以看到最後的部分,並且可以看到一些這個遊戲是如何變化的。輸入被通過三個後繼的隱藏層,最終到輸出層。優化

輸出層對每一個可能的動做都有一個節點,而且這些節點包含了全部動做可能獲得的反饋。在其中,會獲得最高指望分數的反饋會被用來執行下一步動做。

4、學習過程

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

文章將這個問題看成一個優化問題,目標是獲取最好的反饋。能夠經過將梯度降低與激勵學習方法結合起來解決。這個網絡不只僅須要最大化當前的反饋,還須要考慮到未來的動做。這一點能夠經過預測估計下一步的屏幕而且分析解決。用另外一種方式講,可使用(當前反饋減去預測反饋)做爲梯度降低的偏差,同時會考慮下一幅圖像的預測反饋。

關於代碼的更多細節,能夠參考他們報告中的代碼架構圖:

5、總結

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

  1. 構建一個網絡而且隨機初始化全部鏈接的權重
  2. 將大量的遊戲狀況輸出到這個網絡中
  3. 網絡處理這些動做而且進行學習
  4. 若是這個動做是好的,獎勵這個系統,不然懲罰這個系統
  5. 系統經過如上過程調整權重
  6. 在成千上萬次的學習以後,超過人類的表現。

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

相關文章
相關標籤/搜索