AlphaZero 算法的通用、简单和快速的实现:
- 核心算法只有 2,000 行纯可破解的 Julia 代码。
- 通用界面可以轻松添加对新游戏或新学习框架的支持。
- 这种实现比用 Python 编写的竞争替代方案快一到两个数量级,可以在带有 GPU 的标准台式计算机上解决重要的游戏。
- 可以像在单台计算机上一样轻松地在一组机器上训练同一个代理 ,而无需修改一行代码。
为什么要关心这个实现?
由于 AlphaZero 非常耗费资源,因此成功的开源实现(例如Leela Zero)是用低级语言(例如 C )编写的,并针对高度分布式计算环境进行了优化。这使得学生、研究人员和黑客很难访问它们。
这个项目的动机是提供一个 AlphaZero 的实现,它足够简单,可以广泛访问,同时也足够强大和快速,可以在有限的计算资源上进行有意义的实验。我们发现Julia 语言有助于实现这一目标。
训练连接四智能体
要下载 AlphaZero.jl 并开始训练 Connect Four 智能体,只需运行:
代码语言:javascript复制export GKSwstype=100 # To avoid an occasional GR bug
git clone https://github.com/jonathan-laurent/AlphaZero.jl.git
cd AlphaZero.jl
julia --project -e 'import Pkg; Pkg.instantiate()'
julia --project -e 'using AlphaZero; Scripts.train("connect-four")'
在配备英特尔酷睿 i5 9600K 处理器和 8GB Nvidia RTX 2070 GPU 的台式计算机上,每次训练迭代大约需要一个小时。我们在下面绘制了我们的 AlphaZero 代理的获胜率相对于两个基线的演变(一个普通的 MCTS 基线和一个使用手工启发式在深度 5 计划的 minmax 代理):
不出所料,单靠网络最初是无法赢得一场比赛的。然而,尽管无法执行任何搜索,但它最终明显强于 minmax 基线。
有关使用 AlphaZero.jl 训练 Connect Four 智能体的更多信息,请参阅我们的完整教程。
资源
- JuliaCon 2021 演讲
- 文档主页
- AlphaZero 简介
- 套餐概览
- 连接四教程
- 解决你自己的游戏
- 超参数文档
贡献者
- Jonathan Laurent:主要开发人员
- Pavel Dimens:标志设计
- Marek Kaluba:网格世界示例的超参数调整
- Michał Łukomski:Mancala 示例,OpenSpiel 包装器
- Johannes Fischer:文档改进
非常欢迎对 AlphaZero.jl 的贡献。我们的贡献指南中提供了许多贡献想法。请不要犹豫,打开一个 Github 问题来分享任何想法、反馈或建议。
支持和引用
如果您想支持这个项目并帮助它获得知名度,请考虑为存储库加注星标。在这些指标上做得好也可能有助于我们在未来获得学术资助。此外,如果您将此软件用作研究的一部分,我们将感谢您在论文中包含以下引文。
相关julia项目
- AlphaGPU.jl:一个 AlphaZero 实现,灵感来自“Scaling Scaling Laws with Board Games” 论文,其中几乎所有事情都发生在 GPU 上(包括核心 MCTS 逻辑)。当与支持 GPU 批量模拟的小型神经网络和环境一起使用时,此实现牺牲了一些通用性和灵活性以换取无与伦比的性能。
- ReinforcementLearning.jl:一个强化学习框架,它利用 Julia 的多重分派来提供高度可组合的环境、算法和组件。AlphaZero.jl 的未来版本可能基于此框架构建,因为它获得了对多线程和分布式 RL 的更好支持。
- POMDPs.jl:一个快速、优雅且设计良好的框架,用于处理部分可观察的马尔可夫决策过程。
致谢
本材料基于美国空军和 DARPA 根据合同号 FA9550-16-1-0288 和 FA8750-18-C-0092 支持的工作。本材料中表达的任何意见、调查结果和结论或建议均为作者的意见,不一定反映美国空军和 DARPA 的观点。
其他参考:
最新Tractability易处理的因果推理
再发:迄今为止 脑网络结构功能模块元素 最全面复杂清晰 类芯片多图及分解
概率编程的高度
内感受主动推理的脑岛层级架构
生物躯体稳态控制的第一原理
通过观察随时反馈调整规划