强化学习:微调 MCTS 节点选择和扩展阶段,取值不准确
Reinforcement Learning: fine-tuning MCTS node selection and expansion stage with inaccurate values
我正在大致按照早期版本的AlphaGo(AlphaGo Fan或AlphaGo Lee)的架构实现一个围棋程序,例如使用策略网络、价值网络和 Monte Carlo 树搜索 (MCTS)。目前我已经训练了一个像样的策略网络和一个不敏感的价值网络,而且我没有快速推出策略。 "insensitive" 我的意思是,价值网络无法判断复杂的情况,除非情况简洁,否则只能输出大约 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
有帮助吗?我应该使用什么扩展方法?
编辑:第二个问题是关于典型 'selection, expand, evaluation, backup' MCTS 算法的 'expand' 阶段。我认为通过尽可能快地扩展,MCTS 可以更深入地探索,并给出更准确的值近似值。我将参数 n
设置为 how many times a leaf node is visited before it is expanded
。我想直观地知道,大 n
和小 n
会影响 MCTS 的性能。
- Node selection is done by
arg max (p_value + lambda * p_policy/visit_cnt)
. Does fine-tune the parameter lambda
help?
让我们首先尝试更好地理解该公式中所有项的作用:
p_value
:通过此节点的迭代结束时所有评估的平均值。这是我们目前根据价值网络在推出结束时的评估对该节点的评价。
p_policy/visit_cnt
:p_policy
对于根据您的策略网络看起来不错的节点来说会很高,对于根据您的策略网络看起来很糟糕的节点来说会很低。 visit_cnt
对于我们已经经常访问过的节点来说会很高,对于我们还没有经常访问过的节点来说会很低。这个完整的术语使我们最初''lean towards''策略网络,但随着时间的推移远离策略网络(因为根据策略网络好的节点将具有高访问次数)。
lambda
:决定上述两点的第一项和第二项之间平衡的参数。如果 lambda
高,我们将更多地依赖策略网络给我们的信息,而不是价值网络给我们的信息。如果 lambda
较低,我们将更快地开始依赖早期 MCTS 迭代 + 价值网络评估提供给我们的信息,并减少对政策网络的依赖。
在您的问题文本中,您已经声明您认为政策网络是不错的,而价值网络并没有提供真正的信息。因此,如果是这种情况,我会尝试为 lambda
使用高值:如果您认为策略网络比价值网络提供更多信息,那么您将更多地依赖策略网络而不是价值网络,所以你会想要一个高 lambda
.
- Intuitively I want MCTS to explore as further as possible. In node expansion stage, does setting the expansion condition as expand a leaf once it is visited a very small number of times, like 3 help? What expansion method should I use?
扩展阶段在经典 MCTS 实现中通常相当有限(例如每次迭代通常只扩展一个节点)的唯一原因是内存问题;如果你扩展得太频繁,你的树长得太快,你就会 运行 内存不足。
在这些 AlphaGo 风格的设置(混合深度学习 + MCTS)中,您通常会在这些网络中使用更多的计算时间,因此与没有任何深度学习的原始纯 MCTS 算法相比,获得的 MCTS 迭代要少得多(但通常质量更高/信息量更大的迭代,这弥补了较低的迭代次数)。这种较低的迭代次数显着降低了 运行 由于过度扩展而导致内存不足的风险,因此我怀疑您可以负担得起更积极的扩展。过度扩展的唯一可能的负面影响是 运行 RAM 不足,当发生这种情况时您会很容易注意到,因为您的程序会崩溃。
我正在大致按照早期版本的AlphaGo(AlphaGo Fan或AlphaGo Lee)的架构实现一个围棋程序,例如使用策略网络、价值网络和 Monte Carlo 树搜索 (MCTS)。目前我已经训练了一个像样的策略网络和一个不敏感的价值网络,而且我没有快速推出策略。 "insensitive" 我的意思是,价值网络无法判断复杂的情况,除非情况简洁,否则只能输出大约 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
有帮助吗?我应该使用什么扩展方法?
编辑:第二个问题是关于典型 'selection, expand, evaluation, backup' MCTS 算法的 'expand' 阶段。我认为通过尽可能快地扩展,MCTS 可以更深入地探索,并给出更准确的值近似值。我将参数 n
设置为 how many times a leaf node is visited before it is expanded
。我想直观地知道,大 n
和小 n
会影响 MCTS 的性能。
- Node selection is done by
arg max (p_value + lambda * p_policy/visit_cnt)
. Does fine-tune the parameterlambda
help?
让我们首先尝试更好地理解该公式中所有项的作用:
p_value
:通过此节点的迭代结束时所有评估的平均值。这是我们目前根据价值网络在推出结束时的评估对该节点的评价。p_policy/visit_cnt
:p_policy
对于根据您的策略网络看起来不错的节点来说会很高,对于根据您的策略网络看起来很糟糕的节点来说会很低。visit_cnt
对于我们已经经常访问过的节点来说会很高,对于我们还没有经常访问过的节点来说会很低。这个完整的术语使我们最初''lean towards''策略网络,但随着时间的推移远离策略网络(因为根据策略网络好的节点将具有高访问次数)。lambda
:决定上述两点的第一项和第二项之间平衡的参数。如果lambda
高,我们将更多地依赖策略网络给我们的信息,而不是价值网络给我们的信息。如果lambda
较低,我们将更快地开始依赖早期 MCTS 迭代 + 价值网络评估提供给我们的信息,并减少对政策网络的依赖。
在您的问题文本中,您已经声明您认为政策网络是不错的,而价值网络并没有提供真正的信息。因此,如果是这种情况,我会尝试为 lambda
使用高值:如果您认为策略网络比价值网络提供更多信息,那么您将更多地依赖策略网络而不是价值网络,所以你会想要一个高 lambda
.
- Intuitively I want MCTS to explore as further as possible. In node expansion stage, does setting the expansion condition as expand a leaf once it is visited a very small number of times, like 3 help? What expansion method should I use?
扩展阶段在经典 MCTS 实现中通常相当有限(例如每次迭代通常只扩展一个节点)的唯一原因是内存问题;如果你扩展得太频繁,你的树长得太快,你就会 运行 内存不足。
在这些 AlphaGo 风格的设置(混合深度学习 + MCTS)中,您通常会在这些网络中使用更多的计算时间,因此与没有任何深度学习的原始纯 MCTS 算法相比,获得的 MCTS 迭代要少得多(但通常质量更高/信息量更大的迭代,这弥补了较低的迭代次数)。这种较低的迭代次数显着降低了 运行 由于过度扩展而导致内存不足的风险,因此我怀疑您可以负担得起更积极的扩展。过度扩展的唯一可能的负面影响是 运行 RAM 不足,当发生这种情况时您会很容易注意到,因为您的程序会崩溃。