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

The*_*ama 4 artificial-intelligence reinforcement-learning neural-network

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

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

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

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

0<x<1
Run Code Online (Sandbox Code Playgroud)

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

如果是,则存在以下问题:计算目标奖励/新Q值的等式是:q(s,a)= q(s,a)+学习率*(奖励+折扣因子*q'(s,a ) - q(s,a))

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

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

gre*_*ess 6

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

  input layer     ......  

                |/  \ |  \|
  output layer  a1   a2   a3
                0.1  0.2  0.9
Run Code Online (Sandbox Code Playgroud)

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

现在你有问题:

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

是的,我想是这样.在提到的链接中,作者说:

有些单位也可以指定输出单位; 他们的激活代表了网络的反应.


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

如果选择sigmoid激活功能,输出肯定是0.0到1.0.激活功能有不同的选择,例如,这里.Sigmoid是最受欢迎的选择之一.我认为输出值从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)
Run Code Online (Sandbox Code Playgroud)

尝试做一些实验来找到合适的奖励价值.


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

通常情况下,如果使用经典更新方程,则应该在接近目标时给予更多奖励,以便新q值得到增加.