如何在蒙特卡洛树搜索中选择第一个动作?

人工智能 蒙特卡罗树搜索 穆泽罗
2021-10-30 10:22:00

我正在重新实现MuZero 论文在 MCTS 的描述(第 12 页)中,它们表示具有关联状态的新节点s将被初始化为Q(s,a)=0,N(s,a)=0P(s,a)=pa. 由此,我了解到根节点有状态s0将具有每个访问次数为零的边缘,零值和策略评估s0通过预测网络。

到现在为止还挺好。然后他们根据等式(也在第 12 页)解释了如何选择动作:

在此处输入图像描述

但是对于第一个动作(从根节点),这将给出一个零向量作为 argmax 的参数:Q(s0,a)=0bN(s0,b)=0, 所以即使P(s0,a)不为零,它将乘以一个零权重。

肯定有什么地方有错误吗?还是第一个动作是一致随机的?

1个回答

是的,您似乎是对的,并且根据论文的描述,它在第一次迭代时确实会表现得一致随机(或者可能总是确定性地选择恰好是列表中第一个动作的动作)。我在论文中找不到任何其他建议,而且他们放在 arXiv 上的伪代码也暗示了相同的行为

我真的想不出任何理由为什么这比按照P(s,a)不过在第一次迭代中。也许它会在您获得的树搜索结果中创建更多种类?我想,普通 MCTS 通常固有的所有随机性不再存在于 MuZero(或 AlphaZero)中,因为它们总是运行完全相同的迭代次数,并且不再有任何类型的随机推出;这至少会引入一点点变化。

另一方面,我也无法想象这种选择真的会在实践中产生有意义的差异,除非您降低到极低的迭代次数(例如,如果您运行的迭代次数少于根节点中的合法操作)。