评估训练有素的强化学习代理?

数据挖掘 强化学习 dqn 演员评论家 蒙特卡洛 kerasrl
2022-02-17 12:26:06

我是强化学习代理培训的新手。我已阅读 PPO 算法并使用稳定的基线库来训练使用 PPO 的代理。所以我的问题是如何评估一个训练有素的 RL 代理。考虑回归或分类问题,我有 r2_score 或准确性等指标。是否有任何此类参数或我如何测试代理,得出代理训练好或坏的结论。

谢谢

1个回答

如果您的目标是最佳控制,那么您将希望通过代理在任务中的表现来衡量它。您应该使用某种汇总的奖励度量,例如每集的总奖励(又名“回报”),或每个时间步的平均奖励。

如果您正在处理一个玩具问题,或者一个设计为很容易确定基于奖励的度量的最大界限的问题,那么您可以将您的代理与这个已知值进行比较。期望一个好的代理接近最大值是合理的。

在实践中,许多有趣的问题没有已知的奖励总数或平均值上限。对于这些问题,通常你能做的最好的就是在代理之间进行比较。你可以比较:

  • 随机代理。这通常只是作为基线,以表明代理已经学到了一些东西

  • 使用简单动作选择启发式的自动化代理,这在给定问题中可能是自然或明显的。

  • 一个或多个人在同一任务中

  • 其他经过 ML 训练的代理,包括同一代理的先前实例

如果策略或环境是随机的,您可能需要运行多个测试并对结果进行平均,以便尽可能多地评估具有预期值的代理。同样重要的是,如果您使用任何非策略技术(例如 DQN)来关闭测试期间的任何探索,以公平衡量受过训练的代理的行为(而不是它在训练期间的行为,这将不同)。

如果您的代理旨在持续学习和探索,和/或使用策略方法,您可以在训练期间使用结果来评估它。例如,您可以对最后 N 集或类似的总奖励进行滚动平均。这对于监控训练来说并不是一个糟糕的指标,即使对于 off-policy 方法也是如此,尽管对于 off-policy,与单独的测试运行相比,您可能会低估性能。

还有其他方法和其他指标来评估代理 - 例如,代理需要多少经验或多少计算才能学习到某个水平通常是令人感兴趣的。

如果您想“断定智能体受过良好或不良的训练”以完成最佳控制任务,那么对总奖励的评估可能就是您所需要的。但是,您也可以查看任何神经网络中的损失指标——你不会这样做是为了将代理排名为“更好”或“更差”,但可能会这样做是为了识别问题。这些损失指标通常与监督学习等价物相同。因此,例如在 DQN 中,或者对于 PPO 的“批评”部分,您会对任何状态的预测值是否与最终值匹配感兴趣,并使用 MSE 损失。对于随机环境,需要注意的是,任何收集到的数据都会有噪声,因此很难区分由于数据差异导致的高损失和由于训练不佳或超参数不正确导致的高损失之间的区别。