我正在根据早期版本的 AlphaGo(AlphaGo Fan 或 AlphaGo Lee)的架构实现一个围棋程序,例如使用策略网络、价值网络和蒙特卡洛树搜索(MCTS)。目前我已经训练了一个像样的策略网络和一个不敏感的价值网络,而且我没有一个快速推出的策略。我所说的“不敏感”是指价值网络无法判断复杂的情况,除非情况简洁,否则只能输出50%左右的胜率。价值网络可以正确判断简洁的棋盘(没有大吵大闹)。
使用这个策略网络和价值网络,我还实现了 MCTS 算法(树节点的评估仅由价值网络完成)。由于价值网络不准确,MCTS 恐怕在 MCTS 的时间还没到之前就容易陷入坏棋。为了更好地微调 MCTS 的超参数,以弥补价值网络不准确带来的不良影响,我有两个问题要问:
- 节点选择由 完成
arg max (p_value + lambda * p_policy/visit_cnt)
。微调参数有lambda
帮助吗? - 直觉上,我希望 MCTS 尽可能地探索。节点扩容阶段,设置扩容条件
expand a leaf once it is visited a very small number of times, like 3
有用吗?我应该使用什么扩展方法?
编辑:第二个问题是关于典型“选择、扩展、评估、备份”MCTS 算法的“扩展”阶段。我认为通过尽快扩展,MCTS 可以更深入地探索,并提供更准确的值近似值。我将参数设置n
为how many times a leaf node is visited before it is expanded
. 我想直观地知道,n
大小n
会影响 MCTS 的性能。