Q-Learning与神经网络相结合(奖励理解)

时间:2012-11-19 13:42:35

标签: artificial-intelligence reinforcement-learning neural-network

就我的理解而言,可以通过神经网络替换Q值(状态 - 动作 - 对 - 评估)的查找表来估计这些状态 - 动作对。我编写了一个小型库,它能够通过一个自建的神经网络进行传播和反向传播,以便为某个输入输出学习所需的目标值。

所以我也在谷歌搜索时发现了这个网站,并在网上搜索(就像我觉得的那样):http://www.cs.indiana.edu/~gasser/Salsa/nn.html很快解释了Q学习与神经网络的结合。

对于每个动作,都有一个额外的输出神经元,其中一个输出 - “单位”的激活值告诉我,估计的Q值。 (一个问题:激活值是否与神经元的“输出”相同或不同?)

我使用标准sigmoid函数作为激活函数,因此函数值x的范围是

0<x<1

所以我想,我的目标值应始终从0.0到1.0 - >问题:我的理解是否正确?或者我错过了解一些事情?

如果是,则出现以下问题: 计算目标奖励/新Q值的等式是: q(s,a)= q(s,a)+ learningrate *(reward + discountfactor * q'(s,a) - q(s,a))

那么如果目标应该从0.0到1.0,我如何执行这个等式来获得神经网络的正确目标? 我如何计算良好的奖励价值?走向目标更值得,而不是远离它? (接近目标时更多+奖励而不是更远距离目标的奖励?)

我认为我的一些误解。我希望,你可以帮助我回答这些问题。非常感谢你!

1 个答案:

答案 0 :(得分:6)

使用神经网络存储q值是表查找的一个很好的扩展。这使得在状态空间连续时可以使用q学习。

  input layer     ......  

                |/  \ |  \|
  output layer  a1   a2   a3
                0.1  0.2  0.9

假设您有3个可用的操作。上图显示了使用当前状态和学习权重的神经网络的输出。所以你知道a3是最好的行动。

现在你有问题:

  

一个问题:激活值是否与神经元的“输出”相同或不同?

是的,我想是的。在引用的链接中,作者说:

  

某些单位也可能是指定的输出单位;他们的激活代表了网络的反应。


  

所以我想,我的目标值应始终从0.0到1.0 - >问题:我的理解是否正确?或者我错过了解一些事情?

如果选择sigmoid作为激​​活功能,请确保输出为0.0到1.0。激活函数有不同的选择,例如hereSigmoid是最受欢迎的选择之一。我认为输出值从0.0到1.0不是问题。如果在当前时间,您只有两个可用的操作Q(s,a1) = 0.1, Q(s,a2) = 0.9,则您知道操作a2a1的q值更好。


  

那么如果目标应该从0.0到1.0,我如何执行这个等式来获得神经网络的正确目标?我如何计算良好的奖励价值?

我不确定这一点,但您可以尝试将新目标q值钳位在0.0和1.0之间,即

q(s,a) = min(max(0.0, q(s,a) + learningrate * (reward + discountfactor * q'(s,a) - q(s,a))), 1.0)

尝试做一些实验以找到合适的奖励值。


  

走向目标更值得,而不是远离它? (接近目标时更多+奖励而不是更远距离目标的奖励?)

如果使用经典更新方程,通常你应该在接近目标时给予更多奖励,以便增加新的q值。

相关问题