随机梯度下降和 Q 学习中的小批量处理
Minibatching in Stochastic Gradient Descent and in Q-Learning
背景(可跳过):
在训练神经网络时,通常使用随机梯度下降(SGD):而不是计算网络在训练集所有成员上的误差并通过梯度下降更新权重(这意味着在每个权重之前等待很长时间更新),每次使用一小批成员,并将产生的误差视为对真实误差的无偏估计。
在强化学习中,有时 Q-learning 是用神经网络实现的(如在深度 Q-learning 中),并使用经验回放:而不是通过之前的(状态、动作、奖励)来更新权重代理,使用旧的(状态,动作,奖励)随机样本的小批量更新,以便后续更新之间没有相关性。
问题:
以下断言是否正确?:在 SGD 中进行小批量处理时,对整个小批量执行一次权重更新,而在 Q-learning 中进行小批量处理时,对小批量中的每个成员执行一次权重更新?
还有一件事:
我觉得这个问题比较适合在Whosebug上Cross Validated, as it is a conceptual question about machine learning and has nothing to do with programming, but by looking at questions tagged reinforcement-learning,我的结论是在这里问这个问题很规范,能得到的回复数量也比较多
答案是否定的。 Q 网络的参数可以使用小批量中的所有示例立即更新。用 (s1,a1,r1,s'1),(s2,a2,r2,s'2),...表示 minibatch 的成员,然后相对于当前 Q-network 估计损失:
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 学习)。
背景(可跳过):
在训练神经网络时,通常使用随机梯度下降(SGD):而不是计算网络在训练集所有成员上的误差并通过梯度下降更新权重(这意味着在每个权重之前等待很长时间更新),每次使用一小批成员,并将产生的误差视为对真实误差的无偏估计。
在强化学习中,有时 Q-learning 是用神经网络实现的(如在深度 Q-learning 中),并使用经验回放:而不是通过之前的(状态、动作、奖励)来更新权重代理,使用旧的(状态,动作,奖励)随机样本的小批量更新,以便后续更新之间没有相关性。
问题:
以下断言是否正确?:在 SGD 中进行小批量处理时,对整个小批量执行一次权重更新,而在 Q-learning 中进行小批量处理时,对小批量中的每个成员执行一次权重更新?
还有一件事:
我觉得这个问题比较适合在Whosebug上Cross Validated, as it is a conceptual question about machine learning and has nothing to do with programming, but by looking at questions tagged reinforcement-learning,我的结论是在这里问这个问题很规范,能得到的回复数量也比较多
答案是否定的。 Q 网络的参数可以使用小批量中的所有示例立即更新。用 (s1,a1,r1,s'1),(s2,a2,r2,s'2),...表示 minibatch 的成员,然后相对于当前 Q-network 估计损失:
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 学习)。