Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

遇到好像是陷入了local minimum的问题 #14

Closed
GeneZC opened this issue Mar 8, 2018 · 17 comments
Closed

遇到好像是陷入了local minimum的问题 #14

GeneZC opened this issue Mar 8, 2018 · 17 comments

Comments

@GeneZC
Copy link

GeneZC commented Mar 8, 2018

在自我对弈的训练中最终陷入到两方都只进攻不防守,导致一局棋很快就结束了而且局面都比较类似,这种情况的问题在哪里?

@junxiaosong
Copy link
Owner

是每次训练最后都是这个情况,还是偶尔一次会到这个情况?大概跑了多少对局之后出现这种情况?出现这种情况的时候有没有人工和模型对战一下,也是不会防守么?

@GeneZC
Copy link
Author

GeneZC commented Mar 9, 2018

11*11的棋盘 每次训练都会遇到这种情况 大概跑了1500局之后 试了人工对战,就是不会防守

@junxiaosong
Copy link
Owner

8 * 8的棋盘跑过是正常的么?如果8 * 8的棋盘训练正常,现在只是增大了棋盘但没有改训练参数就出现这个问题的话,我的建议是可以试试减小mcts_alphaZero.py中dirichlet噪声的参数,具体可以看一下issue 13,现在代码里用的是0.3,可以减小到0.15或0.1,可能可以避免自我对弈每局局面都很类似的情况。

@GeneZC
Copy link
Author

GeneZC commented Mar 9, 2018

好的 我试试

@GeneZC
Copy link
Author

GeneZC commented Mar 9, 2018

还有我想问这与没有异步实现蒙特卡洛树搜索有没有关系

@junxiaosong
Copy link
Owner

我觉得没有关系的,现在每一步用于训练的mini-batch数据也都是从self-play生成的data buffer中随机采样的,不是只用最近一局的数据,所以和一边生成self-play数据一边训练逻辑上差异不大

@GeneZC
Copy link
Author

GeneZC commented Mar 16, 2018

已解决

@GeneZC GeneZC closed this as completed Mar 16, 2018
@junxiaosong
Copy link
Owner

Hi @GeneZC , 能分享下你这边最后发现了什么问题,以及如何解决的么?感觉很多童鞋都有遇到类似的问题,可能有些经验可以供大家借鉴一下

@GeneZC
Copy link
Author

GeneZC commented Apr 26, 2018

  1. 减小dirichlet噪声
  2. 增大simulation的数量
    通过上面的两点在我这里可以缓解我之前遇到的对局过于类似的情况

@GeneZC
Copy link
Author

GeneZC commented May 24, 2018

其实很多时候出现这种情况在我这里往往是因为训练的时间不够长,这才是最关键的地方

@jialeli1
Copy link

  1. 减小dirichlet噪声
  2. 增大simulation的数量
    通过上面的两点在我这里可以缓解我之前遇到的对局过于类似的情况
    你好,请问一下你在1515棋盘的时候最终解决不会堵棋这个问题的时候除了这两点还有其他的一些操作吗?因为我在训练1515的时候调整了这两点但是训练很久过后发现它能较好为自己五连落子,但还是不会堵棋,有些困惑。我猜想原因可能是网络过于简单,可以引入残差结构,另外我还自己和筛选模型的MCTSplayer下了几次,我发现这个筛选器的棋力就很不好,所以我怀疑是不是最终筛选方式不合理?希望你能给我一点经验建议 ;-)

@GeneZC
Copy link
Author

GeneZC commented Nov 12, 2018

@jialeli1

  • 引入残差结构最好,我在最后的时候用了3个残差层,但我建议15这样的大棋盘最好能用到4个以上的残差
  • 还有就是我觉得mcts不要继续使用python来编写了,python的mcts真的很慢,这样效率不高

@jialeli1
Copy link

@jialeli1

  • 引入残差结构最好,我在最后的时候用了3个残差层,但我建议15这样的大棋盘最好能用到4个以上的残差
  • 还有就是我觉得mcts不要继续使用python来编写了,python的mcts真的很慢,这样效率不高

好的,我决定试试添加残差,多谢辣!

@baimantou
Copy link

@jialeli1
关于15 15的棋盘的问题,可以交流一下嘛,我的模型训练不出来,不知道咋回事,可以解答一下嘛,万分感谢

@anxingle
Copy link

8 * 8的棋盘跑过是正常的么?如果8 * 8的棋盘训练正常,现在只是增大了棋盘但没有改训练参数就出现这个问题的话,我的建议是可以试试减小mcts_alphaZero.py中dirichlet噪声的参数,具体可以看一下issue 13,现在代码里用的是0.3,可以减小到0.15或0.1,可能可以避免自我对弈每局局面都很类似的情况。

@junxiaosong 减小到0.1的话,减小了dirichlet噪声。不是会导致局面类似吗?

@junxiaosong
Copy link
Owner

8 * 8的棋盘跑过是正常的么?如果8 * 8的棋盘训练正常,现在只是增大了棋盘但没有改训练参数就出现这个问题的话,我的建议是可以试试减小mcts_alphaZero.py中dirichlet噪声的参数,具体可以看一下issue 13,现在代码里用的是0.3,可以减小到0.15或0.1,可能可以避免自我对弈每局局面都很类似的情况。

@junxiaosong 减小到0.1的话,减小了dirichlet噪声。不是会导致局面类似吗?

@anxingle 说的是减小dirichlet噪声的参数alpha,这个会让dirichlet噪声更peak,不是减小dirichlet噪声前面的权重

@anxingle
Copy link

@anxingle 说的是减小dirichlet噪声的参数alpha,这个会让dirichlet噪声更peak,不是减小dirichlet噪声前面的权重

我理解错了,原来是这样! 😸

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants