呐~ 是吧
我又回来了,依旧是你熟悉的黑白棋,依旧秦时明月的故事背景~
不同的,是你看不到的,用心去感受吧~
啦啦啦~
- python == 3.6
- keras-gpu == 2.2.4
- tensorflow-gpu == 1.14.0
-
src/config.py 参数配置文件,其中
project_root_path
设置为项目路径,需更改 -
src/coach.py 为强化学习 self-play 训练类
-
src/referee.py 为指挥者,指挥两个 player 的交互
-
src/web 为一个简单的客户端/服务端,有着更好的体验玩耍该游戏,demo:https://www.dreamwings.cn/reversi-based-rl
- 服务端启动:
python -m src.web.server.web_ssl_server
,可能需更改 config.py 下的 web_ssl_cert_file、web_ssl_key_file 等参数 - 客户端启动:使用浏览器打开
src/web/client/index.html
- 服务端启动:
-
src/main.py 为程序执行文件,可参照 main 下的说明执行相应的命令
- 查看帮助:
python -m src.main --help
- 训练模型:
python -m src.main train --simu 5 --lr 0.0001 --bs 128 --epochs 20 --use_multiprocessing
,具体参数可参看 src/config.py 中的说明 - 测试模型:
python -m src.main run --vs random_player rl_player
- 查看帮助:
-
tutorial/slide/im0qianqian.pdf 为毕设答辩时所用,毕业论文暂未上传
-
data/best.h5 是提供的模型训练好的参数文件
- 本项目是我的本科毕业设计,可能一些细节还没有仔细完善好,也欢迎大家积极提出 pr
- 因为时间原因,可能这一份 README 组织的并不是很好,也没有去其他地方宣传本份作品,若觉得本项目对你有所帮助,欢迎点一个 star
- 在项目配置中遇到什么问题也欢迎提交 issue
- 大一时的课程设计链接,虽然是同一个游戏,但有了不同的内涵:https://github.com/im0qianqian/Reversi
- 开题报告(2019.02.25 - 2019.03.10)
- 中期检查(2019.04.20 - 2019.04.30)
- 作品验收(2019.05.16 - 2019.05.19)
- 毕业论文(2019.05.20 - 2019.05.29)
- 毕业答辩(2019.05.30 - 2019.06.06)
- 游戏逻辑
- AI (Minimax + Alpha–beta pruning)
- 交互接口
- 简易的 web 服务器,用来和客户端进行交互
- Reversi 游戏逻辑,感谢 Eric P. Nichols 的实现,不过里面有点 bug 千千还是去仔细读懂并修复了QAQ,同时也支持了 Python3
- 不同 AI 参与的指挥者 referee
- Player
- Human 手动操作
- 基于随机策略的 AI
- Botzone 本地 AI 配置(可使用本地 AI 与平台进行对战)
- 基于贪心策略的 AI
- 可贪心使得当前转换棋子数量最大
- 可贪心使得对方行动力最小
- 基于深度强化学习的 AI(最重要)
- MCTS
- Keras NNet
- 多进程 self-play
- TPU 支持(差一个谷歌云存储 QAQ)
- Botzone
- 本地 AI 配置
- 可参与天梯对局的 AI
好难啊啊啊啊啊啊啊,没有进展 QAQ
by im0qianqian 2019.04.04
前些天一直在学习如何用强化学习设计 AI,之后想了想后端的游戏逻辑也要实现,于是这两天开工终于差不多完成了,与 Botzone 的本地 AI 配置交互也差不多可以用了,或许也有隐藏的 bug 等待发现,先这样吧~ 接下来继续学习强化学习~
by im0qianqian 2019.04.09
看了一下午的 MCTS,似懂非懂的样子,那一堆概率上的公式理解起来虽然不难,但却不知道如何推到这一步的 QAQ,明天继续看,早点手动实现进行下一步。
嗯~今天一拳超人第二季也更新了,坐在机房里看了一集,下午吃完饭回来以后一直不想继续看书,刷了几道 HackerRank AI 部分的题目,还是有点无聊~
旁边的位置,依旧空空的,快点回来好不好,都是千千的错,心情越来越奇怪了,还是虚拟一场 cf 打打吧。
by im0qianqian 2019.04.10
感冒了,有点难受,可能是前天淋雨的关系吧!
今天看完了 MCTS,照着步骤应该可以手动实现出来了,但是读了读别的论文发现在 MCTS 中可以结合神经网络进行预测,之前我一直以为这两个是相互独立的关系,唔~再去看看神经网络这块的内容返回来写。
by im0qianqian 2019.04.11
完成了 MCTS 部分,接下来便是神经网络了,不清楚这一块实现起来会不会非常麻烦,今天一直很困想睡觉
哦对,林老师中午给千千打电话了,看样子智能所完挂了???不过一开始就联系的林老师,也希望能够成为他的学生,保佑千千呀~
by im0qianqian 2019.04.12
嗯~这两天没有继续做毕设,一来呢 botzone 上不去了,二来剩下的部分需要深度学习的知识,所以千千想去学学基础啦~就这样~
然后,千千有新导师啦~开心~
by im0qianqian 2019.04.15
坐等今晚天梯上分,哒哒……
by im0qianqian 2019.04.17
五一放假了,然而今天是停电的一天,只能待在宿舍了 QAQ
早晨去了渔人码头做完了 ingress 银牌子的 link,坐等明天到账~
by im0qianqian 2019.04.30
唔,好多好多天没有在这里写过记录了欸~
前几天呀,千千突然对如何训练这个 AI 有了思路,我们呐,可以使用两个 NNet AI 模拟对局,对局结束以后将赢家所有走过的局面赋值 1,输家走过的局面赋值 -1,然后扔到 neural network 里训练,随着 model 的迭代,这种局面会变得越来越好的对吧!
然后便写完了第一个版本的 coach,设置 simulation_count=20
,模拟 20 次对局,使用 10 × 2 次双方交战进行测试,当新的 model 胜率超过阈值 0.55 时便迭代版本。
但是呢~ 真正执行起来感觉大部分时间都用在了 self-play 上面欸,真正的 fit 只占了很少的时间。
怎么办呢?Python 多线程是假的,那我们多进程来实现吧!
于是用了一天的时间把原先的 coach 重构为多进程的版本,然后在本地测试了一番~
以下是本地多进程测试,执行 8 次 self-play
进程数目 | 每次 self-play 时间(单位:秒) | 总时间 |
---|---|---|
1 | 15 | 136 |
2 | 20 | 90 |
4 | 55 | 135 |
8 | 120 | 未知 |
可以发现,进程数目增加时每次 self-play 时间会变长,当然这是正常现象咯~ 好多个进程在争夺显卡资源,如果有再好一点的配置就好啦 QAQ
千千的电脑只有 Intel Core i7-6700HQ
+ NVIDIA GeForce GTX 960M
的配置 QAQ
嗯~ 很早之前 lsx 推荐了 Google 的 colab,然后把自己的程序部署上去试了试,发现执行好慢呀,每次 self-play 需要 50s,fit 起来更慢(感觉是 CPU 在跑的那样子),于是弃坑,继续本地训练
前天的时候想再去 colab 上试试,咦,发生了什么,为什么这么快,那我们就先测试一下吧!
以下是 colab 多进程测试,执行 12 次 self-play
进程数目 | 每次 self-play 时间(单位:秒) | 总时间 |
---|---|---|
1 | 10 | 132 |
2 | 15 | 98 |
4 | 33 | 106 |
8 | 80 | 未知 |
可以发现,这个速度比千千本地好多了,那就放在它上面训练吧!
可是昨天再测试的时候又变得很慢了,虽然搞不懂为什么会这样,跑了跑单进程的例子发现时间正常,会不会 colab 限制了多进程的显卡资源呢?
唔~ 好不容易写好的多进程版本欸,于是千千又去增加了参数 use_multiprocessing
来控制是否使用多进程,这样如果多进程跑不了的话先暂时用单进程替代咯~
不得不说,Google 的 TPU fit 起来是真的快,不过 self-play 时间都差不多咯,千千也给它适配了一下,虽然貌似得用谷歌云存储才能把 model 从 TPU 上存储下来 QAQ,可是谷歌云的注册国家里没有**,导致没有办法注册呢~
前天的时候呀,千千一不小心把训练好的 model 从谷歌云盘里删掉了,然后又从回收站里恢复了出来,可是恢复出来有好几个重名的文件呢,估计是历史版本吧!
可是这些版本里哪个是最好的呢,千千又让他们之间进行对局整合了一份表单,挑选出来最好的版本,然后好奇之下去使用文件 MD5 值看看这个版本是第几次 iteration 的结果,然后,然后它居然是第一次的 QAQ,也就是说之后的几个版本都白训练了?
一定是参数设置的太宽松了,去改改接着训练~ 呐,就是这样啦~
接下来几天搞搞论文,程序呢就放在 colab 上跑啦~
by im0qianqian 2019.05.09
现在完成了 93 次迭代,其中成功了 24 次,每一次都得一个多小时呢 QAQ,botzone 中的最新 rating 已经超过 1000 分啦~ 开心,这是个值得纪念的时间点呐!
by im0qianqian 2019.05.15
???为什么昨天晚上 colab 从第 17 次迭代开始的?
by im0qianqian 2019.05.16
这几天都在赶论文呢 QAQ,进度 75%
by im0qianqian 2019.05.21
保佑保佑,今晚查重率超低~
by im0qianqian 2019.05.23
小组答辩结束,欢迎新一轮的大组答辩呐~ 2019.06.06
by im0qianqian 2019.05.31
恭喜千千喜提校优 + rk 1,感谢周老师最后的把关指导,感谢大家的捧场!QvQ,以后的研究生生活继续努力~
by im0qianqian 2019.06.06
The End.