# Mini-Go **Repository Path**: typoverflow/mini-go ## Basic Information - **Project Name**: Mini-Go - **Description**: 基于蒙特卡洛树搜索与神经网络的围棋对战程序 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-03-07 - **Last Updated**: 2022-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mini Go 在5×5棋盘上复现的Alpha-Go Agent ## 环境 + OS: Ubuntu 18.04 + python及第三方库见`requirements.txt` ## 代码结构 ```bash . ├── a2c_vs_random_demo.py ├── agent │ └── agent.py # MCTS实现 | ├── algorimths │ ├── dqn.py # DQN │ └── policy_gradient.py # A2C | ├── dqn_vs_random_demo.py ├── environment # 棋盘环境 │ ├── coords.py │ ├── GoEnv.py │ └── go.py | ├── iteration_dqn.py # 对手池:DQN ├── iteration_pg.py # 对手池:A2C ├── MCTS_vs_random_MCTS_demo.py # 使用神经网络的MCTS vs 随机MCTS ├── MCTS_vs_random.py ├── README.md ├── README.pdf ├── requirements.txt ├── rl_loop.py └── test ├── random_test.py └── test_GoEnv.py ``` ## 说明 + 本项目为在5*5棋盘上复现的Alpha-Go算法。在MCTS的基础上,Alpha-Go额外使用了三个神经网络:策略网络用于为策略生成先验评估,rollout网络用于在rollout阶段快速扩展,估值网络用于在rollout截断时为当前场面的价值进行评估。本项目使用DQN算法训练得到的Q函数作为策略网络和rollout网络,使用A2C算法中的Baseline(见Advantange Actor-critic)作为估值网络。 + 为了保证网络训练,本项目还实现了对手池算法,即令Agent不断从版本池中取出旧版本进行对弈。见`iteration_DQN.py`和`iteration_pg.py`。 ## 性能 + 实验对比对象为使用完全随机的MCTS Agent。Mini-Go Agent的胜率约为74% ![](img/2021-03-07-20-13-24.png)