背景(可以跳过):

在训练神经网络中,通常使用随机梯度下降(SGD):不是使用训练下降的所有成员来计算网络的误差,而是通过梯度下降来更新权重(这意味着等待很长时间才能更新权重),而是使用每个对成员的最小批处理进行计时,并将结果误差视为真实误差的无偏估计。

在强化学习中,有时使用神经网络实现Q学习(如在深度Q学习中一样),并使用经验重播:代替通过代理的先前(状态,动作,奖励)更新权重,而使用少量的旧的(状态,动作,奖励)随机样本,因此后续更新之间没有相关性。

问题:

以下断言是否正确?:在SGD中进行小批量处理时,对整个小批处理执行一次权重更新,而在Q学习中进行小批量处理时,对小批处理中的每个成员进行一次权重更新?

还有一件事:

我认为这个问题更适合Cross Validated,因为它是关于机器学习的概念性问题,与编程无关,但是通过查看Stackoverflow上标记为reinforcement-learning的问题,我得出结论,问这个是规范性的问题,我可以得到的答复数量就更多。

最佳答案

答案是不。可以使用小批量中的所有示例一次更新Q网络的参数。用(s1,a1,r1,s'1),(s2,a2,r2,s'2),...表示小批量的成员,然后相对于当前Q网络估计损耗:

L =(Q(s1,a1)-(r1 + max {Q(s'1,_}}))^ 2+(Q(s2,a2)-(r2 + max {Q(s'2,_)) }))^ 2 + ...

这是对真实损失的估计,是对所有(s,a,r)的期望。这样,Q的参数更新类似于SGD。

笔记:


上面的表达式也可以包含折扣因子。
由于该估计不包含代表s'引起的方差的项,因此该估计存在偏差,但这不会改变梯度的方向。
有时,每个平方项中的第二个Q网络不是当前Q,而是过去的Q(双重Q学习)。

08-25 05:11