為什麼國際象棋沒有深度強化學習引擎,類似於 AlphaGo?
長期以來,計算機一直能夠使用“蠻力”技術下棋,搜索到一定深度,然後評估位置。然而,AlphaGo 計算機僅使用 ANN 來評估位置(據我所知,它不進行任何深度搜索)。是否有可能創建一個像 AlphaGo 下圍棋一樣下棋的國際象棋引擎?為什麼沒有人這樣做?這個程序會比當今頂級的國際象棋引擎(和棋手)表現更好嗎?
編輯(閱讀論文後):
我仔細閱讀了這篇論文。讓我們從谷歌在論文中聲稱的內容開始:
- 他們用 Monte-Carlo-Tree-Search + 深度神經網絡擊敗了 Stockfish
- 這場比賽絕對是單方面的,AlphaZero 贏得了很多勝利,但 Stockfish 卻沒有
- 他們能夠在短短四個小時內完成
- AlphaZero 像人一樣玩
不幸的是,我認為這不是一篇好的期刊論文。我將通過鏈接進行解釋(所以你知道我不是在做夢):
- https://chess.stackexchange.com/questions/19360/how-is-alpha-zero-more-human對 AlphaZero 如何像人類一樣玩有我的答案
- 這場比賽不公平,帶有強烈的偏見。我引用了 Stockfish 的原始程序員 Tord Romstad。
https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author
比賽結果本身並沒有特別的意義,因為時間控制和 Stockfish 參數設置的選擇相當奇怪:比賽以 1 分鐘/移動的固定時間進行,這意味著 Stockfish 沒有使用其時間管理啟發式 (已經付出了很多努力來讓 Stockfish 識別遊戲中的關鍵點並決定何時在移動上花費一些額外的時間;在每次移動的固定時間,力量會受到很大的影響)。
Stockfish 不可能以每步一分鐘的速度下最好的國際象棋。該程序不是為此而設計的。
- Stockfish 運行在一台普通的商用機器上,而 AlphaZero 運行在一台為 AlphaZero 調整的 400 萬多 TPU 機器上。這就像將您的高端台式機與廉價的 Android 手機相匹配。托德寫道:
一個是在普通計算機上運行的傳統國際象棋程序,另一個使用根本不同的技術,並且運行在無法購買的定制設計硬件上(如果購買的話,這將超出普通用戶的預算)。
- Google 無意中給 Stockfish 的 32 核機器提供了 64 個線程。我引用 GM Larry Kaufman(世界級計算機國際象棋專家)的話:
http://talkchess.com/forum/viewtopic.php?p=741987&highlight=#741987
我同意測試遠非公平;另一個傷害 SF 的問題是,它顯然是在 32 核機器上運行在 64 個線程上的,但是在該機器上只運行 32 個線程會更好,因為幾乎沒有 SMP 的好處來抵消大約 5 到 3 的減速。成本比也比我說的要高;我以為它是 64 核機器,但 32 核機器的成本大約是我猜測的一半。所以也許總而言之,30 比 1 的估計並不是那麼糟糕。另一方面,我認為您低估了它可以進一步改進的程度。
- Stockfish 只給出了 1GB 的哈希表。這是個笑話……我的 iPhone 上的Stockfish iOS 應用程序(免責聲明:我是作者)有一個更大的哈希表!托德寫道:
…對於線程數而言,哈希表太小了…
對於這樣的匹配,1GB 的哈希表是絕對不能接受的。Stockfish 會經常遇到哈希衝突。替換舊的哈希條目需要 CPU 週期。
- Stockfish 不是為運行那麼多線程而設計的。在我的 iOS 國際象棋應用程序中,只使用了幾個線程。托德寫道:
…正在玩的搜索線程比以往任何時候都多得多的測試…
- Stockfish 在沒有打開書或 6 件式 Syzygy 殘局桌面的情況下運行。樣本量不足。Stockfish 版本不是最新的。在這裡討論。
結論
谷歌並沒有毫無疑問地證明他們的方法優於 Stockfish。他們的數字是膚淺的,並且強烈偏向於 AlphaZero。他們的方法不能被獨立的第三方復制。現在說深度學習是一種優於傳統國際象棋編程的方法還為時過早。
編輯(2017 年 12 月): Google Deepmind ( https://arxiv.org/pdf/1712.01815.pdf ) 有一篇關於國際象棋深度強化學習的新論文。從抽像上看,世界排名第一的Stockfish象棋引擎“令人信服”地被打敗了。我認為這是自 1997 年深藍比賽以來計算機國際象棋最重要的成就。一旦我詳細閱讀了這篇論文,我會更新我的答案。
原件(2017 年 12 月之前)
讓我們澄清你的問題:
- 不,國際象棋引擎不使用蠻力。
- AlphaGo確實使用樹搜索,它使用蒙特卡洛樹搜索。如果您想被說服,請谷歌“蒙特卡洛樹搜索 alphaGo ”。
ANN 可用於國際象棋引擎:
這個程序會比當今頂級的國際象棋引擎(和棋手)表現更好嗎?
長頸鹿的演奏水平大約是國際大師級別,大約是 FIDE 2400 等級。然而,Stockfish、Houdini 和 Komodo 都在 FIDE 3000 左右。這是一個很大的差距。為什麼?為什麼不使用蒙特卡洛樹搜索?
- 國際象棋中的材料啟發式很簡單。大多數情況下,棋位的輸贏只是通過計算棋盤上的材料。請記住計數材料不適用於圍棋。材料計數比運行神經網絡快幾個數量級——這可以通過由 64 位整數表示的位板來完成。在 64 位系統上,只需幾條機器指令即可完成。使用傳統算法進行搜索比機器學習**要快得多。**每秒更高的節點轉化為更深入的搜索。
- 類似地,還有非常有用且便宜的技術,例如空步修剪、後期移動減少和殺手移動等。它們運行起來很便宜,而且對 AlphaGo 中使用的方法非常有效。
- 國際象棋中的靜態評估快速且有用
- 機器學習對於優化參數很有用,但我們也有用於國際象棋的 SPSA 和 CLOP。
- 國際象棋中有很多有用的樹減少指標。Go 的情況要少得多。
有研究表明,蒙特卡洛樹搜索不適用於國際象棋。圍棋與國際象棋是不同的遊戲。國際象棋算法不適用於圍棋,因為國際象棋依賴於殘酷的戰術。戰術可以說在國際象棋中更為重要。
現在,我們已經確定 MCTS 對 AlphaGo 很有效,但對國際象棋則不太適用。在以下情況下,深度學習會更有用:
- 調整後的 NN 評估優於傳統算法。然而……深度學習並不是魔法,作為程序員的你仍然需要進行編程。如前所述,我們有類似 SPSA 的東西,用於在國際象棋中進行參數調整的自我對弈。
- 投資,錢!國際象棋中機器學習的錢不多。Stockfish 是免費和開源的,但強大到足以擊敗所有人類玩家。如果有人可以免費下載 Stockfish,Google 為什麼要花費數百萬美元?為什麼要為 CPU 集群付費?誰來為人才買單?沒有人願意這樣做,因為國際象棋被認為是一種“已解決”的遊戲。
如果深度學習能夠做到以下幾點,它將擊敗傳統算法:
- 給定一個國際象棋位置,“感覺”它就像一個人類大師。例如,根據經驗,人類大師不會進入糟糕的路線。傳統算法和深度學習都無法做到這一點。您的 NN 模型可能會為您的職位提供 [0..1] 的概率,但這還不夠好。
讓我指出:
不,長頸鹿(@Tim 發布的鏈接)不使用蒙特卡洛樹搜索。它使用常規的負最大算法。它所做的只是用 NN 替換常規評估函數,而且速度非常慢。
多一個:
儘管卡斯帕羅夫在 1997 年的比賽中被深藍擊敗。《人性》在 2003-2005 年左右真的失傳了,當時克拉姆尼克在一場比賽中輸給了德普弗里茨,沒有獲勝,而邁克爾亞當斯在一場單邊比賽中輸給了集群機器。大約在那個時候,Rybka 被證明對世界上最好的球員來說也太強大了。
參考:
我引用:
在國際象棋中,我們有物質性的概念,它已經對引擎的性能給出了合理的估計,並且可以快速計算。此外,遊戲的許多其他方面可以用 Go 無法完成的靜態評估函數進行編碼。由於許多啟發式方法和良好的評估,EBF(Effective-Branching-Factor)非常小。使用神經網絡代替靜態評估函數會明顯降低引擎速度。