AlphaZero 的经验教训:四子棋

欢迎回来!在我们的上一期 中,我们简要回顾了 DeepMind 的 AlphaZero 算法如何快速学会比最优秀的人类(有时甚至是最好的现有算法)更好地玩游戏。回想一下,它使用基于神经网络的蒙特卡洛树搜索 (MCTS) 与自己对战,并使用这些自我对弈的结果在自我强化循环中进一步训练网络。

在接下来的几篇文章中,我们将分享我们从教它玩Connect Four中学到的一些经验教训。

为什么要连接四?

为了实现和测试 AlphaZero,我们首先必须选择一个游戏来玩。与围棋(一种极端的难度)或井字游戏(另一种)不同,Connect Four 似乎提供了足够有趣的复杂性,同时仍然足够小以快速迭代。特别是,我们选择了常见的 6x7 变体(如上图所示)。

它还有另一个好处:作为一个完全解决的游戏,我们可以根据最佳策略测试我们的模型。也就是说,一旦我们使用 AlphaZero 训练了我们的网络,我们就可以向它提供我们知道正确答案的测试板位置,以获得有意义的“基本事实”准确性。

此外,它使我们能够发现在给定架构下我们的网络可以变得多么接近完美。让我们来看看它是如何工作的。

训练

训练和评估过程如下:

  1. 使用 Connect Four求解器(即会告诉您任何棋盘位置的正确移动的程序)来生成标记的训练和测试集。
  2. 选择神经网络架构。AlphaZero 论文提供了一个很好的起点,但有理由认为不同的游戏将受益于对其的调整。
  3. 使用监督学习训练网络标记的训练集。这为我们提供了架构应该能够学习的程度的上限
  4. 使用相同的网络架构训练 AlphaZero,并使用标记的测试集对其进行评估,以查看它与上限的接近程度。

假设 AlphaZero 训练的网络达到 90% 的测试准确率。这告诉我们什么?

  • 如果同样的架构在有监督的训练下达到了 99%,那么网络可以学到比 AlphaZero 教的更多的东西,我们应该改进 AlphaZero 的 self-play 组件。
  • 如果监督训练只达到 91%,那么网络架构本身可能是限制因素,应该改进。

使用这种策略帮助我们调整网络架构,发现错误,并在我们的 MCTS 自我播放中进行其他改进。

挑战

在生成带标签的训练数据时,我们将随机板位置提供给 Connect Four 求解器。问题是,什么是“随机”?

因为 AlphaZero 应该学会只玩完美的游戏,它的网络最终将不再看到糟糕的位置。因此,对它们进行测试是不公平的。另一方面,Connect Four 非常简单,只有少数完美的游戏,因此不可能仅使用完美的棋盘位置来构建大型训练集。

另一个困难是确定什么是职位的正确答案。在任何给定的位置,可能有多个移动导致胜利。赢得越快越好吗?好多少?如果不能保证赢,你应该选择输得最慢的棋(假设对手是完美的),还是最有可能绊倒他们的棋(如果他们不完美)?你如何做到这一点?

最后,我们决定使用来自高度不完美游戏的位置来生成我们的标记集,使我们的 AlphaZero 训练网络在比较中处于劣势。然而,正如我们很快就会看到的那样,它在这个障碍上表现出奇的好。

我们还决定使用两种不同的“最佳移动”定义。在生成“强”训练/测试集时,我们仅在导致最快可能获胜(或最慢可能失败)的情况下才将其标记为正确。在“弱”的情况下,所有获胜的动作都被赋予相同的权重。为了保持比较公平,我们还在强模式和弱模式下训练 AlphaZero,鼓励它在前一种情况下更喜欢更快的胜利(通过根据游戏长度缩放最终结果值)。让我们简单地看一下。

强与弱 AlphaZero

在 MCTS 模拟过程中,非终端位置从网络获得一个初始,表示预期的游戏结果(在 [-1, 1] 范围内)。另一方面,终端位置不需要这样的估计;我们可以直接为它们分配 +/-1。这对于较弱的训练来说很好,无论需要多长时间到达那里,两个获胜位置都被认为是同样好的。对于训练,我们按游戏长度来衡量最终结果。

连四连胜最快的是 7 步,最长的是 42 步(用完整个棋盘)。一些快速代数表明,如果n是实际游戏长度,那么表达式 1.18–(9*n/350) 将产生一个 [0.1, 1] 中的值,表示获胜。这使得 MCTS 更喜欢快赢(和慢输)。

评价

我们进行了两种评估:

  • 仅网络:向网络提供测试板位置并检查其预测的移动是否正确。
  • MCTS:运行由网络支持的 MCTS(具有 800 次模拟)并评估其首选移动。

回想一下,我们使用了两种不同的训练方法:

  • AlphaZero(“AZ”)训练。
  • 监督训练(即,使用来自求解器的标记训练数据)。

这为我们提供了四种评估组合:AZ-Network、AZ-MCTS、Supervised-Network、Supervised-MCTS。

最后,有两种训练模式(强与弱)。我们将依次查看每一个。

结果

强劲的结果

  • 监督网络:96.20%
  • 监督-MCTS:97.29%
  • AZ-Network:95.70%
  • AZ-MCTS:96.95%

这告诉我们的是:

  1. 我们的 AlphaZero 训练几乎与监督训练一样好(尽管处于前面提到的劣势)。
  2. 尽管单独的网络表现非常好,但在 MCTS 中使用它进一步将错误率降低了约 29%(从~4% 到~3%)。

结果不佳

  • 监督网络:98.93%
  • 监督-MCTS:99.79%
  • AZ-Network:98.83%
  • AZ-MCTS:99.76%

这一次,AlphaZero 训练更接近监督训练,几乎匹配它。此外,MCTS 将错误率降低了约 80%,几乎每个位置都正确。

在弱测试集中,一个位置平均有 4.07 次正确移动(而强测试​​集中为 2.16)。这意味着在 7 个可能的移动中随机猜测只会让我们达到 58.1%。

结论

Connect Four 是一款出色的游戏,可用于训练(并查找错误)您的 AlphaZero 实现。它允许快速迭代,并且足够复杂以至于很有趣。由于这是一个已解决的游戏,因此也可以客观衡量培训的成功程度。

当只寻找任何最佳走法时(不管它获胜或避免失败的速度有多快),再加上 MCTS,经过 AlphaZero 训练的网络在 400 个位置中只会走错一次。即使必须找到最快的赢(或非输),并且单独使用网络预测,它也只会在 25 个位置出错一次。非常好!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章