神經網絡可能終將在圍棋上打敗人類
原文 http://www.guokr.com/article/439807/
( Alulull/ 編譯)在幾乎一切領域里,人類都面臨著被計算機迎頭趕超的局面。譬如,機器視覺 專家最近開發出了一種新的算法,使得計算機獲得了超越人類的面孔識別能力。類似算法用于物體識別上,也在逐步縮小機器與人類的差距。而人類國際象棋選手在 很久以前就放棄了打敗計算機的努力——計算機第一次擊敗頂尖人類是在1997年,而人類最后一次擊敗頂尖計算機是在2006年。
<p> 但是,有一個領域仍舊由人類獨領風騷,那就是一項古老的中國棋類競技——圍棋。計算機始終沒能掌握這門技藝,目前最好的算法只能達到一個優秀的業余棋手的水平,頂級的人類棋手能輕易地將其打敗。 </p>
<p> 如今,這一局面似乎有望被打破。蘇格蘭愛丁堡大學的克里斯托弗?克拉克(Christopher Clark)和阿莫斯?司多奇(Amos Storkey)利用了一種機器學習技術,來計算下一步棋的走向,而正是這種技術幫助面孔識別算法實現了革新性的進步。結果表明,人類繼續稱霸圍棋賽場的 希望恐怕十分渺茫了。 </p>
<p> <img alt="神經網絡可能終將在圍棋上打敗人類" src="https://simg.open-open.com/show/5dca921932e640a6ca06c71ebe999ba4.png" width="495" height="391" /> </p>
<p> 圍棋需要兩名棋手,以及一個由19X19條網格線劃分而成的棋盤。棋手輪流將黑色或白色的棋子下在交叉點上,目標是在游戲結束時比對手占據更多的領地。當己方棋子將對方棋子包圍時,棋手就能將該棋子移走。 </p>
<p> 專家認為,計算機之所以在圍棋上表現不佳,原因有二。首先,圍棋每一步的可能下法非常之多。棋手在起手時就有19X19=361種落子選擇,而在比賽的任意階段,通常都有數以百計的可能下法。與之形成對比的是,國際象棋的可能下法通常只有50種左右。 </p>
<p> 第二個問題在于,計算機很難分辨當下棋局的優勢方和弱勢方。對國際象棋來說,只需要把目前棋盤上剩余棋子的價值總和算出來,就能獲得關于棋手形勢 的可靠指標。但這種方法對圍棋來是行不通的。“計算雙方棋手的棋子數目很難告訴我們,現在到底誰的贏面較大。”克拉克和司多奇說。 </p>
<p> 目前頂尖的圍棋算法往往用蠻力法來解決這個問題,那就是對每一步可能的下法模擬出隨后的整場比賽,并用不同的下法重復多次。如果在絕大多數模擬棋局中電腦能夠獲勝,那么就判斷這一步棋為好棋。 </p>
<p> 很顯然,這項任務非常耗時,且計算量極大。即便如此,計算機還是不能打敗人類圍棋高手,因為人往往只需一眼就能看出當下棋局的形勢。 </p>
<p> 許多專家相信,人類掌握圍棋的秘訣在于模式識別——通過棋子組成的圖形形狀來判斷優勢和弱點,而不是預測幾步棋后的走向。 </p>
<p> 也正是因為這個原因,模式識別算法的最新進展有可能會大大改進計算機的表現。新算法利用大型的圖片數據庫,訓練深度卷積神經網絡(deep convolutional neural networks)來識別物體和面孔,其精確性如今已能與人類媲美。因此,可以預想,同樣的算法用在圍棋棋局自動評估上,也能發揮巨大的作用。 </p>
<p> 克拉克和司多奇所做的工作恰恰如此。兩人訓練深度卷積神經網絡解決的問題是:給出一張兩名圍棋高手對局途中的棋盤照片,有沒有可能預測出下一步? </p>
<p> 他們的解決方案就是讓神經網絡對一個巨大的圍棋棋局數據庫進行學習,從而找到下一步棋的下法。克拉克和司多奇使用了超過16萬個高手棋局,生成了 共計1650萬個棋子位置及其下一步的數據庫。他們利用大約1500萬個這種位置-步法的信息對來訓練一個8層卷積神經網絡,令其識別高手們棋路。這一過 程共耗時數天。 </p>
<p> 接著,他們用數據庫中剩余的部分棋局信息對該神經網絡進行了測試。換句話說,他們向神經網絡輸入了源自某一棋局的棋盤位置,并讓它選擇下一步的下法。克拉克和司多奇說,經過訓練的神經網絡的預測準確性達到了44%,“顯著超過了目前其他的最佳算法。” </p>
<p> 這種新算法非常有趣,尤其是因為它在進行決策時沒有利用任何先前的著子信息,也沒有對將來的棋子位置進行評估。 </p>
<p> 神經網絡的訓練結束后,克拉克和司多奇讓它和兩個目前最好的圍棋算法進行了對弈。第一個對手叫做GNU Go,棋力相當于一名中等水平的業余棋手,等級大約為6-8級。(圍棋的業余等級為逆序,初學者為30-20級,最高為1級,再往上則改用段位。) </p>
<p> 第二個對手則是目前的頂級圍棋軟件之一,名叫Fuego 1.1,等級大約為5-4級。人類棋手通常需要多年時間學習才能達到這一水平。 </p>
<p> 對弈的結果對于人類起手來說無疑是一個兇兆。面對GNU Go的200次棋局中,克拉克和司多奇的神經網絡的勝率高達90%。換句話說,只需幾天的學習訓練,神經網絡就能穩定地擊敗6-8級的人類棋手。 </p>
<p> 在Fuego 1.1面前,它表現欠佳,只贏了10%的棋局。盡管如此,這依然是重大進步。“面對這個對手,哪怕只能贏過幾局,也說明(我們的神經網絡)的能力達到了相當高的水平。”克拉克和司多奇如是說。 </p>
<p> 很明顯,前景是樂觀的。“盡管目前神經網絡使用的是‘不往前看’的策略,計算時間也遠遠小于對手,但它們仍然能夠超越GNU Go,而且還能從Fuego那兒拿下幾局。”他們說。 </p>
<p> 進步的空間也很容易預見,比如,將這種算法與其他考慮過往步數并會向前預測的算法結合起來。克拉克和司多奇的一個提議即是,將他們的卷積神經網絡與傳統的算法同步運行,前者能夠幫助后者減小需要探索的步數。 </p>
<p> 克拉克和司多奇并沒有說他們的算法能夠打敗世界上最好的圍棋選手。但毫無疑問的是,圍棋選手也終將向計算機霸主低頭,這一切只是時間的問題。(編輯:Ent) </p>
<h2> <span>參考文獻:</span> </h2>
<ol>
<li> arxiv.org/abs/1412.3409: Teaching Deep Convolutional Neural Networks to Play Go </li>
</ol>
</div>
</div>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!