经验回放中的最终状态如何处理?

人工智能 强化学习 dqn 经验回放
2021-10-29 19:22:54

我正在使用 DQN 算法来训练我的代理玩回合制游戏。内存重放缓冲区存储经验元组(s,a,r,s), 在哪里ss是连续的状态。在最后一回合,游戏结束,非零奖励给代理。没有更多的观察,也没有下一个状态s存储在体验元组中。最终状态应该如何处理?

1个回答

您不会将终端状态存储为s在重播表中,因为根据定义,它的值总是0,并且没有动作、奖励或下一个状态。从字面上看,没有什么可学的。

但是,您可能会发现存储以下信息很有用s实际上是一个终端状态,以防这不明显。这通常是通过存储额外的done布尔组件来实现的。这很有用,因为它允许您在计算 TD 目标g时进行分支:

s, a, r, next_s, done = replay_memory_sample()
if done:
  g = r
else:
  g = r + gamma * max( q(s') )