作业5: Mini AlphaGo


(Back to course page)

Edit

作业总览

本次作业使用 python (解释型语言,比 JAVA 更直观),请尽快熟悉 python 语言。本次作业的目的是结合MCTS、强化学习和 Self Play等技术,实现一个简单的围棋 AI 程序。

首先,下载本次作业程序包(点击下载ZIP)

程序包解释:
  • mini_go 是源代码目录
  • requirements.txt 中列举了需要的依赖库,python 版本需要大于等于3.6
  • 代码中深度学习框架使用TensorFlow 1.14,欢迎使用其他框架,代码具体说明参考 mini_go 目录下 Readme 文件

在本次作业中,需要同学们阅读程序,参考其中使用的强化学习算法,并结合 MCTS/ Self Play 方法,完成 AlphaGo / AlphaGo Zero 框架。

Edit

AlphaGo 简介

在之前的作业中,同学们已经深度了解过 MCTS、强化学习中的部分算法。我们将利用这些方法,完成一个围棋 AI。围棋,作为一个状态空间巨大的游戏,使用传统的 tree search 技术已经无法攻克,并且由于局势多变,启发式函数的设计非常困难。 AlphaGo 作为第一个击败人类顶尖职业选手的围棋 AI,AlphaGo 先从大量的人类棋谱中,用监督学习得到了两个 policy networks(一个预测准确率高的策略网络,和一个准确率较低的 fast rollout policy),并在此基础上做强化学习,同时得到 value network, value network 主要用于"启发式函数",评价在目前局势的状况下,每个落子位置的"最后"胜率。 同时,AlphaGo 利用 Self Play 技术,和自己的历史版本对弈,对弈时,先用监督学习得到的高准确率 policy network 作为对手,将提升后的自己保存到一个 pool 中,不断和历史上的自己进行对弈,并对policy network 和 value network 用强化学习算法进行更新。每一步中,在每个可能的落子位置,利用 fast rollout policy 得到的结果和 value network 的估计结合,进行评估,来选择"最优"的一步动作。

其论文 "Mastering the Game of Go with Deep Neural Networks and Tree Search" 正式发表在了 Nature 杂志上,请阅读原文参考实现细节。

续作 AlphaGo Zero("Mastering the Game of Go without Human Knowledge")也刊登在了 Nature 杂志上,AlphaGo Zero 摒弃了人类棋谱,并进一步提升了性能。

作业内容

  1. 阅读AlphaGo 原文(PDF),阅读本次作业代码,熟悉与围棋环境的数据交互方式及 RL 算法在提供的围棋环境下训练的方法,策略网络、值函数网络模型保存的方式。并且完成以下内容:
    1. 在围棋环境中实现 MCTS 方法。(例如,可以使用 RL 算法和Uniform Random 对手对弈,使用两个不同深度的网络结构,训练得到两个策略网络,较深的(通常来说胜率会高一些)作为初始 policy nets,较浅层的作为 rollout policy nets。请注意,提供的 RL 训练代码中,RL Agent 一直执黑棋
    2. 实现对手池方法,将历史上某次迭代后的自己保存到一个 pool 中,作为后续的对手训练。
    3. 用训练完成后的AI vs 用均匀随机 rollout 的 MCTS AI
  2. 尝试修改Mini AlphaGo 中 MCTS 的 rollout 次数、强化学习算法的超参数,得到更好的学习性能,并报告修改的尝试和得到的结果

Edit

作业报告

本次作业需要提交报告和代码以及训练后的模型。报告需详细介绍学习方法和进行的实验尝试。 使用这个文档模版(点击下载) 撰写实验报告。

Edit

作业提交

作业报告 存储为PDF文件,用学号命名,例如151221001.pdf

上传到ftp ftp://www.lamda.nju.edu.cn/introAI19_HW/assignment5/ (用户名: introAI19, 密码: introAI2019)
(注意:该ftp不能替换文件,上传一次后,如果需要修改,请在文件名后加上版本号再上传,例如151221001-1.pdf)

注意:作业严禁抄袭!

The end