jqe:新的最強揭棋電腦
作者 Brian H. Liou · 與 Claude 合寫 · 由英文機器翻譯發布於 2026年10月27日
揭棋在 Mistboard 上有了新的最強電腦。jqe 是 Devin O'Keefe 開發的開源引擎,10 月 13 日首次發佈,我們經他許可在這裡使用它。它對此前最強的電腦 AB-JChess 0.2d 贏了 171 盤,和 15 盤,輸 114 盤,約合 67 Elo。現在就可以和它下一盤;AB-JChess 仍留在電腦階梯上,排在它下面一級。
這 300 盤棋來自 150 組暗子佈局,每組紅黑互換各下一次,每步 4 秒,用的是本站的設定。同一組佈局的兩盤都贏,jqe 做到了 43 次,AB-JChess 做到了 19 次。全部 300 盤都在一個研究裡,每盤一章。
jqe 給翻子打分和精確方法一樣準,代價只有十分之一
每一次翻子都是一場引擎必須估價的賭博。暗子一動就會翻開,所以引擎走暗子時並不知道自己走的是什麼。它會對這個暗子可能是的每一種棋子各走一次這步棋,給每種結果打分,再按每種棋子還有多少下落不明加權平均。我們看過的揭棋引擎都是這樣做的。
常用的捷徑會讓翻子看起來比實際更安全。為了節省時間,搜尋一旦知道某步棋不如目前最好的一步,就會停止計算,交回一個界限,也就是「最多這麼多,或者更差」,而不是真實的分數。用來比較著法沒有問題,放進平均裡就錯了:一個會被將死的棋子,可能以「不超過 +7」的形式返回,然後被當成 +7 計算。我們的皮卡魚電腦有這個缺陷,我們檢查過的那個 AB-JChess 版本也有。翻子錯誤那篇文章展示了它讓我們的電腦走出了哪些棋。
精確的修正方法早在 1983 年就有了,但它很慢。Bruce Ballard 的 Star1 在搜尋每一步帶隨機性的著法時,都設定能讓每種結果如實返回的界限,所以平均值是對的。jqe 的報告在 jqe 實戰走過的 72 次翻子上,測量了這兩種方法,以及 jqe 自己的方法:
| 方法 | 高估幅度 | 搜尋局面數 |
|---|
| 常用的捷徑 | 0.021 | 1 倍 |
| Star1,精確(Ballard,1983) | 0.009 | 11.5 倍 |
| jqe 的方法 | 0.009 | 1.15 倍 |
每種方法對 jqe 的 72 次翻子高估了多少(以期望得分計,0.01 即一百分中的一分),以及需要多少搜尋量。資料來自 jqe 的報告。jqe 只多花 15% 的工作量,就達到了 Star1 的準確度。對走動的暗子可能是的每一種棋子,它都少搜 6 個半回合的深度,並且不做截斷,所以每種棋子返回的都是真實分數;同時它還會對可能性最大的那種棋子做完整深度的搜尋。
我們修復皮卡魚電腦時只修了它正在選擇的那一步,因為在每次翻子都取精確平均會讓它弱大約 150 Elo。jqe 這個更省力的版本用在所有地方,反而有提升。
比 AB-JChess 小 90 倍的神經網路
jqe 用一個 1.5 MB 的神經網路評估局面,比 AB-JChess 0.2d 使用的網路(2026 年 10 月 10 日版;AB-JChess 之後的版本可能會更換)小大約 90 倍。jqe 的網路只用它自己的對局訓練,共 8200 萬個局面,而 AB-JChess 的第一個網路用了大約十億個局面。小網路運行起來很快:同樣的時間裡,jqe 看的局面大約是 AB-JChess 0.2b(0.2d 的上一個版本)的 30 倍。它的輸入還會統計每一枚仍然蓋著的暗子,所以它能看出一次翻子可能翻出什麼。
jqe 對局面的判斷比 AB-JChess 更準
兩個引擎每走一步都會報出一個分數,我們用為各引擎分別擬合的曲線把它換算成勝率。有 142 盤棋,jqe 給自己 75% 或更高,而 AB-JChess 在前一步或後一步只給 jqe 60% 或更低。這些棋 jqe 贏了 116 盤。反過來的情況出現在 33 盤棋中,AB-JChess 贏了其中 23 盤。
下面前兩盤棋裡,AB-JChess 的一個暗子翻出來是車,而且正好落在 jqe 能吃掉它的位置。第三盤裡,兩個引擎對誰佔優看法不一。
第 46 盤:jqe 第 8 回合吃掉車
jqe 執黑。第 8 回合,AB-JChess 的一個暗子吃掉 jqe 的一個子,翻出來是車,jqe 的一個暗子隨即把它吃回。AB-JChess 直到第 18 回合都認為局勢接近;jqe 第 35 回合將死對方。
第 239 盤:炮將軍,贏得一車
jqe 執紅。第 5 回合,AB-JChess 把一個暗子往前走,翻出來是車。jqe 的炮離開邊線,到中路將軍,同時讓出這條直線,給它身後的暗子打開通路;黑方怎麼應將都保不住這個車。AB-JChess 到第 16 回合才第一次給 jqe 75%;jqe 第 39 回合將死對方。
第 152 盤:AB-JChess 錯過殺棋,丟了一車
jqe 執黑,而且處於下風:從第 19 回合起,兩個引擎都給 AB-JChess 86% 或更高。第 22 回合 AB-JChess 有一套連殺,第一步是車吃兵;讓 AB-JChess 自己搜得更久,它也能找到。實戰中它卻用另一個車吃士將軍,jqe 的將吃掉了這個車。AB-JChess 報告這步棋是勝勢,但這個分數是它的搜尋在 4 秒用完時還沒驗證完的。同一步棋給它 15 秒,它的評分約為紅方多四個兵,遠不及它放棄的殺棋。這次比賽中兩個引擎每步都正好 4 秒,搜尋沒把握時也不加時,第 152 盤說明了這樣做可能付出的代價。
jqe 一吃掉車就給自己 81%,再走一步就是 99%。第 23 回合之後 AB-JChess 仍給自己 95%,第 24 回合才跌到 9%。jqe 第 36 回合將死對方。
jqe 也不總是對的。第 40 盤,jqe 在自己的最後一步給自己 67%,而 AB-JChess 只給它 2%,下一步就將死了它。
它排在哪裡
jqe 排在揭棋電腦列表的最上面,比 AB-JChess 高一級,皮卡魚的各個級別排在它們下面。它對 AB-JChess 0.2d 的領先,比當初對較舊的 0.2b 要小,因為新版本更強:0.2d 對舊版的勝幅約為 54 Elo。
| 對手 | 用時 | 對局數 | 結果 | Elo | 區間 |
|---|
| AB-JChess 0.2d | 每步 4 秒 | 300 | 171-15-114 | +67 | +31 到 +104 |
| AB-JChess 0.2b | 每步 4 秒 | 100 | 71-4-25 | +173 | +101 到 +262 |
| AB-JChess 0.2b | 每步 15 秒 | 50 | 33-4-13 | +147 | +58 到 +261 |
| AB-JChess 0.2b | 60 秒 + 0.6 秒 | 1,000 | 701-24-275 | +158 | +136 到 +181 |
| 我們的皮卡魚電腦 | 60 秒 + 0.6 秒 | 1,000 | 761-20-219 | +211 | +187 到 +236 |
jqe 的戰績:勝-和-負。區間為 95% 信賴區間。最後兩行來自 jqe 自己的報告,用的是其作者的裁判程式;其中的皮卡魚對手是我們 9 月 21 日的皮卡魚電腦,當時還沒有修復翻子錯誤。每一行都是一場獨立的比賽,暗子佈局和設定各不相同,所以這些差距不能相加。我們的比賽在我們自己的裁判程式上進行,它的規則和 jqe 的不完全一樣:任何三次重複局面都判和,任何連續 60 回合無吃子也判和;而按 jqe 自己的規則,長將的一方判負,連續 40 回合無吃子判和。對 0.2d 的 300 盤裡,有 15 盤以重複局面結束,還有一盤超過了 40 回合無吃子,最後 jqe 贏下。裁判程式還會把被暗吃的棋子向雙方引擎公開,而在本站只有吃子方才知道它是什麼。兩個引擎看到的資訊相同,所以誰也沒有因此佔便宜。
致謝
jqe 以 MIT 授權開源,地址是 github.com/devinokeefe/jieqi,其中包括它的神經網路、比賽紀錄,以及能重算報告中每一個數字的工具。恭喜 Devin O'Keefe,也感謝他允許我們在這裡使用它。同樣感謝 Huorongrong 和 Laoxu,他們的 AB-JChess 是 jqe 必須超越的標竿。