junxiaosong / AlphaZero_Gomoku

An implementation of the AlphaZero algorithm for Gomoku (also called Gobang or Five in a Row)
MIT License
3.25k stars 965 forks source link

关于五子棋训练的问题 ,以及explain_var_old的意义 #68

Open tfliu opened 5 years ago

tfliu commented 5 years ago

首先感谢分享程序。 请问在6x6 四子棋的训练过程中,有没有调节learning_rate或者其他参数? 程序里的c_puct=5 , 温度t=1,学习率 0.002,batch_size 512 , deque最大长度10000, kl-targ=0.02 ,epochs=5 我使用你程序里的预设参数 tensorflow训练6x6 四子棋 ,loss下降到2左右就无法下降了,调节学习率也没成功。。。求帮助解答,谢谢

另外,不明白explain_var_old这个参考数值的意义。

junxiaosong commented 5 years ago
  1. loss下降到2左右之后,你有尝试人工对战评估下AI的情况么?可能已经学的不错了?因为loss确实是不会一直下降的,我也记不太清6x6四子棋最后loss跑到多少了,只记得8x8五子棋最后loss跑到2.2左右
  2. explain_var_old这个数值可以用来看value function的学习情况,小于0说明预测很不准,比较理想的情况是在0~1之间逐渐增大
tfliu commented 5 years ago

谢回答。explained_var_old = (1 - np.var(np.array(winner_batch) - old_v.flatten()) / np.var(np.array(winner_batch))),(分布a-分布b) 的方差/分布a的方差,请问这个公式出自哪里。。 和6x6对战试了下,基本没问题了。8x8有明显的边缘失策,如同其他回复下说的一样。 个人觉得很可能是 cnn做卷积的时候对边缘的zero-padding导致的,我猜想如果将边缘位置作为输入cnn的显式特征,例如单独一张边缘特征图输入这样。。会不会好一些。 当然,增大playout次数应该是最直接的方法