Open Egolas opened 6 years ago
特别是关于边缘落子的问题,我在训练了1500轮、3000轮的模型上都测试过,都有这样的问题。我的想法是因为训练轮数不够多,而且因为本身就已经不倾向于在边缘落子,在自我对弈的训练数据中,也就更加缺少这样的情况。 不知道您对这样的情况有什么看法和改进的想法?
我之前训练的时候遇到过类似的情况,有以下解决的方法:
@Egolas 不知道你在测试的时候n_playout是否依然设置的是400,我之前也注意到边缘落子不去堵的情况,当时我把n_playout慢慢增大,记得到3000的时候,就会堵了。其实在AlphaZero论文里虽然训练的时候n_playout设置的是800,但他们测试评估的时候其实会跑几十万次模拟,所以在单步时间允许的范围内增大n_palyout能提高效果,一定程度上解决这个问题。 如果要从算法训练的角度改进的话,我的想法是增加exploration的程度,使得自我对弈数据更多样化,比如增加开局时的噪声,或者最开始几步随机落子,然后在此基础上再自我对弈,以避免自我对弈始终从棋盘中央开始。这是我的想法,没有测试过,供参考。
@junxiaosong 感谢回复。 不知道你说的“测试评估”具体是指的是哪个步骤?是指对模型进行实际测试的时候,比如与蒙特卡洛算法对比的时候与手动与人对弈时? 我现在训练的时候playout设置的是800,与纯蒙特卡洛对比时的playout也是800,我在训练到4500次的时候发现AI有时候会堵边缘落子了,可见训练集的扩大还是有助于解决这个问题。
另外,不知道您目前的网络结构是怎么确定的呢?我尝试增加了一层或两层卷积层(在策略价值网络分共用的网络部分),进行训练时发现一开始就无法进行学习,loss保持在5左右,explained_old_var,explained_new-var均为0,。后来我在每一层卷积层后,ReLU层之前,增加了一层BN层,进行训练,则能继续下降,训练了1500次后,loss达到了2.5附近,然而,与1000次playout的纯蒙特卡洛算法对弈胜率依然较低。与其人工对战时也常乱落子。目前仍在继续训练。 增加神经网络的层数应该能提高网络对数据的拟合程度,但为什么这样改动后反而会使loss无法下降呢?
除此问题之外,不知道您关于您算法中的策略价值网络有什么改进的思路?
测试评估我指的是人工对战的时候,就是发现AI不堵边缘时,尝试把playout设置的大一些,可能就会堵了。 现在使用的网络结构是很随意定的,考虑到实验的棋盘比较小,所以就用了一个很简单的卷积网络,卷积的层数大概就是让最上层的感受野能覆盖整个棋盘。关于你遇到的增加一个卷积层之后就完全不收敛的情况,可以减小learning rate试试。 关于网络结构我也没太多思路,一个可以尝试的就是使用AlphaGo Zero论文中采用的Res Block的结构,当然这边不需要20个block这么多,可能2~3个就差不多了。
您好!我在使用您的代码进行测试的时候(8*8棋盘),训练了4000轮达到了对于4000次模拟的纯蒙特卡洛算法10局全胜的结果,在与5000次模拟的蒙特卡洛算法中5胜5平。但是我在观察与传统五子棋引擎、人类与自我对弈的过程中,发现了两个问题: