RL 代理 - 正确实施 - 在做出决策时不会考虑以前的奖励。例如,价值函数仅评估潜在的未来回报。状态值或预期回报(又名实用程序)G从起始状态s可以这样定义:
v ( s ) =乙π[G吨|小号吨=年代] =乙π[∑k = 0∞γķRt + k + 1|小号吨=年代]
在哪里R吨是当时的奖励分布吨, 和乙π代表按照策略给出的期望值π用于动作选择。
这有一些变化,具体取决于设置和您感兴趣的价值函数。但是,RL 中使用的所有价值函数都会在采取行动时从决策点查看未来的奖励总和。不考虑过去的奖励。
如果出现以下情况,代理人仍可能选择早期获得高额奖励而不是长期奖励:
如果您的问题是代理选择了较低的早期奖励,而它可能会忽略它以支持稍后更大的奖励,那么您应该检查您正在使用的折扣因子。如果您希望 RL 代理有长远的眼光,那么折扣因子需要接近1.0.
但是,您的问题的前提是,RL 代理会以某种方式变得“懒惰”或“自满”,因为它已经获得了足够的奖励。由于其制定方式,这不是 RL 中出现的问题。不仅在计算来自状态的返回值时没有考虑过去的奖励,而且在 RL 中也没有公式可以让智能体像满足其饥饿感的生物一样获得“足够”的总奖励——最大化总是适用于所有状态。
没有必要以某种方式衰减任何内存结构中过去的奖励,实际上也没有真正的方法可以做到这一点,因为没有数据结构可以累积任何 RL 代理使用的过去奖励。您可能仍会收集此信息以显示结果或分析性能,但代理不会使用r吨弄清楚什么一个吨应该。
我发现对于某些应用程序和某些超参数,如果奖励是累积的,代理只是在情节开始时采取了一个好的行动,然后很高兴在情节的其余部分不做任何事情(因为它仍然有奖励R
在这种情况下,您可能为您的问题制定了错误的奖励函数。累积奖励计划(代理人获得奖励一个在t = 1然后a + b在t = 2然后a + b + c在t = 3等)将非常专业,您可能误解了如何表示代理的目标。如果您无法解决此问题,我建议您针对您的特定环境和建议的奖励计划提出一个单独的问题。