皮卡魚是什麼?
皮卡魚是一款免費開源的象棋引擎:給它一個局面,它回傳它認為最好的著法,並附上一個數值判斷,說明誰佔優。它本身沒有介面,只是一個透過文字指令與圖形程式對話的計算核心,就像藏在引擎蓋下的發動機。這個設計是刻意的:把引擎與介面分開,同一個核心就能同時驅動電腦上的分析棋盤、手機應用程式和網站。皮卡魚成為象棋世界的標竿引擎,原因與 Stockfish 在西洋棋中的地位如出一轍——它比商業軟體更強、完全免費,而且原始碼公開,任何人都可以查證它究竟做了什麼。如果你想了解電腦是如何一步步主宰象棋的,我們的象棋 AI 引擎全景梳理了完整歷史;本文只專注於皮卡魚本身。
皮卡魚從哪來?Stockfish 的血統
皮卡魚是 Stockfish 的衍生作品。Stockfish 是主宰電腦西洋棋十餘年的開源引擎。皮卡魚的作者沒有從零重寫搜尋演算法,而是沿用了 Stockfish 久經考驗的搜尋部分——也就是決定哪些著法分支值得深入、哪些可以安全剪枝的那一層——並把它適配到一個 9x10 棋盤、有河界、有九宮、棋子走法與西洋棋毫無共通之處的遊戲上。評估部分則必須完全重寫:知道車在開放線上強大,絲毫無助於判斷一門需要砲架才能吃子的炮值多少。這段血統解釋了很多細節:指令語言、設定選項、發布慣例與授權條款都來自 Stockfish 家族。它以 GPL v3 發布,意味著可以自由使用與修改,但任何衍生作品也必須以相同條款公開。
皮卡魚到底有多強?
強到「怎麼贏它」這個問題已經沒有認真的答案。在普通的現代硬體上,每步給它幾秒鐘,皮卡魚的水準遠在最強的人類特級大師之上。它不會漏著,不會疲勞,算殺的深度超過任何人類能在腦中維持的極限,而且在平穩局面下的判斷一致性,是沒有棋手能在一整盤長棋裡保持的。真正值得討論的不是人機對比,而是引擎能派上什麼用場。一個 1400 分的棋手,被告知「這個局面落後兩分」毫無收穫;他真正需要的是搞清楚哪一步造成了問題。所以引擎的絕對棋力,遠不如你使用它的方式重要。我們關於象棋等級分的文章重新梳理了人類的分數尺度,也說明了為什麼業餘強手與大師之間的差距,其實小於大師與引擎之間的差距。
什麼是 NNUE?為什麼皮卡魚要多一個檔案?
NNUE 指的是高效可增量更新的神經網路,它是皮卡魚中負責判斷局面優劣的那一部分。傳統引擎用人工撰寫的規則評估局面:車值多少、過河兵值多少、老帥暴露扣多少分。NNUE 用一個在數百萬局面上訓練出來的小型神經網路,取代這張手寫的分值表,從而捕捉到人類始終無法用規則寫清楚的細微之處。關鍵在於「高效」二字:這個網路的設計讓每走一步棋時只需要重算其中很小的一部分,正因如此它才能每秒運行數百萬次。實際使用上,這個網路存放在一個獨立的檔案裡,通常叫 pikafish.nnue 之類的名字。引擎的執行檔本身並不包含它。這是新手最常踩的一個坑,也正是下一節要講的內容。
怎樣下載與執行皮卡魚?
皮卡魚在其公開儲存庫 github.com/official-pikafish/Pikafish 中以編譯好的執行檔發布,提供 Windows、Linux、macOS 與 Android 版本。同一個版本通常還有若干變體,以處理器指令集命名,例如 avx2、bmi2、vnni 等等。它們不是不同的引擎,而是同一個程式針對新舊不同的處理器特性分別編譯的結果。選你的機器能支援的最新那一個;如果啟動時出現「非法指令」錯誤,就退回到更保守的版本。發布壓縮檔裡已經帶了 NNUE 權重檔,正常下載不需要額外步驟。只有當你從原始碼自行編譯時才要自己去取權重:它放在 Networks 儲存庫,取回後與執行檔放在一起。這一步真出問題也不會含糊:引擎載入不了權重時,會印出它嘗試過的路徑和下載網址,然後直接退出——它不會帶著弱棋繼續跑下去。最後要記住:這個執行檔沒有視窗也沒有棋盤,你還需要一個能講同一套協定的圖形介面才能真正用起來。
皮卡魚該怎麼設定?
實際差別幾乎全部來自三個設定。Threads(執行緒)告訴引擎使用多少個 CPU 核心。執行緒越多,每秒檢查的局面越多,但保留至少一個核心能讓機器維持流暢;設得超過實際核心數只會更慢。Hash(置換表)是引擎用來記住已評估局面的記憶體,以 MB 計。給太少,它會反覆重算同樣的東西;給太多,又會跟系統其他部分搶資源。在一般電腦上做分析,幾百 MB 是舒適的區間。第三個其實算不上設定,那就是你給它多少思考時間。棋力隨時間成長,但邊際遞減——從 1 秒到 10 秒提升巨大,從 10 秒到 100 秒就小得多。覆盤自己的對局,每個局面幾秒鐘綽綽有餘。同樣的取捨換到對手身上而不是分析上,就是我們在我們如何平衡機器人難度中描述的思路。
怎樣讀懂皮卡魚的輸出?
引擎會持續輸出一串資訊行,其中三個數字最重要。評估值以「兵」為單位,從走棋一方的視角給出:正數表示走棋方佔優,接近零表示均勢。+1 大致相當於多一個健康的兵的優勢,並不等於贏定了。深度是它已經搜尋的半步數;低深度下的高評估,可信度遠不如高深度下的溫和評估。主變是引擎認為雙方最佳的著法序列,也是最具教學價值的部分:評估值告訴你哪裡不對,主變告訴你為什麼不對。初學者只看數字,會進步的人讀那一整行棋。如果這些行裡的記譜方式對你還很陌生,我們的象棋記譜法指南解釋了各種通行體系。
用引擎提升棋力——以及界線在哪裡
引擎是一台毫不留情的答案機器,這讓它既是最好的、也是最糟的學習夥伴。有效的方法是下完棋之後覆盤自己的對局,而且先想再看:自己先判斷這盤棋是在哪一步轉向的,然後再去核對。當引擎和你意見不同,這個分歧本身就是那一課。無效的方法是點著滑鼠看評估條上下跳動——感覺像在學習,實際上什麼也沒學到。在大約 2000 分以下,多數失利來自你自己更專注就能找到的戰術,而不是只有引擎才能揭示的精妙之處;我們的象棋提升指南給出了更有效的路徑。還有一句顯而易見但仍需說明的話:在與真人對局的過程中使用引擎輔助就是作弊,在任何正規平台與任何棋協都是如此。引擎屬於賽後,或者屬於沒人正在對弈的局面。
不用安裝也能用上皮卡魚
如果你要的只是一個強力引擎來分析局面,其實完全不必安裝任何東西。Xiangqi One 直接執行皮卡魚:在手機應用程式中以原生方式運行,在瀏覽器中則編譯為 WebAssembly,分析全部在你自己的裝置上完成,無需安裝、無需下載權重檔、無需任何設定。你可以打開棋盤、覆盤一局棋,得到上文描述的同一套引擎判斷,深度取決於你的耐心。你對戰的機器人使用同一個核心,只是被刻意限制,以便產生真正值得對弈的對手水準——背後的思路詳見我們如何平衡機器人難度。想立刻分析一個局面,或者與一個校準過的對手下一盤,請打開 Xiangqi One。想了解引擎的整體格局以及電腦如何改變了這項運動,可以繼續閱讀我們的象棋 AI 引擎全景,或瀏覽引擎分類。



