我想知道我应该如何在有对手的环境中使用演员/评论家算法来训练模型。我尝试了以下方法(使用 A3C 和 DDPG):
- 与随机玩家对战。我的结果相当不错,但不如预期的好,因为随机对手无法达到大多数有趣的状态。
- 与特定 AI 列表对战。对抗这些 AI 的结果非常好,但对于从未见过的对手则非常糟糕
- 与自己对战。对我来说似乎是最好的,但由于环境不稳定,我无法获得任何收敛。
任何关于此的想法或建议都将受到欢迎。
我想知道我应该如何在有对手的环境中使用演员/评论家算法来训练模型。我尝试了以下方法(使用 A3C 和 DDPG):
任何关于此的想法或建议都将受到欢迎。
您提到的特定方法(A3C、DDPG),通常还有其他一般的 Actor-Critic 方法,是标准单智能体强化学习 (RL) 设置的方法。在尝试将此类算法应用于实际上是多代理设置的设置时,遇到您描述的问题确实很常见。他们都可以被视为你的代理对他们正在训练的对手“过度拟合”:
- 与随机玩家对战。我的结果相当不错,但不如预期的好,因为随机对手无法达到大多数有趣的状态。
在这种情况下,您的代理将“过度拟合”随机对手。它可能会变得相对容易地击败它们,并且在某种程度上这也可能仍然转化为相对较弱的非随机代理(如简单的启发式方法),但它不太可能推广到强大的对手。
- 与特定 AI 列表对战。对抗这些 AI 的结果非常好,但对于从未见过的对手则非常糟糕
在这里,您几乎准确地描述了我对您正在训练的对手说“过度拟合”时的意思。
- 与自己对战。对我来说似乎是最好的,但由于环境不稳定,我无法获得任何收敛。
当像这样使用 self-play 进行训练时,仍然存在过度拟合“自身”的危险。这在某些游戏中可能效果很好,但在其他游戏中,确实存在不稳定/缺乏收敛的风险。例如,这可能是由于代理“循环”通过一个相互击败的策略圈。直觉上,你可以想到石头剪刀布。例如,随机初始化的代理可能比其他代理更频繁地玩摇滚乐。Self-play 将导致一种主要玩 Paper 的策略,以击败当前的“Rock”策略。持续的自我游戏训练可以发现,玩更多 Scissors 的倾向会对自己产生强烈的反作用。等等,这些策略可以永远轮换。
游戏中自我训练的标准方法是由AlphaGo Zero和AlphaZero推广的方法,并且大约在同一时间独立发布了 Hex 游戏的结果。最后一篇论文为这种方法创造了“专家迭代”一词,我喜欢使用它。专家迭代的基本思想是:
然后这两个组件可以迭代地相互改进。训练后的策略可用于指导 MCTS 的搜索行为。MCTS 可用于生成新的动作分布,由于额外的搜索工作,通常预计会比经过训练的策略好一点。然后使用交叉熵损失将稍微更好的分布用作策略的训练目标。这意味着该策略经过训练以模仿 MCTS 搜索行为,并且还用于改进相同的 MCTS 搜索行为。
已发现该培训程序可产生良好的结果。流行的假设之一是 MCTS 执行的额外搜索有助于稳定训练,并避免过度拟合“自我”对手;搜索算法实际上可以“推理”一个强大的对手(不一定是“自我”代理)可以做什么。
我上面描述的专家迭代训练过程通常效果很好,但它并没有真正回答你关于在与对手的游戏中训练 Actor-Critic 方法的问题......因为它不是真正的 Actor-Critic 算法!
在Learning Policies from Self-Play with Policy Gradients and MCTS Value Estimates中,我们(我是本文的第一作者)提出了一种方法,其中使用基于 MCTS 值估计的训练目标来训练 self-play 中的策略,而不是 MCTS 的访问次数(这是我们在标准专家迭代框架中使用的)。
我不知道它是否应该完全被称为 Actor-Critic 算法,但您可以直观地将其视为 MCTS 是批评家的“Actor-Critic”方法。正如第四节之前提到的,结果梯度估计器也与“Mean Actor Critic”非常相似。
如果不能选择专家迭代式解决方案(例如,因为树搜索不可行),我建议查看以下一些基于策略梯度的方法(以及可能引用这些论文的后续研究):