演讲背景与项目初衷

本次演讲由Facebook AI Research的研究科学家田渊栋(Yuandong Tian)主讲,他介绍了由他和同事开发的开源围棋引擎 DarkForest。尽管该引擎的实力 远不及AlphaGo,但其核心价值在于 完全开源,允许任何人下载代码、研究其工作原理。田渊栋表示,“DarkForest is an open source computer go engine... anyone can download the code and use it and study how the go engine works”。项目始于去年五月,历时半年,团队动用了 80到90个GPU 进行模型训练。在与AlphaGo团队交流时,田渊栋透露DarkForest使用的GPU资源仅为AlphaGo的 不到1%,这凸显了资源差异,但也证明了在有限算力下取得进展的可能性。作为《三体》中“黑暗森林”理论的粉丝,他以此命名该引擎,旨在让公众能在KGS平台上体验新一代基于深度学习的围棋引擎。

围棋AI的技术演进:从规则到直觉

围棋被称为“一分钟学会,一生精通”的游戏,其复杂性在于它结合了 模式匹配与搜索,以及 推理逻辑与直觉。早期的计算机围棋程序主要依赖 规则系统(Rule-based),试图由人类专家手动枚举所有规则。然而,由于围棋直觉难以穷尽,这种方法导致程序水平极低。随后,2006年兴起的 蒙特卡洛树搜索(MCTS) 成为重大突破。MCTS本质上是一种 随机化的Alpha-Beta剪枝,它不枚举所有可能,而是通过随机采样游戏空间来扩展树结构,从而找到最佳候选步。这种方法使程序达到了 业余高水平,但仍未触及职业门槛。田渊栋指出,“M research... find a four candidates that are very good... by randomly sample the game search space”,这种基于统计采样的方法虽然有效,但仍需结合人类知识才能进一步提升。

深度学习与DarkForest的性能基准

自2014年起,卷积神经网络(DCNN) 的引入改变了围棋AI的建模方式。DCNN能够自动从数据中学习内部关联,而非依赖人工劳动,从而实现了更强的引擎。DarkForest结合了DCNN与传统搜索算法,其性能在KGS平台上得到了具体量化。纯DCNN模型达到 KGS 3段 水平,而结合传统搜索的DarkForest则稳定在 KGS 5段 左右。在KGS年度锦标赛中,DarkForest获得了 第三名。尽管表现波动较大(有时极强,有时因失误变弱),但它仍是首个在KGS上部署的基于DCNN的开源引擎。以下是DarkForest与其他阶段围棋AI的性能对比数据:

引擎/模型类型 技术架构 KGS等级 备注
早期规则系统 Rule-based + Alpha-Beta 极低 无法枚举所有直觉规则
MCTS引擎 (2006后) Monte Carlo Tree Search 业余高水平 随机采样搜索空间
DarkForest (纯DCNN) Deep Convolutional Neural Network 3段 仅依赖神经网络直觉
DarkForest (完整) DCNN + Traditional Search 5段 结合搜索与网络评估
AlphaGo DCNN + MCTS + 人类数据 职业以上 资源消耗为DarkForest的100倍以上

田渊栋强调,虽然DarkForest在资源上处于劣势,但通过开源架构,它为社区提供了研究 深度学习如何建模围棋直觉 的重要平台,标志着计算机围棋从“搜索主导”向“直觉主导”的范式转变。”

DarkForest 项目演进与开源策略

DarkForest 项目始于 2015 年 5 月,当时团队发现纯深度卷积神经网络(DCNN)在围棋领域是一个值得探索的方向。经过数月的开发,团队于同年 8 月将纯 DCNN 模型部署到 KGS 围棋服务器上进行测试。到了 11 月,Minimax Research 工作完成,此时 AlphaGo 的 Nature 论文已提交审稿,DarkForest 团队实际上是在追赶这一前沿进展。2016 年 2 月,相关论文被接受,随后团队进行了大量改进并正式开源。

"we open source with BSD license so with this license basically means that you can use that code for any reason"

DarkForest 采用 BSD 许可证开源,这意味着代码可用于任何目的,包括商业软件且无需公开源码。项目依赖极少,易于安装运行,并附带预训练的 KJ 3D CNN 模型。该模型在 KGS 服务器上表现优异,每步耗时仅为几分之一秒,足以达到 KGS 的段位水平。此外,团队还开源了基于学习的默认策略(default policy),但新的价值网络(value network)及训练代码尚未公开,预计很快发布。

计算机围棋引擎的核心逻辑

与人类直觉不同,计算机围棋引擎并非依靠“神算”,而是受限于计算资源,必须在效率与强度之间做出权衡。即使拥有超级计算机,也无法穷尽所有可能的棋局分支。因此,引擎的工作流程分为两个核心部分:扩展搜索树(Tree Policy)和局面评估(Evaluation)。

引擎从当前棋局(根节点)出发,通过模拟后续走法扩展搜索树。由于无法搜索至终局,必须在某一步停止并评估当前局面。例如,某个节点评估为“黑棋胜”,另一个节点评估为“白棋胜”,这种受限搜索策略使得引擎能在有限算力下保持足够强度。团队指出,计算机不是上帝,这种折衷方案是构建强大引擎的基础。

MCTS 算法与评估机制详解

在扩展搜索树阶段,团队使用 MCTS(蒙特卡洛树搜索)来决定扩展哪个节点。MCTS 倾向于选择胜率估计值加上探索得分最高的节点进行扩展,这符合人类直觉中关注“关键点”和“突破口”的策略。在评估阶段,主要有两种方法:一是使用默认策略模拟从当前节点到终局的完整对局,以得出胜负结果;二是使用训练好的价值函数模型,直接输入局面并输出一个数值(如黑棋胜率)。

"minart research almost always find the nodes that has highest win rates plus some exploration score"

DarkForest 采用的 MCTS 流程是:从根节点开始,通过选择高胜率节点向下搜索至叶子节点,然后根据树策略扩展叶子节点,并利用默认策略或价值函数进行评估。最后,将评估结果(如黑棋胜)反向传播回根节点,从而累积每个节点的胜率信息。这种机制确保引擎不会在所有分支上平均用力,而是将计算资源集中在更有希望的分支上,实现高效的搜索优化。

搜索策略与博弈树的动态评估

AlphaGo 的搜索机制并非均匀地探索所有可能性,而是基于对分支潜力的实时判断进行动态调整。在搜索过程中,计算机仅在最有希望的分支上投入计算资源,这导致某些分支的搜索深度较浅,而其他被判定为极具潜力的分支则会进行极深层次的挖掘。这种策略的核心在于动态评估:随着搜索的深入,计算机可能会发现某个看似有利的分支中存在能够“杀死”之前所有努力的反制手段(counter move)。一旦检测到这种致命威胁,该分支的权重(wing rat)会迅速降低,促使引擎转向探索其他潜在的分支路径。

"the computer see that branch is very promising and need like further developing... find that yeah there's a counter move in that branch that will kill all your previous effort"

这种机制解释了为何围棋引擎需要复杂的搜索算法,因为静态的评估无法捕捉动态博弈中的局势反转。引擎通过不断重新评估分支价值,确保计算资源集中在最可能决定胜负的关键路径上,从而在有限的时间内做出最优决策。

围棋与象棋评估函数的本质差异

围棋之所以比象棋更难建模,根本原因在于其策略(policy)和价值函数(value function)极难估算。在象棋中,评估函数相对直观,通常可以通过计数棋子数量来判断局势。例如,如果一方损失了骑士或车,通常意味着处于劣势并可能输掉比赛。然而,在围棋中,简单的子力交换或损失(如损失10颗棋子)并不直接决定胜负,因为玩家可能在棋盘的另一侧获得巨大的领地优势。

此外,围棋中单颗棋子的差异足以完全改变局势,甚至行棋顺序(谁先手)在当前局面下也会产生截然不同的结果。这种高度依赖直觉和全局平衡的特性,使得传统方法难以通过简单的规则来量化评估。相比之下,象棋的规则和评估逻辑更为线性,而围棋则需要处理极其复杂的非线性结构,这使得传统的基于规则的建模方法面临巨大挑战。

传统专家系统与深度学习的范式转移

在深度学习出现之前,围棋引擎主要依赖人类专家的知识灌输。专家需要将脑海中的围棋知识转化为书面规则,再由计算机执行。这种方法存在显著缺陷:规则数量庞大且经常冲突,需要人工调整权重以解决规则间的矛盾(例如,当两条规则指向相反结论时,需确定哪条规则优先)。这一过程极其缓慢且难以调试,且高度依赖专家深厚的围棋经验。

"people who have go knowledge try to dump their mind into a piece of paper and then just ask computer to follow the instructions... very slow and hard to tune"

深度学习的引入解决了这一痛点,通过端到端训练(end-to-end training),计算机可以直接从数据中学习规则,而非依赖人工编写。这种方法大幅减少了人为干预,甚至允许不具备深厚围棋背景的研究者(如演讲者自述为“糟糕的围棋玩家”)开发出性能优异的引擎。通过让计算机从海量数据中自动提取模式,深度学习实现了对围棋复杂结构的更优建模,标志着从“人工规则驱动”向“数据驱动”的根本性转变。

深度学习在围棋引擎中的演进历程

利用神经网络预测下一步棋的想法并非全新概念,早在1990年代就有研究者尝试使用小型浅层网络,但当时性能远不及经过精心调参的传统系统,因此未被广泛采纳。然而,随着多层深度神经网络的出现,情况发生了根本性变化。2015年ICM会议上,爱丁堡大学的研究团队发表了一篇论文,展示了一个深度神经网络在无需搜索的情况下即可达到4K-5K级别的水平,这打破了“直觉无法达到高段位”的传统认知。

随后,DeepMind的研究团队使用12层CNN,在与Pachi(一个传统的围棋程序)的对战中取得了11%的胜率。虽然这一胜率看似不高,但展示了显著的趋势。基于这些进展,Facebook团队开发了DarkForest引擎。2016年1月,DeepMind的AlphaGo在自然杂志上发表成果,以4:1的比分击败了职业棋手樊麾,标志着深度学习在围棋领域的重大突破。

研究团队/系统 技术架构 关键性能指标/对比结果 备注
爱丁堡大学 (ICM 2015) 深度神经网络 达到 4K-5K 级别 无需搜索,仅凭直觉评估
DeepMind (早期) 12层 CNN 对 Pachi 胜率 11% 展示显著上升趋势
AlphaGo (Nature 2016) 深度强化学习 4:1 击败 樊麾 (职业棋手) 里程碑式突破

DarkForest 的 DCNN 架构与训练策略

DarkForest 的核心是一个12层的深度卷积神经网络(DCNN),用于预测下一步棋。该网络以当前棋盘状态为输入,提取25个特征平面(feature plans),包括黑白棋子的位置、棋块的 liberties(气)等易于提取的特征。与传统方法仅预测下一步不同,DarkForest 尝试预测接下来三步棋,实验表明这种多步预测策略在胜率上优于单步预测。

模型在170,000 局(170k KJ set)的数据集上进行训练,实现了高准确率。在 KGS 围棋服务器上部署后,该引擎迅速提升至Sweet Down 级别(注:此处字幕识别可能有误,通常指业余高段位或特定评级),并表现出极快的运行速度。这是该论文的主要贡献之一,证明了通过数据驱动的多步预测可以显著提升引擎性能。

模型特性 具体参数/描述 性能表现/对比
网络层数 12 层 DCNN 提取 25 个特征平面
预测目标 下一步 + 后续两步 (共3步) 胜率优于仅预测下一步
训练数据量 170,000 局 (170k KJ set) 高准确率,KGS 评级提升
运行效率 部署后表现 极快的运行速度

相比之下,当时其他方法(如AlphaGo早期版本)的胜率可能更高(字幕提及“80ish”可能指代AlphaGo后续版本的胜率或特定基准),但DarkForest在无需复杂搜索的情况下实现了极具竞争力的表现,为后续基于策略网络的改进奠定了基础。

多线程模拟与同步评估架构

DarkForest 引擎的核心优化之一在于利用现代计算机的多核 CPU 特性,采用 M 线程版本(M-thread version) 的蒙特卡洛树搜索(MCTS)。传统单线程搜索效率低下,而 DarkForest 允许 多个 CPU 同时运行不同的模拟,从而显著提升模拟速率。在架构设计上,系统采用了 客户端-服务器(Client-Server) 模式,将 MCTS 搜索程序与深度卷积神经网络(DCNN)评估程序分离。MCTS 作为客户端,向 DCNN 服务器发送节点评估请求并等待结果,两者之间通过 Unix Pipe 进行通信。

为了平衡速度与精度,DarkForest 实现了两种同步策略。100% 同步版本 严格等待 DCNN 返回结果后再继续搜索,确保评估准确性;而 异步/混合版本 则引入了更快的轻量级评估器。在这种模式下,MCTS 在等待 GPU 返回精确走法的同时,先使用一个 快速但粗略的评估版本 对当前局势进行初步判断,随后在收到 DCNN 结果后更新节点。这种设计虽然增加了实现复杂度,但显著提高了搜索效率。在 December 版本中,系统还引入了 Top-K 策略,即从 DCNN 输出的走法中选取 前 3 到前 5 个 最佳走法作为树搜索的策略基础,以增强搜索的多样性。

"we use like synchronized evaluation... there's two separate programs so for uh for medal research and for uh deep contion Network so we have a client server uh architecture"

默认策略(Default Policy)的演进与实现

默认策略在围棋 AI 中用于快速模拟整局游戏以评估局面胜率。DarkForest 系统整合了三种不同的默认策略:纯规则策略、Pari 开源默认策略 以及 自研的规则+学习混合策略。其中,Pari 是开源社区提供的默认策略软件,DarkForest 将其引入系统并进行了修改。最终,团队摒弃了原有的 Pari 默认策略,转而开发 自研版本,该版本结合了基础规则与基于学习的启发式方法。

在评估死活棋时,系统通过运行默认策略 100 次 来统计存活概率。由于每次模拟路径不同,某些棋子在多次模拟中表现出极低的生存率,从而被判定为 死棋。这种基于概率统计的方法有效解决了计算机难以直观判断局部死活的问题。自研策略通过融合规则与学习成果,其表现优于纯 DCNN 方法,但在整体性能上仍与 AlphaGo 存在差距。目前,DarkForest 的默认策略每步棋运行耗时约 6 微秒,准确率达到 30%。

"we basically move it to uh to our system and in the M version we actually make some changes and we get rid of the pares default policy by writing by our own version of it"

性能基准测试与 AlphaGo 的差距分析

为了量化默认策略的性能,研究借用了 DeepMind 提出的基准测试方法:在职业棋谱的特定步数(如第 15 步)后,应用默认策略进行模拟,观察胜率曲线的收敛速度。理想的默认策略应在较少步数后明确判定胜负,曲线应快速上升并趋于稳定。然而,由于默认策略的不完美性,胜率曲线会呈现 逐渐下降 的趋势,曲线上升越快,系统性能越好。

以下是 DarkForest 与 AlphaGo 在默认策略性能上的关键数据对比:

指标 DarkForest AlphaGo (Nature Paper) 备注
默认策略准确率 30% 24.2% DarkForest 宣称其实际准确率约为 30%
单步模拟耗时 6 微秒 未直接披露 DarkForest 每步棋运行默认策略的时间
胜率曲线收敛速度 较慢 较快 DarkForest 曲线上升速度慢于 AlphaGo

尽管 DarkForest 在单步准确率上略高于 AlphaGo 报告的数值,但在整体系统表现上仍存在显著差距。Zen 和 Crystalkigo 等引擎的作者指出,计算机与人类对局面的判断差异主要源于 错误评估局部死活。例如,计算机可能显示 80% 的胜率,但人类认为局势已败。解决这一问题需要耗费大量时间(如 Zen 作者花费 5-10 年)通过人工修补特殊案例来修正默认策略。目前,价值网络(Value Network) 尚未集成到 DarkForest 系统中,但 AlphaGo 的经验表明,价值网络对于达到超职业水平至关重要。

"if you put uh these two things together uh you will see that it's actually even higher uh better than uh if you just use pure dcnn approach"

策略网络与估值网络的核心作用

AlphaGo 的强大之处在于将直觉与暴力搜索相结合,这类似于人类职业棋手在审视棋局时,无需推演全盘即可判断胜负。这种直觉判断是引擎克服复杂边角情况的关键。如果估值网络(V Network)足够强大,引擎便无需处理所有极端案例,只需依据网络给出的数值进行移动。在 AlphaGo 的论文中,策略网络(Policy Network)与无网络的传统 rollout 相比,性能差异巨大。使用策略网络配合默认策略(Default Policy),其提升幅度约为 500 等级分,这在围棋中相当于两子的优势。这表明,在没有默认策略和估值网络的情况下,早期引擎可能无法战胜人类职业棋手 Fu。

DarkForest 与 AlphaGo 的性能数据对比

尽管 DarkForest 团队已训练出误差率为 0.15 的网络,但由于数据量不足,其性能仍未能超越现有的 Rollout 方法。在与 AlphaGo 的对比中,差异显著。AlphaGo 使用 2015 年 IC 论文中的基础网络,并通过高质量的对弈数据(Play)增强了网络,其策略网络在评估中表现优异。以下是两者关键配置与性能数据的对比:

特性 AlphaGo DarkForest (AF)
策略网络来源 2015 IC 基础网络,经高质量对弈增强 自行训练,数据量较少
默认策略质量 高质量 (High Quality) 基础默认策略
每步思考时间 2 微秒 (Microseconds) 6 微秒 (Microseconds)
训练数据规模 海量人类棋谱 + 自我对弈 相对较少,依赖人类棋谱

“他们使用高质量的对弈策略,每步只需 2 微秒,而我们则需要 6 微秒,且他们的训练数据远多于我们。”

推理的黑盒性与未来挑战

当前 AI 围棋引擎主要依赖直觉与暴力搜索的组合,但这与人类真正的推理过程不同。人类通过概念学习来下棋,而这些概念在计算机引擎的架构中缺乏明确的踪迹。此外,深度规划(Deep Planning)的机制尚不明确,输入数据后输出的“魔法分类器”或胜率预测缺乏可解释性。这种黑盒特性在用于生命攸关的任务时极具风险,因为无法追溯决策根源。最后,无监督训练仍是难题,目前仍需人类棋谱来初始化策略网络,纯自我对弈能否训练出超越人类的引擎仍不确定。

技术问答:速度、缓存与优化

在问答环节,针对训练模型是否比搜索慢的问题,指出虽然从人类感知看很快,但深度网络推理需毫秒级(10^-3),而单次 Rollout 仅需微秒级(10^-6),两者存在100 到 1000 倍的速度差异,因此在需要大量模拟时架构优化至关重要。关于缓存,引擎会存储整个树结构,包括节点及其下一步移动,避免重复请求策略网络。关于训练中的噪声注入,这涉及深度学习中的非凸优化问题,目前主要依赖梯度下降寻找局部最优解,尽管可能存在更深的“山谷”,但该方法在实践中有效,仍是社区待解决的开放性问题。对于时钟管理,引擎采用固定时间管理策略,而非根据局面动态分配时间。

“这是一个非凸函数,我们目前优化的是梯度下降,虽然可能错过更深的山谷,但它神奇地有效。”

DarkForest引擎的实时搜索与决策机制

DarkForest引擎的核心运作逻辑依赖于深度卷积神经网络(DCNN)与蒙特卡洛树搜索(MCTS)的紧密结合。在每一轮决策中,引擎会分配固定的时间窗口(例如一分钟)来执行完整的树搜索过程。当时间耗尽时,系统会强制停止搜索,并截取当前树结构中表现最好的前几个候选着法,最终通过评估选出最优的一步进行落子。这种机制确保了在有限时间内获得尽可能高质量的决策。

"I use that one minutes just to search the entire tree and when the one minute hits then there will be a sweat saying yeah let's stop it and uh once you stop it you take a snapshot of the top uh few moves and you find which move is the best and you just play that move."

在节点扩展阶段,引擎并非完全本地计算,而是向GPU服务器发送请求,利用DCNN服务器提供最佳着法建议。这种架构设计使得计算机围棋引擎能够像AlphaGo一样强大,通过混合DCNN与MCTS技术,实现了从传统搜索到深度学习辅助决策的转变。这种实时交互模式不仅提高了搜索效率,还确保了在复杂局面下能够迅速锁定高价值分支。

训练数据策略:从人类棋谱到自我对弈

关于训练数据来源的讨论揭示了当前AI发展的资源瓶颈。虽然理论上使用AlphaGo级别的自我对弈数据(Self-play data)是提升引擎强度的正确方向,但由于DeepMind并未公开其代码和所有数据,获取海量高质量自我对弈数据极其困难。因此,现阶段的研究者主要依赖顶级职业棋手或业余高手的棋谱来训练模型。

这是因为训练神经网络需要海量的数据支持,而在当前技术条件下,让AI与AI之间进行数百万局对弈以生成训练数据并不可行。尽管未来随着算力提升,完全基于自我对弈的训练可能成为主流,但目前阶段仍高度依赖人类专家的高质量棋谱作为基础数据源。这种数据获取的限制直接影响了模型的泛化能力和最终强度,使得开源社区在追赶顶级闭源引擎时面临巨大挑战。

贴目(Komi)对价值网络的影响与收敛理论

贴目(Komi)的设置对价值网络(Value Network)的训练具有决定性影响。由于胜负概率高度依赖于贴目数值,如果改变贴目规则,必须从头重新训练价值网络,尽管策略网络(Policy Network)的部分权重可能仍具复用价值。从数学角度看,训练过程的收敛性是一个关键问题。研究表明,在大多数情况下,模型会以概率1收敛到局部最小值。

"there's a paper showing that it's very unlikely to happen so most of cases you will go all the way to a local minimum so basically a local Valley that seems to be good if you see local."

虽然存在陷入局部最优解(Local Optima)的风险,即模型可能停留在看似平坦但实际并非全局最优的区域,但理论证明这种陷入平坦区域无法找到下降方向的情况极不可能发生。因此,模型通常能顺利进入一个看似良好的局部山谷。然而,研究者也承认,在百万步之外可能存在更深的价值洼地,这意味着当前的局部最优解未必是全局最佳,这是当前技术阶段面临的理论局限。

动态贴目、循环神经网络及美学应用的探索

针对动态贴目(Dynamic Komi)和循环神经网络(RNN)的尝试显示,目前这些方法的效果并不理想。若仅使用策略网络配合MCTS,改变贴目无需重新训练模型;但若使用价值网络,则必须重新训练以适应新的贴目计算逻辑。此外,虽然RNN能模拟搜索过程,但性能表现不如预期,这仍是一个值得探索的方向。

在更广泛的应用层面,DCNN在美学判断上展现出巨大潜力。例如,应用Prisma能将照片转化为艺术风格画作,证明深度学习可以建模“美”与“丑”的感知。未来,训练DCNN区分建筑设计的优劣(如识别“优雅”与“丑陋”)是完全可能的,这比传统认为的“美学不可量化”更为简单,因为人类的感知可以通过深层神经网络进行有效建模,为艺术和设计自动化提供了广阔前景。

"this is not possible in the past but now is made possible after if you only if you wait maybe a a few seconds I think in the future definitely you can use dp9 Network to train a model that distinguish between good and ugly."