2

背景(可以跳过):

在训练神经网络时,通常使用随机梯度下降(SGD):而不是计算网络对训练集的所有成员的误差并通过梯度下降来更新权重(这意味着在每次权重更新之前等待很长时间),而是使用每个对一个 minbatch 成员进行计时,并将由此产生的误差视为对真实误差的无偏估计。

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

问题:

以下断言是否正确?:当 SGD 中的 minibatching 时,每整个 minibatch 执行一次权重更新,而当 Q-learning 中的 minibatching 时,minibatch 中的每个成员执行一次权重更新?

还有一件事:

我认为这个问题更适合Cross Validated,因为它是一个关于机器学习的概念性问题,与编程无关,但是通过查看 Stackoverflow 上标记为强化学习的问题,我得出结论认为问这个问题是规范的在这里,我可以获得的响应数量更大。

4

1 回答 1

0

答案是不。可以使用小批量中的所有示例一次更新 Q 网络的参数。用 (s1,a1,r1,s'1),(s2,a2,r2,s'2),... 表示 minibatch 的成员,然后相对于当前 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 学习)。
于 2017-01-07T11:03:14.397 回答