棋类引擎的走法不再只给分数:免训练方法让语言模型找出可复用棋理,解释得分接近三倍
核心概要
国际象棋引擎能走出远超人类的着法,却说不清为什么这样走。一项研究先用引擎评估构造可检验的解释评分,发现八个语言模型直接作答时多依赖棋盘表面特征;随后给出免训练的 BinProp,让模型在胜负局面中反复提出并筛选二值棋理,再据此解释具体着法。国际象棋上八个模型的平均解释得分从直接提示的基线提升到接近三倍,同一套设置也用于围棋、跳棋和将棋。
深度剖析
棋类引擎的着法现在可以用自然语言解释,而且解释质量有了可自动打分的标准,不再只靠人读着像不像。 此前引擎只给出评估分数和首选着法,说明不了选择背后的棋理;语言模型直接写解释时,常停留在棋盘表面特征上。 在100个大师对局起始局面上,八个语言模型直接提示的平均解释得分为0.031到0.173,改用 BinProp 后为0.174到0.296,八个模型全部提升,最低的 BinProp 得分也高于最强的直接提示基线。
做法是先让模型自己找出“在赢的局面里更常成立”的棋理,再用这些棋理去解释某一步为什么比替代着法好。 每条棋理被写成接收棋盘、返回真或假的 Python 函数,因此可以被机械检验,而不是一段无法核对的文字。 棋理从20万个局面中筛选,其中10万个评估在赢的区间、10万个在输的区间,只保留在赢局面出现率高出输局面一个百分点以上的候选,并剔除与已有棋理重叠过多的候选;国际象棋上共保留192条棋理。
解释被当作对比问题处理:要说出走首选着法之后成立、而走较弱替代着法之后不成立的具体棋理。 只看当前棋盘无法判断着法好坏,因为一步棋的价值取决于它开启和阻止了哪些后续变化。 评分时给模型看四个正例和四个反例,再在它没见过的八个正例、八个反例和八个“邻近反例”上测试;邻近反例与正例共享前面的着法、只在最后两拍换成较弱着法,用来排除只抓住无关棋盘差异的脆弱棋理。
启示与展望
这套方法面向需要读懂引擎选择的棋类分析场景,覆盖国际象棋、围棋、跳棋和将棋;国际象棋的解释评分在100个大师对局起始局面上统计,围棋、跳棋和将棋各自使用100个留出对局起始局面。解释以二值棋理为单位,即某个棋理在局面上成立或不成立,而不是连续评估。作者提出可把同类流程用于解释跨数百或数千步的智能体轨迹,但这是未来方向,尚未在棋类之外验证。
解释得分是相对引擎续着构造的指标,衡量的是棋理能否区分正例、反例与邻近反例,并不直接等于人类棋手认可的教学质量。跳棋上并非所有模型都提升,Fable 5 的直接提示得分高于 BinProp。跨模型取最优棋理的得分超过任何单个模型,说明当前棋理排序仍有改进余地。围棋、跳棋和将棋沿用国际象棋的发现设置,但引擎、分数区间与续着采样按棋种单独设定。
