在强化学习中使用经验回放时,使用哪个状态进行训练?

人工智能 神经网络 机器学习 强化学习 q学习 dqn
2021-10-29 10:33:26

我对体验重播过程有些困惑。我理解为什么我们在强化学习中使用批处理,并且根据我的理解,一批状态被输入到神经网络模型中。

假设动作空间中有 2 个有效的移动(UP 或 DOWN)

假设批量大小为 5,5 个状态是这样的:

[s1,s2,s3,s4,s5]

我们将这一批放入神经网络模型并输出 Q 值。然后我们把[s1,s2,s3,s4,s5]进入目标网络。

我感到困惑的是:

每个州在[s1,s2,s3,s4,s5]是不同的。

我们是否在所有 5 个状态通过神经网络后计算 UP 和 DOWN 的 Q 值?

例如,

[Qs1(UP),Qs1(DOWN)],[Qs2(UP),Qs2(DOWN)],[Qs3(UP),Qs3(DOWN)],[Qs4(UP),Qs4(DOWN)],[Qs5(UP),Qs5(DOWN)]

1个回答

状态的使用方式如下:

通常你的Q-network 将状态声明为动作空间上的输入和输出分数。IEQ:SR|A|. 所以,在你的重播缓冲区中,你应该存储st,at,rt+1,st+1,done(请注意,done 仅代表该剧集在此过渡中结束的位置,为了完整起见,我添加了它。

现在,当您进行批量更新时,您会从该重放缓冲区中随机均匀采样。这意味着你得到B的元组st,at,rt+1,st+1,done. 现在,我假设B=1因为它更容易解释和扩展B>1应该很容易看到。

对于我们的状态动作元组st,at我们想改变网络预测的这对更接近rt+1+γargmaxaQ(s,a). 然而,我们的神经网络只将状态作为输入,并为每个动作输出一个分数向量。这意味着我们希望将网络的输出转移到状态st朝着我刚才提到的目标,但只是为了行动at我们拿走了为此,我们只计算目标,即我们计算rt+1+γargmaxaQ(s,a),然后我们像普通神经网络一样进行梯度上升,其中目标向量与预测向量在任何地方都相同,除了atth 元素,我们将更改为rt+1+γargmaxaQ(s,a). 通过这种方式,我们的网络更接近于我们的 Q-learning 更新,仅针对我们想要的操作,与 Q-learning 的工作原理一致。

可以将神经网络参数化为一个函数也毫无价值Q:S×AR这将使训练更符合表格 Q 学习的方式,但在实践中很少使用,因为它的计算成本要高得多(你必须为每个动作做一个前向传递,而不是每个状态一个前向传递)。