AlphaZero 算法的通用、简单和快速的实现:
由于 AlphaZero 非常耗费资源,因此成功的开源实现(例如Leela Zero)是用低级语言(例如 C++)编写的,并针对高度分布式计算环境进行了优化。这使得学生、研究人员和黑客很难访问它们。
这个项目的动机是提供一个 AlphaZero 的实现,它足够简单,可以广泛访问,同时也足够强大和快速,可以在有限的计算资源上进行有意义的实验。我们发现Julia 语言有助于实现这一目标。
要下载 AlphaZero.jl 并开始训练 Connect Four 智能体,只需运行:
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 智能体的更多信息,请参阅我们的完整教程。
非常欢迎对 AlphaZero.jl 的贡献。我们的贡献指南中提供了许多贡献想法。请不要犹豫,打开一个 Github 问题来分享任何想法、反馈或建议。
如果您想支持这个项目并帮助它获得知名度,请考虑为存储库加注星标。在这些指标上做得好也可能有助于我们在未来获得学术资助。此外,如果您将此软件用作研究的一部分,我们将感谢您在论文中包含以下引文。
本材料基于美国空军和 DARPA 根据合同号 FA9550-16-1-0288 和 FA8750-18-C-0092 支持的工作。本材料中表达的任何意见、调查结果和结论或建议均为作者的意见,不一定反映美国空军和 DARPA 的观点。
其他参考: