如果我有伪剧集,我应该如何计算终端状态下 DQN 中的更新目标?

人工智能 强化学习 dqn 环境
2021-11-18 04:30:42

我在没有自然终端状态的真实环境中训练 DQN,所以我以人为的方式构建了情节(即它以随机条件开始,在 T 步后结束)。我的问题是关于终端状态:当我必须计算时我应该考虑它吗y(所以只使用奖励)还是不?

1个回答

如果情节没有自然终止,那么如果您出于训练目的将其分解为伪情节,那么您不应该做的一件事是使用 TD 目标GT1=RT用于剧集的结尾,假设从任何终端状态返回 0ST. 当然,那是因为这不是这一集的结尾。

您有两个“自然”选项来调整 DQN 以在伪剧集结束时与理论相匹配:

  • 正常存储状态、动作、奖励、next_state 元组并使用标准的一步 TD 目标Gt:t+1=Rt+1+γmaxaQ(St+1,a)

  • 完全忽略最后一步,不要将其存储在内存中。与上述选项相比,这没有任何好处,但如果您使用预构建的 RL 库,它可能更容易实现。

这两个都涉及忽略done环境返回的任何标志以计算 TD 目标。您仍然可以使用该标志来触发循环结束并重置为新的起始状态。

如果您在达到时间步长限制后提前终止偶发问题,您也应该采用这种方法,以便出于训练目的而重置。


顺便说一句(并在 Swakshar Deb 的评论中提到),您还可以查看非情节环境的平均奖励设置这解决了需要为γ. 如果您没有理由选择特定的γ在一个持续的问题中,通常选择接近 1 的值,例如 DQN 中的 0.99 或 0.999 - 这基本上是平均奖励的近似值。