Open huyp182 opened 6 years ago
嗯,谢谢!顺便问一下,原文中有pρ和pπ两个策略网络,其中pπ是走棋速度快的,这个代码是不是用pure_mcts代替了pπ?
你指的原文是哪篇?Alphazero论文里好像没有你说的那两个网络,隐隐记得最开始的AlphaGo论文里好像有个快速走棋的。 另外,pure_mcts和训练过程无关,这边只是用来评估看下模型训练效果的
嗯,就是AlphaGo里面的。。。AlphaZero把那个删了吗
两者有很多不同的地方,总的来说AlphaZero的算法简洁又有效了。如果要详细了解的话还是看下论文吧,或者搜搜看别人的对比总结
嗯,,搜到了。不知道policy_loss为什么这样算呢? self.policy_loss = tf.negative(tf.reduce_mean(tf.reduce_sum(tf.multiply(self.mcts_probs, self.action_fc), 1))) 知道reduce_mean(),reduce_sum()的意思,但不知道为什么policy_loss是这个?
还有个问题,AlphaZero版的MCTS在进行一次扩展时是只选择满足a=argmax(Q+u)的那一个action吗?MCTS模拟是要下到终局还是不下到终局,而是根据结点的value来判断?
@782832949 回答你上面那个问题,按照论文里policy_loss = -pi * log p,对应到tf的那个计算方式里,self.mcts_probs就是pi, self.action_fc 就是policy网络输出的log p, 所以那个就是直接按照表达式计算的policy loss.
@BIGBALLON ,我将网络改为resnet+bn 后,发现loss的跳动非常大,比如self-play 300局,会出现loss从2.9 上升到 4.5,或者从3.8下降到2.6,然后agent也没有太学会下棋。训练的方案我基本是按照@junxiaosong 的没有作改动,请问你有没有遇到这种情况,或者说这种要怎么解决比较合适。
@BIGBALLON Hi,我发现大量的计算力都卡在了蒙特卡洛树搜索上,即使增加GPU貌似也无济于事。有没有好的办法能够解决这个蒙特卡洛树搜索效率的问题呢?
@TommyAnqi Excuse me, how did you change it?
@782832949 hello, 我这样回答你的问题吧. 如果你有看AlphaGo Zero 的paper的话, 它们有两个实验,一个是20个blocks(40层conv),一个是40个blocks. 两个Net, 结论是后者更好.
那么,结合ResNet的特性.你加深Net是会带来好处的. 在这里就是model能学到更精准的估计.
来看这个五子棋, 如果按 @junxiaosong 哥的8x8棋盘,原本的net我觉得实际上太浅了.是可以加深的. 那么如果你再加大棋盘的话,我建议是加深层数.
PS: song哥的Net是conv堆积, 建议改成resnet.再考虑加深层数.
最后结论就是你想加大棋盘的话, 建议使用residual block的方式来加深 network. 当然,计算量就会大大提高,需要使用更好的GPU资源来训练 :smile:
have a nice try!