我是强化学习的新手。对于我的应用程序,我发现如果我的奖励函数包含一些负值和正值,我的模型不会给出最佳解决方案,但解决方案还不错,因为它最终仍然给出了正奖励。
但是,如果我只是通过减去一个常数来移动所有读数,直到我的奖励函数全部为负,我的模型可以很容易地达到最优解。
为什么会这样?
我正在为我的应用程序使用 DQN。
感觉这也是gym环境mountaincar-v0使用的原因对于每个时间步和在目标上,但如果我错了,请纠正我。
我是强化学习的新手。对于我的应用程序,我发现如果我的奖励函数包含一些负值和正值,我的模型不会给出最佳解决方案,但解决方案还不错,因为它最终仍然给出了正奖励。
但是,如果我只是通过减去一个常数来移动所有读数,直到我的奖励函数全部为负,我的模型可以很容易地达到最优解。
为什么会这样?
我正在为我的应用程序使用 DQN。
感觉这也是gym环境mountaincar-v0使用的原因对于每个时间步和在目标上,但如果我错了,请纠正我。
您可以自由地重新定义奖励计划,同时仍然为代理描述相同的目标。这在某种程度上取决于您是在处理偶发性问题还是持续性问题。
一个情节问题结束,一旦代理达到终端状态,从那一刻起就保证零奖励。因此,最佳行为可能非常关键地取决于正奖励和负奖励之间的平衡。
如果一个环境包含许多不可避免的负面奖励,并且这些奖励超过了总的正面奖励,那么代理将有动力更快地完成一个情节。
如果一个环境包含可重复的积极奖励,并且这些奖励超过了总的消极奖励,那么代理将被激励循环通过积极奖励而不是结束这一集。
用相同的正因子缩放所有奖励对情景问题中代理的目标没有影响。不过,为所有奖励添加正或负抵消可能会有所作为。当这种变化将奖励从正面变为负面或反之亦然时,这可能是最值得注意的。在 MountainCar 示例中,为所有奖励添加 +2 意味着代理将在每个时间步长上获得 +1。由于达到目标后它将停止获得任何奖励,即使达到该目标将获得最高可能的 +2.5 奖励,这一集结束的事实意味着它现在成为一个糟糕的选择。在这个修改过的 MountainCar 中,汽车的最佳动作是永远留在谷底,每个时间步长收集 +1 奖励。
在一个持续的问题中,代理无法避免新的奖励数据流。这意味着所有奖励值的任何正向缩放或正向或负向偏移量相同的数量,都不会影响什么才是最优策略。任何状态在相同策略下的计算值,但所有奖励都以相同的乘数和偏移量转换,将是不同的,但该环境下的最优策略将是相同的。
如果您以不同的方式缩放或抵消奖励,那么这可能会改变代理的目标以及最优策略是什么。平衡并不真正取决于在持续的环境中奖励是积极的还是消极的。
当使用折扣因子并将其设置得相对较低(与问题中的典型状态“循环”长度相比)时,可能存在一些持续问题的例外情况。这可能会由于偏移而导致行为发生变化,类似于在情节问题中看到的那些。如果您使用平均奖励设置,这往往不太相关。通常在 DQN 中,您会选择一个高折扣因子,例如 0.99 或 0.999,如果奖励不是很稀疏,这将倾向于接近平均奖励设置。
在任何一种情况下,如果您更改奖励系统,并导致代理始终学习不同的策略,这通常意味着以下两种情况之一:
原来的奖励制度是不正确的。它描述了一个您不打算的目标,或者存在代理可以利用的“漏洞”以您不打算的方式获得更多奖励。
代理的实现在某种程度上对总奖励的绝对值很敏感。这可能是由于神经网络之类的超参数选择,或者可能是错误。
如果您只进行一些实验,您可能会看到另一种可能性,即代理没有 100% 一致地学习,并且您意外地将您对奖励方案的更改与结果中的噪声/随机性相关联。基于 DQN 的代理通常在解决问题的能力方面存在一些差异。训练后,DQN 通常只是近似最优的,并且偶然地一些近似值比其他近似值更接近。