我对机器学习方法还比较陌生,我想尝试一下Q-Learning。所以我一直在阅读这篇文章:
http://mnemstudio.org/path-finding-q-learning-tutorial.htm
让我感到困惑的是这个方程:
Q(1, 5) = R(1, 5) + 0.8 * Max[Q(5, 1), Q(5, 4), Q(5, 5)] = 100 + 0.8 * 0 = 100
在这个教程中,R(1, 5)
的值从100
变到0
,然后又变回100
,这让我很困惑!R矩阵应该是静态的。
回答:
我认为一个错误是第二方程中使用了R(1, 5)
。如果你仔细阅读文本,你会发现你目前在状态3
,并且随机选择去状态1
:
对于下一集,我们从随机选择的初始状态开始。这次,我们的初始状态是状态3。
查看R矩阵的第四行;它有3个可能的行动:去状态1、2或4。通过随机选择,我们选择去状态1作为我们的行动。
R(3, 1)
是0
,文章中随后更新的Q
矩阵也为Q(3, 1)
填充了值。
因此,方程应该是:
Q(3, 1) = R(3, 1) + 0.8 * Max[Q(1, 3), Q(1, 5)] = 0 + 0.8 * 100 = 80
(1, 2)
是-1
,所以我认为使用这个是错误的。文本甚至说:
现在我们想象我们处于状态1。查看奖励矩阵R的第二行(即状态1)。它有2个可能的行动:去状态3或状态5
所以R(1, 5)
不会变化:它始终是100
。只是有时与R(3, 1)
混淆了。
更新
这里是教程的另一部分,我认为为了清晰和正确性应该进行修改,以及我认为它应该表达的内容。我加粗了我的修改部分。
矩阵Q的更新条目,Q(5, 1), Q(5, 4), Q(5, 5),都是零。Q(1, 5)的计算结果为100,因为来自R(5, 1)的即时奖励。这个结果不会改变Q矩阵。
修改为:
矩阵Q的更新条目,Q(5, 1), Q(5, 4), Q(5, 5)(即,从之前的操作更新),都是零。Q(1, 5)的计算结果为100,因为来自R(1, 5)的即时奖励。这个结果不会改变Q矩阵。