处理具有延迟效果的动作(强化学习)

数据挖掘 机器学习 强化学习
2021-09-24 05:01:28

我正在研究一个问题,我学习的动作(使用 DQN)可以“现在”执行,但它对环境的影响被延迟了“T”个时间单位。

然而,该环境在那个时候是活跃的,并且还有其他条件可以根据这些条件计算和返回奖励。这是如何处理的?

我相信 Q 值函数(带有伽马)处理奖励的“延迟”效应,但不处理行动。

这类似于库存管理用例。打个比方,考虑一下我卖蛋糕。当顾客走进我的商店时,我会吃现成的蛋糕。我必须重新订购以存放我的货架,但这种重新订购可能需要一段时间才能生效。

我想只是稍后将重新订购的数量添加到货架上,让代理了解它的效果。这足够了吗?

作为另一种方法,我认为体验和重放是一种处理这种延迟效应的机制。

感谢帮助。

1个回答

我认为体验和重放是一种处理这种延迟效应的机制。

Experience Replay 在这里没有直接帮助,它是一种从有限的数据中使学习更加稳定和有效的机制,但它不会解决延迟返回的问题。

任何学习 Q 的方法都应该可以很好地应对延迟奖励。因此,蒙特卡罗控制、SARSA、Q-learning、DQN 及其所有变体在理论上都能够学习延迟奖励。总回报是任何行动的最终效果。

但是,我猜只是因为它没有被提及并且您在问这个问题,所以您可能仍然有问题。. .

您声称该行动具有“对环境的延迟影响”。您需要更改它,因为这意味着您的状态表示对于您的问题不正确。显然,为某事下订单会改变环境。有订单的环境与没有订单的环境不同,在某种程度上对您的问题至关重要。

您可能缺少的是一个状态表示,它捕获了您的操作实际完成了什么。没有它,Q 函数无法了解隐藏变量(当前正在处理的订单),因为它不处于状态,s为了(s,一个). 为了使 RL 可靠,状态值s必须捕获有关未来状态变化和奖励将如何进展的所有相关信息。例如,如果您正在编写一个代理来控制摆动的钟摆(一个标准的玩具问题),那么您不仅需要钟摆的位置,还需要它的速度来预测钟摆之前可能结束的位置采取任何行动。对于您的问题,当前库存就像钟摆的位置,您需要跟踪“进行中”的订单,因为它们有点像速度,因为无论采取何种行动,它们都会导致状态的进一步变化。

为了解决这个问题,您需要向您的州添加最近库存订单的表示。我猜想描述订单内容的内容(类似于您当前的库存表示)以及距离交付还有多少天的倒计时(或者如果它们不那么可靠,则与可能的到达时间相关的类似内容)。该状态应立即更改响应导致命令的动作,否则代理将无法了解动作与其效果之间的关联,并将到达的命令视为来自环境的某种随机效应。

一旦你有了这样的表示,那么我认为这就足够了,接下来的步骤是找到正确的超参数值来有效地学习。如果您有一个模拟环境,这最初会更容易,尽管您也可以使用 DQN 之类的东西从历史数据中学习离线策略,前提是您有大量历史数据可供使用。

我想只是稍后将重新订购的数量添加到货架上,让代理了解它的效果。这足够了吗?

我认为这很相似,但可能还不够。要做的最重要的事情是将状态更改与导致它的操作相关联。无论如何都应该在新库存到达时添加它,但是代理需要了解早期的操作是导致这种情况的原因,并且只有当该操作实际上以某种方式改变状态时才有可能。