我目前正在使用 Q-学习来尝试教一个机器人在一个充满墙壁/障碍物的房间中移动。它必须从房间中的任何位置开始,并到达目标状态(例如,可能是到达带有门的瓦片)。目前,当它想要移动到另一个瓦片时,它会移动到那个瓦片,但我一直在考虑将来我可以增加一个随机的机会,让它去另一个瓦片,而不是那个瓦片。它只能向上、下、左、右移动。到达目标状态会获得 +100 的奖励,其余动作会获得 0 的奖励。
我正在使用这里找到的算法,如下面的图片所示。
关于这一点,我有一些问题:
- 使用 Q-学习时,有点像神经网络,我必须区分学习阶段和使用阶段吗?我的意思是,他们展示的第一张图片似乎是一个学习阶段,第二张图片是一个使用阶段。
- 我在某个地方读到,需要无限步才能达到最佳 Q 值表。是真的吗?我觉得不是真的,但我肯定遗漏了一些东西。
-
我也听说过 TD(时间差分),它似乎由以下表达式表示:
Q(a, s) = Q(a, s) * alpha * [R(a, s) + gamma * Max { Q(a', s' } - Q(a, s)]
当 alpha = 1 时,这似乎就是图片中首先显示的那个。这里的 gamma 有什么区别?
- 如果我尝试一个非常大的房间(例如 300×200 像素),我会遇到一些麻烦。由于它本质上是随机运行的,如果房间非常大,那么从第一个状态随机到达目标状态将花费大量时间。我可以使用哪些方法来加速它?我想也许可以有一个包含 true 和 false 的表,关于我是否已经在该 episode 中处于该状态。如果是,我会丢弃它,如果不是,我会去那里。如果我已经处于所有这些状态,那么我会去一个随机的状态。这样,它就像我现在所做的一样,知道我会比现在更少地重复状态。
- 我想尝试一些不同于我的 Q 值查找表的东西,所以我在考虑为此使用带有反向传播的神经网络。我可能会尝试为每个动作(上、下、左、右)使用一个神经网络,因为它看起来会产生最佳结果。除了 SVM(似乎很难自己实现)之外,还有其他我可以使用的并且可以实现的方法,可以给我好的 Q 值函数近似吗?
- 你认为遗传算法在这种情况下会产生好的结果吗,使用 Q 值矩阵作为它的基础?我该如何测试我的适应度函数?给我的印象是,遗传算法通常用于更随机/复杂的事情。如果我们仔细观察,我们会注意到 Q 值遵循一个明显的趋势 – 在目标附近具有较高的 Q 值,而在离目标较远的地方具有较低的 Q 值。尝试通过遗传算法达到这个结论可能需要太长时间?
回答:
我不是这个领域的专家,但我会尽力直接回答你的许多问题
[顺便说一句,我应该为每个问题获得多个 +reps!… 开玩笑,如果我是为了 “SO reps”,我会远离那些总共只有 20 次浏览的帖子,其中一半的访问者对概念有一个粗略的了解]
1) Q-学习是一个两阶段的事情?
是的,Q-学习包含两个阶段,一个学习阶段和一个行动阶段。与许多自动学习算法一样,在行动阶段“继续学习”是可能的。
2) 获得最佳 G 矩阵需要无限步?我不确定哪里有要求无限次学习循环才能学习最佳 Q 矩阵的说法。可以肯定的是(除非 alpha 和 gamma 因子不正确),该算法会收敛,即使速度可能非常慢。这促使我跳过并评论你关于 300×200 游戏空间的想法,嗯……是的!对于这样一个空间,以及给定的奖励模型,获得一个“最佳”的 Q 表需要花费看起来像无限的时间。现在,从数学上讲,该算法可能永远无法达到最佳状态,但对于实际解决方案,在渐近线上工作就足够好了。
3) gamma 在 TD 模型中的作用
这表明了在通往更高奖励的路径(在这里,对于你的模型,字面上是)上推迟奖励的重要性。这通常可以防止算法陷入解决方案空间的局部最大值,但代价是使学习速度更慢…
4) 关于帮助学习大型迷宫的建议
冒着背叛 Q-学习本质的风险,你可以从机器人离目标越来越远的地方开始。这将有助于它首先改善目标周围状态区域的 Q 矩阵,然后利用这个部分学习的 Q 矩阵作为初始状态,随机地在距离目标越来越大的半径内选择。
另一种风险更高的方法(实际上可能进一步掩盖 Q-学习的真正本质)是改变 R 矩阵,以提供越来越高的奖励,随机放置在距离目标越来越小的距离上。这种方法的缺点是,它可能会在解决方案空间中引入许多局部最大值的机会,如果学习率和其他因素没有经过适当的调整,算法可能会陷入困境。
特别是这两种方法都可以被解释为你的(设计者)“连接”到一个解决方案中。其他人会说这仅仅是一种将 DP 融入其中的方式…
5) 神经网络 (NN) 6) 遗传算法 (GA)
对在其中添加 NN 或 GA 没有意见。
我可能已经用一些不太数学精确的说法让自己出丑了。;-)