西洋棋
繁體中文

西洋棋 › 認識西洋棋 ›

電腦西洋棋:從深藍到 Stockfish 和 AI

電腦怎麼下棋、深藍怎麼打敗卡斯帕洛夫,以及現在的引擎為什麼強到人類贏不了。

也叫:Computer chess、Chess engine、西洋棋引擎、深藍、Deep Blue、Stockfish、AlphaZero

今天你在手機上就能和一個比世界冠軍還強的電腦下棋,但這件事在幾十年前還是科學家的夢想。這篇從最早的紙上程式講到深藍、Stockfish 和 AI,也說明本站的電腦對手是怎麼來的。想先和電腦過過招,可以直接免費線上下西洋棋。

從紙上程式開始

1950 年,美國數學家香農發表了一篇論文,第一次認真討論「怎麼讓電腦下西洋棋」。他提出的想法:把每一種可能的走法往後推幾步,再替每個局面打分數,選分數最好的那一步。這個想法到今天還是電腦下棋的基礎。

差不多同一時間,英國數學家圖靈也寫好了一個下棋程式,但當時的電腦跑不動,他只好自己用紙筆一步一步照著程式算,算一步常常要花半個小時。

深藍打敗世界冠軍

IBM 的深藍(Deep Blue)是一台專門為西洋棋打造的電腦。1996 年它第一次挑戰世界冠軍卡斯帕洛夫,雖然贏了一局,整場還是以 2 比 4 輸掉。1997 年升級後再戰,深藍以 3.5 比 2.5 獲勝,這是電腦第一次在正式的對局賽中打敗現任世界冠軍。

決勝的第六局,卡斯帕洛夫執黑下卡羅-卡恩防禦,在第七步走錯了次序:

黑方走 h6 想趕馬,深藍卻直接把馬送到 e6。黑王被困在中央,再也沒有機會易位。

這個棄馬在開局理論裡早就有人研究過,黑方的次序一錯,白方就能用一個馬換來長久的攻勢。黑方雖然多了一個馬,但國王一直被打,只走到第 19 步就認輸了:

卡斯帕洛夫在這裡認輸。白方的后、車、象全都瞄準黑王,黑方的馬隨時會被吃掉。

電腦怎麼下棋

往後算:搜尋

電腦會把「我走這步、對方回那步、我再走……」全部列出來,像一棵越長越大的樹。好的引擎會先砍掉明顯不好的分枝,把時間花在有希望的走法上,所以一秒鐘就能看完幾千萬個局面。

打分數:評估

算到某個深度就得停下來,替那個局面打分數:誰的子多、國王安不安全、兵形好不好、棋子活不活躍。分數通常用「兵」當單位,+1 代表白方大約多一個兵的優勢。

背答案:殘局庫

棋盤上只剩七顆子以內時,電腦不用算:所有局面的結果早就算完、存成資料庫,叫做殘局庫。本站的殘局文章,勝負就是用殘局庫確認的。

AlphaZero 和神經網路

2017 年,DeepMind 的 AlphaZero 只知道規則,靠自己和自己下了幾百萬盤棋,幾個小時就學到超越當時最強的引擎。在一場 100 盤的對戰裡,它贏了 28 盤、和了 72 盤,一盤都沒輸。

AlphaZero 下棋的風格很像人:願意長遠棄子、喜歡把棋子放到活躍的位置。之後開源的 Leela Chess Zero 用同樣的方法重做了一次,讓所有人都能使用。

Stockfish:現在最強的引擎

Stockfish 是一個免費、開放原始碼的引擎,全世界的志願者一起改進它。2020 年起,它在傳統的搜尋之外加入了小型神經網路來評估局面,變得更強。它現在是電腦對電腦比賽的常勝軍,強度遠遠超過任何人類棋手。

下得像人的 AI:Maia

最強的引擎對新手來說沒什麼用:它太強,而且故意放水時會走出人類不會走的怪棋。多倫多大學的研究團隊做了 Maia,用大量真人對局訓練,目標不是贏,而是猜「這個等級分的人在這裡會怎麼走」。所以它會犯和真人一樣的錯,下起來比較自然。

本站的電腦對手

本站的四個難度剛好用上這兩種 AI:入門、中級、高級由 Maia 擔任,大師級是 Stockfish。它們都在你的瀏覽器裡執行,不用連到伺服器。各難度大約相當於多少等級分,可以看等級分與頭銜;怎麼選難度,可以看電腦對手與難度。

常見問題

現在還有人能打敗最強的電腦嗎?

在正常的對局裡幾乎不可能。頂尖引擎的強度遠遠超過世界冠軍,就算是特級大師,能和它下成和棋就很了不起了。

職業棋手怎麼用電腦?

主要用來準備開局和檢查自己下過的棋。正式比賽中,對局時使用電腦是嚴重的作弊行為,會被取消資格。

深藍後來怎麼了?

1997 年的比賽之後,IBM 就讓深藍退役,沒有再比賽。它的其中一座機櫃後來被博物館收藏。

動手試試

想體驗被引擎壓制的感覺,就到西洋棋線上玩選大師級;想下得輕鬆一點,挑入門或中級,看看模仿真人的 AI 會犯哪些錯。

開一盤棋練習