MuZero 如何学会在两人游戏的双方都打得很好?

人工智能 强化学习 自我游戏 穆泽罗
2021-11-13 21:50:02

我正在编写我自己的 MuZero 版本。但是,我不明白应该如何在两人游戏中学会让两个玩家都玩得很好。

以围棋为例。如果我使用单个 MCTS 来生成整个游戏(用于训练阶段),难道 MuZero 不能学会为黑棋打得不好,以便擅长预测白棋的胜利吗?是什么迫使它在每一个回合都发挥出色?

1个回答

两个玩家都由具有完全相同权重的完全相同的网络表示(类似于 AplhaGO、AlphaGoZero 和 AlphaZero)。因此,它们的行为将相同。因为你只有一个网络,所以 MuZero 无法学习两种不同的策略,而只能学习一种。

你也可以这样想:MuZero 实际上学会了只玩白色(或黑色,但只是其中一个)而不知道玩另一种颜色(至少以前算法的多个实现,如 AlphaGo Zero 和与 MuZero 类似的 AlphaZero 正是这样做的)。所以,为了欺骗它也能玩其他颜色,当网络需要玩黑色时,你只需将桌子上的颜色翻转,让黑色变成白色(白色变成黑色),网络知道该怎么办。选择移动后,你将整个事情翻转回来,这通常是它的完成方式。所以,从你的网络的角度来看,它总是会显示白色,但是因为你做了颜色的翻转,你实际上可以让它们在不知情的情况下相互对抗。

即使不使用翻转表格颜色的技巧,通过进行 MCTS 模拟,您将获得每个状态的动作统计信息,并且通常当您进行更多模拟时,这些统计信息会告诉您哪些动作在每个状态中是最好的状态。当你训练时,你会尝试模仿这一点。因此,您的网络将在每个状态下学习哪些动作是最好的,这就是为什么它学会在每个状态下采取最好的可能动作的原因。