自從2016年12月29日在圍棋網絡對戰平臺現身之後,截至2017年1月4日晚,一個名為「Master」的神秘帳號在與人類圍棋高手的車輪戰中取得了60勝O負1和的戰績,手下敗將不乏柯潔、樸廷桓、古力等世界頂尖名將,甚至在對局中看不到這些頂尖名將有一點點能和Master扳手腕的可能(Master戰績中唯一的和棋還是因為對手陳耀燁在對戰時掉線)。在和古力最後一戰前,Master承認自己就是升級版的「阿爾法狗」(AlphaGo,谷歌旗下DeepMind公司的一款圍棋人工智慧)。
人算不如「狗」算
1月3日晚,在接連贏下樸廷桓和元晟溱之後,Master在圍棋網絡對戰平臺的連勝紀錄達到49場。當晚第50場的對手是「潛伏」,該帳號的持有者被一致認為是世界頭號選手柯潔。根據最新的世界圍棋排名,柯潔是如今世界棋壇積分排名第一的選手,也是榜單上唯一一名排在「阿爾法狗」之前的棋手。
這場對局在Master的快速攻擊面前,「潛伏」漸漸有些捉襟見肘,最終投子認負。「抬走,下一個。」這是觀戰的網友們為贏棋後的Master設計的對白。
而在去年「阿爾法狗」對陣李世石的「圍棋人機大戰1.0"之際,柯潔曾表示:「就算它戰勝了李世石,但它贏不了我。」此後他還在微博上放出豪言,「管你是阿法狗還是阿法貓!我柯潔在棋上什麼大風大浪沒見過?讓風暴再來得猛烈點吧……」
與之形成鮮明對比的是,2016年的最後一天,正當Master大殺四方之時,柯潔在微博中寫道:「新的風暴即將來襲。我從3月份到現在研究了大半年的棋軟,無數次的理論、實踐,就是想知道計算機到底強在哪裡?昨夜輾轉反側,不想竟一夜難眠,人類數千年的實戰演練進化,計算機卻告訴我們人類全是錯的。我覺得,甚至沒有一個人沾到圍棋真理的邊……」
那麼問題來了,這隻「阿爾法狗」是怎麼下棋的?為什麼這麼強?到底強在哪裡?
還記得1997年IBM公司的「深藍」計算機戰勝西洋棋世界冠軍卡斯帕羅夫那次劃時代的「人機大戰」嗎?「深藍」贏得比賽用的就是人類最不屑的辦法——窮舉——把棋盤裡可能出現的所有情況都模擬出來,然後對手下的每一步棋都「瞭然於胸」,再選擇最能贏的走法。就像拿著幾個億去買彩票,所有有可能的組合全部下注,最後中了個500萬。
人工智慧能在西洋棋領域這麼做,完全是因為西洋棋的所有可能性是10^47,以電腦的「腦力」要列舉這麼多種可能性還是夠用的。但要想用一模一樣的辦法稱霸圍棋棋壇,面對圍棋的十九路棋盤,「阿爾法狗」要應付的可能性是2x10^170,換成自然數的形式就是2後邊跟著170個0……要窮舉這麼多的棋譜,電腦的「腦力」顯然是不夠用的。要知道,全宇宙的所有原子總數也不過是10^80個。
但是,窮舉還是要有的,不過要用一種聰明點的辦法縮小窮舉的範圍。人類不是下了幾千年的圍棋嗎?那就先拿3000萬份棋譜來學習一下人類下棋的基本套路。「阿爾法狗」剛開始通過自身的「人工神經網絡」來「深度學習」圍棋時,就是從網絡圍棋對戰平臺KGS拿來的3000萬份棋譜開始的。不過這顯然是不夠的,所以在繼續找更多的棋譜的同時「阿爾法狗」還開始了和自己下棋玩——通過學習得來的人類下棋套路來模擬博弈,儘可能地得到更加多的棋譜來學習。
這樣一來,孜孜不倦地學習了數以千萬計的棋譜「阿爾法狗」就對如何合理地下棋這件事有了自己的豐富經驗,這就形成了自己「價值網絡」——估算每一張棋譜裡的每一步棋對最後贏棋有多大幫助,並找出其中的一些規律——這大概就是人類常說的「棋感」。而再看看人類,一輩子也下不了一萬盤棋,還要記要分析要總結規律?想想就心累。
「阿爾法狗」學習了海量棋譜得來的「棋感」用來模仿和預測人類下棋已經有很高的把握了,據「阿爾法狗」團隊2016年的說法,「阿爾法狗」下圍棋時的落子選擇能正確符合57%的人類高手。就是說有57%的人類高手在面對同樣的棋局時會選擇和「阿爾法狗」一樣的下一步,而不符合人類高手想法的那部分並不意味著「阿爾法狗」是錯的,也更有可能是人類自己犯錯而已。
有了深厚的內力加持還是不夠的,「阿爾法狗」還需要在對戰時把自己的積澱用到實處。先前說過,「阿爾法狗」和「深藍」在迎戰人類的方法並沒有什麼本質上的差別,都是窮舉。雖然現在「阿爾法狗」已經懂得有規律地窮舉了,但是它的運算能力還是不足以窮舉規律之中的棋局的所有可能走勢,畢竟這個運算量對於計算機來說依然是個天文數字。
所以,「阿爾法狗」引進了另一個大殺器,蒙特卡洛樹搜索算法。蒙特卡洛算法,是由美國數學家烏拉姆最早提出再經數學天才馮·諾伊曼發展和完善,以賭城蒙特卡洛命名的一種算法。在過於複雜的局面中,人工智慧由於硬體缺陷,無法實現窮舉級別的採樣,而蒙特卡洛算法正是在採樣不足的情況下,通過儘可能多次的隨機採樣,一步一步接近最優解。舉個簡單例子,有一堆鑽石,每次隨機選一枚,選中更大的就留下。那麼經過越來越多次隨機選擇,最終留下的那枚鑽石,就必然越來越接近這堆鑽石中最大的。
具體到「阿爾法狗」下圍棋這件事上,蒙特卡洛樹搜索算法就是把「阿爾法狗」的「棋感」認為有可能的接下來的棋局都先過一遍(有時是走幾十步之後,有時是走到對局結束),把對自己不利的都刪除掉,剩下的便是勝率最高的走法,而且是每下一步棋時這麼過一遍。
簡而言之,「阿爾法狗」的工作原理就是利用深度神經網絡的學習能力,建立自己的「價值網絡」來分析每一步的收益,並以此來簡化蒙特卡洛搜索樹算法的搜索空間,達到落子合理性和時間消耗的平衡。雖然我們可以簡單地用一句話來概括「阿爾法狗」的精髓,但是實際上,為了實現這一句話,「阿爾法狗」用了170個GPU(圖形處理器)和1200個標準CPU(中央處理器)——在這種配置下,人一生能見識的棋譜還不如「阿爾法狗」一個小時記住的多。