AlphaGo是如何戰勝柯潔的?

圍棋 柯潔 機器學習 Google 大海滔滔 2017-06-06

AlphaGo是如何戰勝柯潔的?

近日,AlphaGo繼戰勝李世石九段後,又與柯潔展開了一場大戰。結局不難預料,AlphaGo必然取勝。寫這篇文章的時候,AlphaGo已經兩局都戰勝了柯潔。第三局AlphaGo取勝也幾乎是必然的。那麼,為什麼AlphaGo這麼厲害,它是如何連連戰勝人類圍棋高手的?

今天,我給大家簡單介紹一下AlphaGo如何誕生、訓練,又如何成為圍棋界的上帝的。技術問題另文敘述,今天先科普一下。

AlphaGo是如何戰勝柯潔的?

如果要訓練一個人工智能的機器人,讓它成為圍棋界的上帝,AlphaGo經過了下面的步驟:

第一步,首先要有一個機器學習的算法。注意,是學習的算法,而不是下棋的算法。開發一個下棋的算法去和棋手下棋是傳統的計算機程序,而不是人工智能,我們小時候常玩的電腦上的下棋軟件就是這種傳統的模式。在人工智能時代,工程師設計的是學習的程序,然後由機器自己進行學習,學習的結果才是與棋手對戰的系統。這個過程就特別像我們人類一樣,我們先進行圍棋的學習,學會之後再去和其他人比賽。

2012年,Google以5億美元收購了只有100人左右的小公司DeepMind。這家公司的核心技術就是研究通用的機器學習算法,而AlphaGo就是DeepMind團隊為了證明他們的機器學習算法有效性而開發的一款智能程序。

第二步,就是開始進行深度學習。Google為了對AlphaGo進行訓練,動用了上萬臺服務器,學習了人類高手對弈的上千萬盤棋局。在學習過程中,它會自動觀察棋局中的每個局面,然後通過深度學習算法(AlphaGo使用的是一種深度神經網絡算法,算法的具體細節另文闡述),不斷地對自己進行訓練。經過上千萬次訓練後,它就建立了人類高手的“棋感”,對於棋面的認識已經遠超人類高手了。

2015 年 11 月 9 日,Google公司開源了它的第二代深度學習系統TensorFlow,也就是AlphaGo的基礎程序。今天,我們都可以自己搭建或者使用雲服務來使用這個深度學習的程序。

第三步,就是真正的比賽。在實際下棋時,AlphaGo大約使用的計算機不過幾十臺,它會通過視覺系統識別當前的棋局,所有的布點在它看來無非是圖像的像素罷了。識別之後,它會根據自己學習的成果判斷出一些高質量的候選點供走子,這也是人工智能時代程序和以前程序的根本不同。例如,國際象棋的搜索空間僅僅為2*10^50,因此,機器可以無限接近找到最優解。而圍棋的搜索空間為2*10^171,目前的運算能力無法完成窮盡的搜索,這個時候,機器會像人類一樣,根據經驗和感覺選擇某些點,然後再計算、比較那個點更好。

選擇好候選落子後,機器會使用一種蒙特卡洛搜索算法進行計算,看哪個點勝出的概率更高。機器會根據每個點的情況往後推演,在瞬間完成數百萬次黑白棋的交替走子,然後選擇一個勝率更高的點進行走子。

因此,在下棋時,AlphaGo下棋沒有連貫的思路,只有輸贏,沒有贏多少一說。

這裡面涉及到很多技術細節,包括深度學習、包括搜索算法等等,改天我們再深入研討。

相關推薦

推薦中...