我目前正在使用 Q-Learning 来尝试教机器人如何在充满墙壁/障碍物的房间中移动。它必须从房间的任何地方开始并达到目标状态(例如,这可能是有门的瓷砖)。目前,当它想移动到另一个图块时,它会去那个图块,但我在想将来我可能会添加一个随机的机会去另一个图块,而不是那个。它只能上下左右移动。达到目标状态产生 +100,其余动作产生 0。
我正在使用此处找到的算法,如下图所示。
现在,关于这个,我有一些问题:
- 使用 Q-Learning 时,有点像神经网络,我必须区分学习阶段和使用阶段?我的意思是,似乎他们在第一张图片中显示的是学习的,而在第二张图片中显示的是使用的。
- 我在某处读到,要达到最佳 Q 值表需要无数个步骤。真的吗?我会说这不是真的,但我必须在这里遗漏一些东西。
我也听说过 TD(Temporal Differences),它似乎由以下表达式表示:
Q(a, s) = Q(a, s) * alpha * [R(a, s) + gamma * Max { Q(a', s' } - Q(a, s)]
对于 alpha = 1,这似乎是图片中第一个显示的那个。伽马值在这里有什么不同?
- 如果我尝试一个非常大的房间(例如 300x200 像素),我会遇到一些复杂情况。由于它本质上是随机运行的,如果房间很大,那么从第一个状态随机进入目标状态将需要很长时间。我可以使用哪些方法来加快速度?我想也许有一张桌子,里面装满了对与错,关于我在那一集中所拥有的任何东西是否已经处于那种状态。如果是,我会丢弃它,如果不是,我会去那里。如果我已经去过所有这些州,那么我会去一个随机的。这样一来,就像我现在正在做的事情一样,我知道我会比现在更频繁地重复状态。
- 除了 Q 值的查找表之外,我还想尝试其他的东西,所以我正在考虑使用带有反向传播的神经网络。我可能会尝试为每个动作(上、下、左、右)设置一个神经网络,因为这似乎是产生最佳结果的方法。是否有任何其他方法(除了 SVM,这似乎太难以实现自己)我可以使用和实现给我很好的 Q-Values 函数逼近?
- 你认为遗传算法在这种情况下会产生好的结果吗,使用 Q 值矩阵作为它的基础?如何测试我的健身功能?它给我的印象是 GA 通常用于更随机/更复杂的事情。如果我们仔细观察,我们会注意到 Q 值遵循一个明显的趋势 - 靠近目标的 Q 值越高,离目标越远,Q 值越低。试图通过 GA 得出这个结论可能需要太长时间吗?