关于深度Q学习的问题

时间:2019-06-26 16:13:27

标签: reinforcement-learning q-learning keras-rl

我阅读了一些有关深度q学习的资料,但不确定我是否完全理解。据我了解,似乎深度Q学习比使用NN进行回归,计算损失并反向传播误差以更新权重将Q值放在表上要快,而不是将它们放在表上。然后,在测试场景中,它接受一个状态,并且NN将针对该状态可能执行的每个操作返回几个Q值。然后,将选择Q值最高的动作在该状态下执行。

我唯一的问题是权重如何更新。根据{{​​3}},权重更新如下:

this site

我知道权重是随机初始化的,R是由环境返回的,伽玛和阿尔法是手动设置的,但是我不知道Q(s',a,w)和Q(s,a,w)分别是什么初始化并计算。看来我们应该建立一个Q值表并像Q学习一样更新它们,还是在每个NN训练时期自动计算它们?我在这里不明白什么?有人可以更好地向我解释这样一个方程式吗?

1 个答案:

答案 0 :(得分:1)

在Q学习中,我们关注学习Q(s,a)函数,该函数是状态到所有动作之间的映射。假设您有一个任意的状态空间和一个包含3个动作的动作空间,这些状态中的每一个将计算为三个不同的值,每个动作一个。在表格Q学习中,这是通过物理表完成的。考虑以下情况: enter image description here

在这里,我们为游戏中的每个状态提供了一个Q表(左上方)。在每个时间步长之后,该特定动作的Q值会根据一些奖励信号进行更新。奖励信号可以打折,介于0到1之间。

在深度Q学习中,我们忽略表的使用,并创建一个参数化的“表”,如下所示: Feed FOrward net 在这里,所有权重将形成输入上给出的组合,这些组合应适当地与表格中的情况相匹配(仍在积极研究中)。

您提出的方程式是在梯度更新规则中设置的Q学习更新规则。

  • alpha是步长
  • R是奖励
  • 伽玛是折扣因素 您可以推断网络以获取“未来折价状态”的值,并将其与“当前”状态相减。如果不清楚,我建议您查找升压,基本上就是这里发生的情况。