天天看點

DeepMind:深度學習原理初探

DeepMind:深度學習原理初探

去年11月,一篇名為《playing atari with deep reinforcement learning》的文章被初創人工智能公司deepmind的員工上傳到了arxiv網站。兩個月之後,谷歌花了500萬歐元買下了deepmind公司,而人們對這個公司的了解僅限于這篇文章。近日,tartu大學計算機科學系計算神經學小組的學者在robohub網站發表文章,闡述了他們對deepmind人工智能算法的複現。

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

DeepMind:深度學習原理初探

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

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

一、任務

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

DeepMind:深度學習原理初探

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

在深入深度學習的實作過程之前,文章先介紹了機器學習和人工神經網絡的概念。機器學習的一個非常通常的任務是這樣的:給出了一個目标的資訊,進而能夠知道它屬于哪個種類。在深度學習的過程中,程式想要決定在目前遊戲狀态下如何進行下一步動作。機器學習算法從例子中進行學習:給出了許多的目标例子和它們的種類,學習算法從中找出了那些能夠鑒定某個種類的目标特征。學習算法會産生一個模型,能夠在訓練集中最小化錯誤分類率。這個模型之後會被用來預測那個未知目标的種類。

人工神經網絡ann(artificial neural networks)是機器學習的一個算法。它是由人類的大腦結構産生的靈感。這個網絡由許多節點組成,如同大腦由神經元組成,并且互相之間聯系在一起,如同神經元之間通過神經突觸和神經樹聯系在一起。對于每個神經元,都會對其應該傳遞的信号的情況做特殊規定。通過改變這些連接配接的強弱,可以使得這些網絡計算更加快速。現在神經網絡的結構通常由如下部分組成:

神經的輸入層(獲得目标的描述)

隐藏層(主要部分,在這些層中學習)

輸出層(對于每個種類都一個神經節點,分數最高的一個節點就是預測的種類)

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

三、深度學習

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

DeepMind:深度學習原理初探

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

四、學習過程

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

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

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

DeepMind:深度學習原理初探

五、總結

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

1.建構一個網絡并且随機初始化所有連接配接的權重

2.将大量的遊戲情況輸出到這個網絡中

3.網絡處理這些動作并且進行學習

4.如果這個動作是好的,獎勵這個系統,否則懲罰這個系統

5.系統通過如上過程調整權重

6.在成千上萬次的學習之後,超過人類的表現。

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

原文釋出時間為:2014-10-12

本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号

繼續閱讀