Awesome
Alpha Zero Gobang
当前还在开发中,功能尚不完善
Alpha Zero原理实现的五子棋AI,主要参考了Alpha Zero相关论文和github上的一些开源项目(见下文),代码主要由chatgpt生成但是做了一些调整。写这个项目的目的是为了研究Alpha Zero,同时测试chatgpt在较复杂的项目中的表现。
如何运行
第一步,安装依赖。
因为tensorflow有较多依赖,为了避免冲突,建议先安装conda,然后创建一个新的环境 conda create -n alphazero python=3.10
, 然后执行 pip install -r requirements.txt
安装本项目的全部依赖.
注意以后每次新打开项目都需要 conda activate alphazero
另外需要安装cuda驱动,并且安装cudnn,在ubuntu上安装cudnn执行这个命令即可sudo apt install nvidia-cudnn
第二步,启动训练 python start_train.py
.
如果你想后台执行训练,可以这样 nohup python start_train.py &
,然后可以通过 tail -n1000 -f nohup.out
实时查看训练输出日志
如何启用GPU加速
虽然可以使用CPU训练,但是不开启GPU训练会非常慢,为了启用GPU加速,需要保证你的系统中有安装Cuda,然后在 start_train
中打开gpu配置即可
单元测试
根目录下执行命令 python -m unittest discover tests
可以启动单元测试
代码说明
TODO
Board
:
功能开发
- 完成基本代码逻辑,能正常训练
- 完善单元测试
- 增加狄利克雷噪声以增加探索可能性
- 增加棋盘镜像和翻转功能以增加训练数据
- 增加elo评分
- 增加UI界面
- 优化训练速度
- 增加多进程支持,多显卡并行训练
参考代码
主要参考了如下项目的代码:
非常感谢上述两个项目的作者,你们的开源项目和博客给我非常大的帮助。业余研究使用,有任何错误欢迎指正。
参考文档
- Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm
- Mastering the game of Go without human knowledge
- 如何使用自对弈强化学习训练一个五子棋机器人Alpha Gobang Zero
- A Simple Alpha(Go) Zero Tutorial
for 开发者
- 更新依赖文件:如果引入了新的依赖,那么需要
pipreqs ./
来更新依赖文件
协议
MIT License