【问题标题】:Q-Learning in combination with neural-networks (rewarding understanding)Q-Learning 与神经网络相结合(有益的理解)
【发布时间】:2012-11-07 10:45:58
【问题描述】:

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

所以我在谷歌搜索和谷歌搜索整个网络时也发现了这个网站(就像我的感觉一样):http://www.cs.indiana.edu/~gasser/Salsa/nn.html,其中简要解释了 Q-learning 与神经网络的结合。

对于每个动作,都有一个额外的输出神经元,这些输出“单元”之一的激活值告诉我估计的 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,我该如何执行这个方程来获得神经网络的正确目标?! 我如何计算好的奖励价值?朝着目标前进比远离目标更值得吗? (接近目标时的 +reward 比 -reward 更远的目标距离要多?)

我认为我有一些误解。我希望你能帮助我回答这些问题。非常感谢!

【问题讨论】:

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


    【解决方案1】:

    使用神经网络存储 q 值是查表的一个很好的扩展。这使得在状态空间连续时使用 q-learning 成为可能。

      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)
    

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


    朝着目标前进比远离目标更值得吗? (接近目标时的 +reward 比目标距离更远时的 -reward 多?)

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

    【讨论】:

    • 哇,谢谢你的详细回答!我刚刚得到了另一个问题:钳制新目标是否很有用,或者我的代理是否有可能出现“错误”行为?
    • 我不确定。除非你在这里发布一些结果。您是否正在为代理进行 epsilon 探索?也检查这里的帖子。 stackoverflow.com/questions/13148934/…
    • 呸,我首先要做的是一个“箭头”,它的任务应该是找到一个红点(食物什么的)。但即使是这个看似简单的任务对我来说也不是很容易:(
    • 如何首先为您的红点任务实现 q-learning 的查表版本(假设您有离散状态空间,请查看我之前评论中的源代码链接)。然后针对同样的问题尝试神经网络q值存储。
    • 是的,输出层的线性激活有利于回归问题。因此,为您的情况尝试是一个不错的选择。
    猜你喜欢
    • 1970-01-01
    • 2015-02-05
    • 2017-03-02
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多