Junxiao Song
Junxiao Song
We use the negative value of the state, this is because alternate levels in the search tree are from the perspective of different players and the Q-values are in fact...
@gmftbyGMFTBY leaf_value是从leaf节点的视角考虑的,leaf value传入后是用来更新Q value的,而leaf节点的Q value是给它的父节点选择分支的时候用的,所以这个Q value是从父节点的视角出发的,所以leaf节点自身的leaf value和自身的Q value就是从相反的视角考虑的,所以传入时就加了负号。
这两个model都是训练了3000~4000多局自我对局得到的,model2是后期代码稳定了一次性跑出来的,另一个没记错的话是在一个learning rate下跑了1000局,然后改了下learning rate,以1000局得到的model初始化又跑了3000局
这边的关注点是AlphaZero算法,所以我们使用最简单的无禁手的五子棋作为训练对象。如果有兴趣要实现五子棋正式比赛的规则,或者其他棋类游戏,都可以在game.py中实现
我觉得理论上是可以的,AlphaGo出来之前很多人应该就是这么做的,但效果应该会变差吧,因为策略网络其实就是在搜索的时候给出一些更有潜力的分支,这样能提高搜索效率,把有限的搜索次数用在最关键的部分
看了下确实有问题,应该还是得用data_format='channels_first',这个tensorFlow版本是其他同学贡献的,当时看了,但没有发现这个问题,感谢指出。不知道是否方便帮忙修一下,提个pull request呢?
已合并#29 ,多谢
@xinrui-zhuang 调用的时候,模型名字直接用"best_policy.model"即可加载
@xinrui-zhuang 意思是把64-72行全部注释掉,那一段的目的是让大家可以只用numpy就能加载提供的模型并和它对战;然后取消60-61行的注释,这两行是加载自己训练的模型用的,不管你是用的Theano/Lasagne, PyTorch 还是 TensorFlow
@xinrui-zhuang 感觉1500个epoch对于12*12的大棋盘来说太少了,另外issue #14 #13 中的一些讨论也可以参考