752
機器人
阿爾法狗 3 天走完人類千年棋史,被反超的我們該如何絕地求生?34 個開源項目告訴你!
關鍵時刻,第一時間送達!
2016 年 1 月 28 日,Google 公司 Deepmind 團隊在《Nature》雜誌上發表重磅學術論文,正式介紹在公平對局條件下以 5:0 成績擊敗歐洲圍棋冠軍樊麾的人工智能程序——AlphaGo。
2016 年 3 月 9 日,AlphaGo 與韓國九段頂尖圍棋高手李世石進行“人機大戰”,最終以 4:1 戰績一戰成名。
2017 年 5 月,在中國烏鎮圍棋峰會上,AlphaGo 與世界排名第一的圍棋冠軍柯潔對戰,以 3:0 的比分獲勝。在橫掃了世界圍棋界之後,AlphaGo 就此宣布退役。雖 AlphaGo 將不再參加圍棋比賽,但其開發團隊 DeepMind 公司並沒有停下研究的腳步。
三天自學成才的最強阿爾法狗——AlphaGo Zero
就在昨天,10 月 18 日,DeepMind 團隊再次帶著 AlphaGo 強勢歸來,於《Nature》雜誌上發布一篇名為《Mastering the game of Go without human knowledge》的論文,正式宣布最強版阿爾法狗誕生,命名——AlphaGo Zero。
對此 AlphaGo 項目首席研究員 大衛·席爾瓦表示:“AlphaGo Zero 是世界上最強大的圍棋程序,勝過以往所有的 AlphaGo 版本,尤其值得一提的是,它擊敗了曾經戰勝世界圍棋冠軍李世石的 AlphaGo 版本,成績為 100:0。”
過去所有版本的 AlphaGo,都是利用人類數據訓練開始,它們被告知人類高手具體如何下棋。而最強版 AlphaGo Zero 不使用任何人類數據,獨門秘籍是從一張白紙到滿腹經綸,花費了三天的時間完全自學成才,它使用了更多原理和算法,這樣提高了計算效率。而在 3 天內——也就是 AlphaGo Zero 在擊敗 AlphaGo Lee 之前,曾進行過 490 萬次自我對弈練習。 相比之下,AlphaGo Lee 的訓練時間長達數月之久。AlphaGo Zero 不僅發現了人類數千年來已有的許多圍棋策略,還設計了人類玩家以前未知的的策略。
點擊播放
GIF/185K
AlphaGo-Zero 的訓練時間軸
之所以 AlphaGo Zero 比通過人類數據學習獲得更好的成績,是因為:
首先,AlphaGo Zero 僅用棋盤上的黑白子作為輸入,而前代則包括了小部分人工設計的特征輸入。
其次,AlphaGo Zero 僅用了單一的神經網絡。在此前的版本中,AlphaGo用到了“策略網絡”來選擇下一步棋的走法,以及使用“價值網絡”來預測每一步棋後的贏家。而在新的版本中,這兩個神經網絡合二為一,從而讓它能得到更高效的訓練和評估。
第三,AlphaGo Zero 並不使用快速、隨機的走子方法。在此前的版本中,AlphaGo用的是快速走子方法,來預測哪個玩家會從當前的局麵中贏得比賽。相反,新版本依靠地是其高質量的神經網絡來評估下棋的局勢。
AlphaGo 不同版本所需的 GPU/TPU 資源
AlphaGo 幾個版本的排名情況
上述差異均有主於提高係統的性能和通用性,但使最關鍵的仍是算法上的改進。如今的 AlphaGo Zero 不再受人類知識限製,隻用 4 個 TPU。
而此前的 AlphaGo 版本,結合了數百萬人類圍棋專家的棋譜,以及強化學習的監督學習進行了自我訓練。在戰勝人類圍棋職業高手之前,它經過了好幾個月的訓練,依靠的是多台機器和 48 個 TPU。
技術實現
新方法使用了一個具有參數θ的深層神經網絡fθ。這個神經網絡將棋子的位置和曆史狀態s作為輸入,並輸出下一步落子位置的概率,用, (p, v) = fθ(s)表示。落子位置概率向量p代表每一步棋(包括不應手)的概率,數值v是一個標量估值,代表棋手下在當前位置s的獲勝概率。
AlphaGo Zero 的神經網絡通過新的自我對弈數據進行訓練,在每個位置s,神經網絡fθ都會進行蒙特卡洛樹(MCTS)搜索,得出每一步落子的概率π。這一落子概率通常優於原始的落子概率向量p,在自我博弈過程中,程序通過基於蒙特卡洛樹的策略來選擇下一步,並使用獲勝者z作為價值樣本,這一過程可被視為一個強有力的評估策略操作。在這一過程中,神經網絡參數不斷更新,落子概率和價值 (p,v)= fθ(s)也越來越接近改善後的搜索概率和自我對弈勝者 (π, z),這些新的參數也會被用於下一次的自我對弈迭代以增強搜索的結果,下圖即為自我訓練的流程圖。
AlphaGo Zero 強化學習下的自我對弈流程圖
成果
DeepMind 團隊在官方博客上稱,Zero 用更新後的神經網絡和搜索算法重組,隨著訓練地加深,係統的表現一點一點地在進步。自我博弈的成績也越來越好,同時,神經網絡也變得更準確。
點擊播放
GIF/1668K
AlphaGo Zero 習得知識的過程
最後大衛·席爾瓦表示:對於希望利用人工智能推動人類社會進步為使命的 DeepMind 來說,圍棋並不是 AlphaGo 的終極奧義,他們的目標始終是要利用 AlphaGo 打造通用的、探索宇宙的終極工具。
《Mastering the game of Go without human knowledge》的論文下載地址:https://deepmind.com/documents/119/agz_unformatted_nature.pdf
DeepMind 放出 AlphaGo Zero 的 80 局棋譜,下載地址:https://www.nature.com/nature/journal/v550/n7676/extref/nature24270-s2.zip
看到如此逆天的阿爾法狗,作為緊隨技術潮流的小姐姐再也坐不住了,是時候放出終極大招,幫助我們技術同行者共同學習 AlphaGo 的核心技術——機器學習。
首先結合擁有世界上最大的開源數據集的GitHub 開始我們的第一步。如今 GitHub 的數據科學團隊開始探索如何使用機器學習來使開發人員擁有更好的體驗。接下來,我們將與數學科學家 Omoju Miller 共同探索機器學習的基礎知識以及從開源的項目中學習。
什麼是機器學習?
機器學習是一門關於算法的研究,使用數據去學習、推廣和預測。機器學習令人興奮之處在於,數據越多,算法越能改進其預測。舉個例子,當我家人開始使用語音而不是以往的打字輸入進行搜索時,一開始機器需要一段時間來識別我們說的話,但使用語音搜索一個星期以後,算法的語音檢測能力已經足夠好了,語音輸入至今都是我家的主要搜索形式。
機器學習從核心上來說不是一個新概念。機器學習是由 IBM 計算機科學家 Arthur Samuel 在 1959 年創造的,自 20 世紀 80 年代以來被廣泛應用於軟件。
隨著人們從物理領域轉移到數字領域,我們可以從他們留下的數據中學習。
舉個自己的例子,二十一世紀初我學術研究的一部分是建立神經網絡。學習和構建這些算法缺乏真正的商業應用,缺少取得大量數據的途徑。隨著人們從物理領域轉移到數字領域,他們留下的數字足跡可以讓我們從中學習。隨著全球約有 30 億人使用互聯網,這些足跡積累了驚人的數據量。
這些數據存儲就是我們所說的“大數據”。 隨著大數據的出現,機器學習算法終於能夠從學術界轉向產業,助力於為消費者提供大量價值的產品。然而收集和獲取數據隻是構建機器學習數據產品(如搜索引擎和推薦係統)難題的一部分。直到最近,軟件程序員、數據科學家和統計師都缺乏利用、清理和打包這些大量數據集的工具,以便其他應用程序的使用。
現在通過 Amazon Web Services 和 Hadoop 等工具,我們可以更好更經濟有效地管理信息。這些工具為從大數據集中獲得價值開辟了新的可能性。
Amazon Web Services:https://github.com/aws
apache / Hadoop(Mirror of Apache Hadoop鏡像):https://github.com/apache/hadoop
近年來,機器學習已經擴展到各種新的應用範圍。我們嚐試用算法去做各種各樣的事情,從模式識別到玩遊戲甚至到“做夢”。
jbhuang0604 / awesome-computer-vision(計算機視覺資源列表):https://github.com/jbhuang0604/awesome-computer-vision
即使機器學習如今已經有了令人興奮的發展,目前隻是在很多可能性的開始階段。
機器學習如何工作?
要想深入了解機器學習,可以將這一過程分為三個部分:輸入、算法、輸出。
輸入:驅動機器學習的數據
輸入是訓練和算法需要的數據集。從源代碼到統計數據,數據集可以包含任何東西:
GSA / data(美國總務管理局數據):https://github.com/GSA/data
GoogleTrends / data(所有開源數據的索引):https://github.com/GoogleTrends/data
nationalparkservice / data(美國國家公園管理局非官方數據存儲):https://github.com/nationalparkservice/data
fivethirtyeight / data(FiveThirtyEight上故事與互動背後的數據和代碼):https://github.com/fivethirtyeight/data
beamandrew / medical-data:https://github.com/beamandrew/medical-data
src-d / awesome-machine-learning-on-source-code(機器學習相關有趣的鏈接和研究論文應用於源代碼):https://github.com/src-d/awesome-machine-learning-on-source-code
我們需要這些輸入來訓練機器學習算法,因此發現和生成高質量的數據集是當今機器學習麵臨的最大挑戰之一。
算法:如何處理和分析數據
算法能將數據轉化為觀點。
機器學習算法使用數據來執行特定任務。 最常見的算法類型有:
1. 監督學習使用已經標注和結構化的訓練數據。通過指定一組輸入和所需的輸出,機器將學習如何成功識別並將其映射。
例如,在決策樹學習中,通過將一組決策規則應用於輸入數據來預測值:
igrigorik / decisiontree(基於ID3的機器學習決策樹算法的實現):https://github.com/igrigorik/decisiontree
2. 無監督學習是使用非結構化數據來發現模式和結構的過程。監督學習可能使用excel表格作為其數據輸入,而無監督學習可能用來理解書籍或博客。
例如,無監督學習是自然語言處理(NLP)中的流行方法:
keon / awesome-nlp(NLP的專用資源列表):https://github.com/keon/awesome-nlp
3. 強化學習用算法來實現目標。算法朝著目標執行任務,通過獎勵和懲罰使之學習正確的方法。
例如,強化學習可能用於開發自動駕駛汽車或教機器人如何製造一件物品。
openai / gym(一種用於開發和比較強化學習算法的工具包):https://github.com/openai/gym
aikorea / awesome-rl(強化學習資源):https://github.com/aikorea/awesome-rl
以下是實踐中的幾個算法實例:
umutisik / Eigentechno(音樂循環主成分分析):https://github.com/umutisik/Eigentechno
jpmckinney / tf-idf-similarity(使用tf*idf(詞頻和逆向文件頻率)來計算文本之間相似度):https://github.com/jpmckinney/tf-idf-similarity
scikit-learn-contrib / lightning(Python中的規模線性分類、回歸和排序):https://github.com/scikit-learn-contrib/lightning
gwding / draw_convnet:https://github.com/gwding/draw_convnet
一些用於執行這些分析的庫和工具包括:
scikit-learn / scikit-learn(Python中的機器學習):https://github.com/scikit-learn/scikit-learn
tensorflow / tensorflow(使用可擴展機器學習的數據流圖進行計算):https://github.com/tensorflow/tensorflow
Theano / Theano(Theano是一個Python庫,可讓你高效定義、優化、評估涉及多維數組的數學表達式。它可以使用GPU並執行高效的符號):https://github.com/Theano/Theano
shogun-toolbox / shogun(將軍機器學習工具箱(源代碼)):https://github.com/shogun-toolbox/shogun
davisking / dlib(用於在C ++中進行真實世界機器學習和數據分析應用的工具包):https://github.com/davisking/dlib
apache / incubator-predictionio(PredictionIO是開發人員和機器學習工程師的機器學習服務器,基於Apache Spark,HBase和Spray):https://github.com/apache/incubator-predictionio
什麼是深度學習?深度學習是機器學習的一個子集,使用神經網絡來查找數據之間關係。深度學習通過監督學習、無監督學習或強化學習來實現其目標。
在這個鏈接,你可以直接在瀏覽器中體驗神經網絡:https://github.com/collections/machine-learning
雖然深度學習已經存在了數十年,但由於2005年左右圖形處理單元(GPU)的創新,神經網絡才成為可能。GPU最初是為了在3D遊戲環境中渲染像素而開發的,但已經在訓練神經網絡算法中發現GPU的一個新作用。
輸出
輸出是最終結果。輸出可能是識別紅色符號的模式,可能是判斷網頁論調正麵或負麵的情感分析,或者是有置信區間的一個預測分數。
在機器學習中,輸出可以是任何事物。產生輸出的幾種方法包括:
分類:為數據集中的每一項生成輸出值
回歸:通過已有數據來預測所考慮變量的最可能值
聚類:將數據分組成相似模式
以下是機器學習的一些實際例子:
deepmind / pysc2(星際爭霸II學習環境):https://github.com/deepmind/pysc2
計算生物學家利用深度學習來理解 DNA:
gokceneraslan / awesome-deepbio(計算生物學領域深度學習應用清單):https://github.com/gokceneraslan/awesome-deepbio
使用Tensorflow進行法語到英語翻譯:
buriburisuri / ByteNet(使用DeepMind的ByteNet進行法語到英語機器翻譯):https://github.com/buriburisuri/ByteNet
萬事俱備,你準備好開始了嗎?
GitHub 上網友整理的機器學習資源供你選擇,你也可以將自己的資源添加到這些列表中。
機器學習:
josephmisiti / awesome-machine-learning(機器學習框架、庫和軟件列表):https://github.com/josephmisiti/awesome-machine-learning
ujjwalkarn / Machine-Learning-Tutorials(機器學習和深度學習教程、文章等資源):https://github.com/ujjwalkarn/Machine-Learning-Tutorials
深度學習:
ChristosChristofidis / awesome-deep-learning(深度學習教程、項目和社區列表):https://github.com/ChristosChristofidis/awesome-deep-learning
fastai / courses(fast.ai課程):https://github.com/fastai/courses
Tensorflow:
jtoy / awesome-tensorflow(https://tensorflow.org專用資源):https://github.com/jtoy/awesome-tensorflow
nlintz / TensorFlow-Tutorials(使用Google TensorFlow框架的簡單教程):https://github.com/nlintz/TensorFlow-Tutorials
pkmital / tensorflow_tutorials(從基礎到更有趣的Tensorflow應用):https://github.com/pkmital/tensorflow_tutorials
注:封麵圖為視覺中國付費下載。
-------- 熱聞回顧 --------
最後更新:2017-10-20 00:10:33