Alphazero 保单人头损失没有减少

人工智能 神经网络 强化学习 目标函数 阿尔法戈 零字母
2021-11-05 20:23:56

我现在正在为棋盘游戏训练 alphazero 玩家。棋盘游戏的实现是我的,alphazero 的 MCTS 是在别处使用的。由于游戏的复杂性,自我游戏比训练花费的时间要长得多。

如您所知,alphazero 有 2 个头:价值和政策。在我的损失记录中,我看到随着时间的推移,价值损失正在显着减少。然而,保单损失仅表现出围绕其初始值的波动。

也许这里有人遇到过类似的问题?我想知道这是我的实施问题(但随后价值损失正在减少)还是只是数据不足的问题。

此外,也许重要的是,游戏理论上可能有大约 17k 步,但在任何单一状态下最多只有 80 步是合法的(想想国际象棋——很多可能,但在任何给定时间实际上很少有可能)。此外,如果 MCTS 有 20 个模拟,那么改进的概率向量(针对我们训练我们的策略损失)将最多有 20 个非零条目。我的想法是网络可能很难学习这样的稀疏向量。

谢谢你的任何想法!

1个回答

这里策略头的损失与例如更“传统”的监督学习方法(我们通常期望/希望看到损失函数相对稳定地减少)中的损失完全不同。

在这个 AlphaZero 设置中,我们更新策略头的目标本身在训练过程中会发生变化。当我们改进我们的策略时,我们预计 MCTS“专家”也会得到改进,这可能会导致 MCTS 访问计数的分布不同,进而可能导致策略负责人的更新目标与之前的更新目标不同。因此,如果我们的“损失”有时会增加,那很好,我们实际上可能仍然表现更好。损失对于计算我们的梯度很有用,但除此之外它没有多大用处——它当然不能用作性能/学习进度的准确指标。

但是在任何一个州,最多只有 80 个是合法的(想想国际象棋 - 很多可能,但在任何给定时间实际上很少是合法的)。此外,如果 MCTS 有 20 个模拟,那么改进的概率向量(针对我们训练我们的策略损失)将最多有 20 个非零条目。

是的,这可能是个问题。大多数移动在任何时间点都不合法这一事实不是问题,但如果您只有 20 次 MCTS 模拟,分支因子为 80……那肯定是个问题。最简单的解决方法是让 MCTS 运行更长时间,但显然这将花费更多的计算时间。如果您无法在每轮自我游戏中都这样做,您可以尝试:

  • 仅对某些移动使用低 MCTS 迭代计数,而不将这些分布添加到策略头的训练数据中
  • 对其他一些移动使用更大的 MCTS 迭代计数,并且仅使用这些移动的分布作为策略头的训练数据

这个想法在加速围棋自我学习的第 6.1 小节中有更详细的描述