Eric Jang:从零开始构建 AlphaGo
Eric Jang – Building AlphaGo from scratch
Guests: Eric Jang
In-depth read · Key ideas, reasoning, and examples, organized by topic.
§01AlphaGo 如何让搜索问题变得可行
Eric Jang 在休假期间做这个项目,起因是一个个人问题:较浅的神经网络,如何支持那些依赖极深层围棋搜索的决策?AlphaGo 在 2014 至 2016 年间取得的突破,已经通过深度学习让原本不可行的搜索问题变得可解。后来的 KataGo 项目进一步表明,实现效率能够带来多大变化:据称,它把训练强大围棋程序所需的算力降低到原来的四十分之一。Jang 认为,如今借助 LLM 辅助编程,只需花几千美元租用算力,就能进行小规模复现;而 DeepMind 早期的工作需要一支团队和数百万美元。
围棋规则本身就揭示了人类判断与算法评估之间的差距。Jang 介绍了中国规则、日本规则和 Tromp-Taylor 规则的不同,也解释了为什么电脑围棋系统偏好判定方式明确的 Tromp-Taylor 规则。人类棋手可以认定一组棋子已没有实际存活机会,于是提前结束棋局;此时依赖的是棋手之间的共同判断。Tromp-Taylor 则让程序继续下到可以通过规则机械判定的结果。正式规则下,某些棋盘区域可能仍计分,这对人类看来会有些奇怪。这个差异也预示了学习型价值函数的作用:人类同样能快速判断某个局面实际上是不是已胜。
组合规模解释了为什么直接搜索不够用。在 19×19 棋盘上,一手棋大约有 361 种选择,一局棋可能持续 250 到 300 手。因此,朴素搜索树的规模约为 361 的 300 次方。部分走法序列会到达同一个棋盘,所以整棵树存在冗余;但合并等价状态仍无法让穷尽搜索变得可行。围棋是确定性游戏,原则上存在精确的获胜策略;障碍在于电脑必须检查的未来局面数量太庞大。
蒙特卡洛树搜索通过扩展选定分支来应对这种规模,而不是预先构建整棵树。Jang 把节点视作棋盘状态,并记录子节点被访问过多少次。这种表示适用于确定性游戏:子状态本身就能说明产生它的动作。UCB1 启发了 AlphaGo 的选择规则。它把动作的估计价值与探索奖励结合起来,因此即使某个分支当前的估值较弱,只要还没被采样,也有机会得到关注。随着分支被访问,奖励会减弱,搜索便会逐渐转向证据更充分的动作。
UCB1 的思路是在动作的估计价值 Q(a) 上加一项探索奖励。Jang 解释,这让搜索可以检查尚未访问的分支,即使它目前没有任何价值证据;而反复访问的分支获得的奖励会更少。他还提到,树节点会记录访问次数。在确定性的围棋中,可以从子状态推断采取过的动作。这些选择让搜索数据结构保持紧凑,并在尝试替代动作与利用当前最强估值之间建立权衡。
这种选择过程仍然只是一种近似。Jang 指出,围棋本身没有随机性;概率来自实际算法对搜索分布进行采样。朴素地对所有合法着法作均匀选择,会把计算分散到一棵稀疏的树上,并把大量算力花在低价值路径上。有用的思路是选择要探索哪些分支,而不是枚举所有可能性。即使如此,如果没有神经网络,要从大量差劲着法中找到少数有价值的动作,计算成本仍然很高。
Keep reading as a member.
You've read the free preview. Become a member to read the rest, with side-by-side reading and downloads where available.