【问题标题】:How can I improve the performance of a feedforward network as a q-value function approximator?如何提高前馈网络作为 q 值函数逼近器的性能?
【发布时间】:2016-06-20 12:28:55
【问题描述】:

我正在尝试通过使用 Q-Learning + 前馈神经网络作为 q 函数逼近器在 n*n 网格世界域中导航代理。基本上,代理应该找到到达某个终端目标位置的最佳/最短方式(+10 奖励)。代理采取的每一步都会获得 -1 奖励。在网格世界中,代理也应该避免一些位置(-10 奖励,终端状态)。

到目前为止,我实现了一个 Q 学习算法,它将所有 Q 值保存在一个 Q 表中,并且代理表现良好。 在下一步中,我想用神经网络替换 Q 表,在代理的每一步之后在线训练。我尝试了一个带有一个隐藏层和四个输出的前馈神经网络,代表网格世界(北、南、东、西)中可能动作的 Q 值。 作为输入,我使用了一个 nxn 零矩阵,它在代理的当前位置有一个“1”。

为了实现我的目标,我尝试从头开始解决问题:

  1. 使用标准 Q-Learning 探索网格世界,并在 Q-Learning 完成后使用 Q-map 作为网络的训练数据 --> 工作正常

  2. 使用 Q-Learning 并提供 Q-map 的更新作为训练数据 对于 NN (batchSize = 1) --> 效果不错

  3. 用 NN 完全替换 Q-Map。 (这就是重点,当它变得有趣时!)

    -> 第一张地图:4 x 4 如上所述,我有 16 个“离散”输入,4 个输出,它与隐藏层中的 8 个神经元(relu)一起工作得很好(学习率:0.05)。我使用了一个带有 epsilon 的贪婪策略,在 60 集内从 1 减少到 0.1。 The test scenario is shown here. 将标准 qlearning 与 q-map 和“神经”qlearning 之间的性能进行比较(在这种情况下,我使用了 8 个神经元和不同的 dropOut 率)。

总结一下:神经Q-learning对小网格效果很好,性能还可以,很可靠。

-> 更大的地图:10 x 10

现在我尝试将神经网络用于更大的地图。 一开始我尝试了这个简单的case

在我的例子中,神经网络如下所示:100 个输入; 4个输出;一个隐藏层中大约有 30 个神经元(relu);我再次对贪婪策略使用了递减的探索因子;超过 200 集学习率从 0.1 降低到 0.015 以增加稳定性。

首先,我遇到了由离散输入向量引起的单个位置之间的收敛和插值问题。 为了解决这个问题,我在向量中添加了一些相邻位置,其值取决于到当前位置的距离。这极大地改善了学习,政策也变得更好。上图显示了 24 个神经元的性能。

总结:简单的情况是由网络解决的,但只是通过大量的参数调整(神经元数量、探索因子、学习率)和特殊的输入变换。

现在这里是我仍未解决的问题/问题:

(1) 我的网络能够在 10 x 10 的地图中解决非常简单的案例和示例,但由于问题变得有点复杂,它失败了。在很可能失败的情况下,网络没有任何变化来找到正确的策略。 在这种情况下,我对任何可以提高性能的想法持开放态度。

(2) 有没有更聪明的方法来转换网络的输入向量?我敢肯定,将相邻位置添加到输入向量一方面可以改善 q 值在地图上的插值,但另一方面会使训练网络的特殊/重要位置变得更加困难。我已经在早期尝试过标准笛卡尔二维输入 (x/y),但失败了。

(3) 除了具有反向传播的前馈网络之外,是否还有另一种网络类型,通常使用 q 函数近似产生更好的结果?您是否看过项目,其中 FF-nn 在更大的地图上表现良好?

【问题讨论】:

    标签: neural-network reinforcement-learning q-learning feed-forward


    【解决方案1】:

    众所周知,Q-Learning + 前馈神经网络作为 q 函数逼近器即使在简单问题中也可能失败 [Boyan & Moore, 1995]。

    Rich Sutton 在他的web site 的常见问题解答中有一个与此相关的问题。

    一种可能的解释是 [Barreto & Anderson, 2008] 中描述的称为干扰的现象:

    当一个状态-动作对的更新改变了其他对的 Q 值时,就会发生干扰,可能是在错误的方向上。

    干扰自然与泛化相关,并且也发生在传统的监督学习中。然而,在强化学习范式中,它的影响往往更有害。原因是双重的。首先,干扰和引导的组合很容易变得不稳定,因为更新不再是严格本地的。从 (4) 和 (5) 派生的算法的收敛性证明是基于这些算子是收缩映射的事实,也就是说,它们的连续应用导致序列收敛到一个固定点,该固定点是贝尔曼方程的解[14,36]。然而,当使用逼近器时,这种渐近收敛会丢失,[...]

    另一个不稳定的来源是在线强化学习中传入数据的分布取决于当前策略这一事实的结果。根据系统的动态,代理可以在不代表整个域的状态空间区域中停留一段时间。在这种情况下,学习算法可能会分配函数逼近器的过多资源来表示该区域,可能会“忘记”之前存储的信息。

    缓解干扰问题的一种方法是使用局部函数逼近器。每个基函数彼此越独立,这个问题就越不严重(在极限情况下,每个状态都有一个基函数,这对应于查找表的情况)[86]。一类被广泛用于近似的局部函数是径向基函数(RBF)[52]。

    因此,在您的问题类型(n*n 网格世界)中,RBF 神经网络应该会产生更好的结果。

    参考文献

    Boyan, J. A. & Moore, A. W. (1995) 强化学习中的泛化:安全地逼近价值函数。 NIPS-7。加利福尼亚州圣马特奥:摩根考夫曼。

    André da Motta Salles Barreto 和 Charles W. Anderson (2008) Restricted gradient-descent algorithm for value-function approximation in强化学习,人工智能 172 (2008) 454–482

    【讨论】:

    • 感谢您回答我的问题!如果我想将上面描述的任务转移到连续状态空间,使用 RBF 神经网络是否仍然可行?我的代理可以从深度学习技术或深度强化学习中获利吗?
    • 欢迎您!是的,当然,事实上,当状态数量离散且很小时,应用函数逼近器(MLP、RBF 网络或其他)是没有意义的。 RBF 神经网络特别适用于输入空间维数较小的问题。在 2D 的情况下,就像您的情况一样,这很棒,因为您可以轻松绘制 Q 函数(甚至 RBF 函数:imgur.com/knStnKI)并将基函数的数量和宽度调整为足够的值。
    猜你喜欢
    • 2017-11-11
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2017-04-01
    相关资源
    最近更新 更多