我正试图弄清楚如何在gridworld示例中实现Q学习。我相信我理解Q学习如何运作的基础知识,但它似乎没有给我正确的价值。
这个例子来自Sutton和Barton关于强化学习的书。
在gridworld被指定,使得该试剂可以采取以相等的概率的动作{N,E,W,S}在任何给定状态,并且奖励所有动作是0除外如果代理试图移出网格中情况是-1。有两种特殊状态,A和B,其中代理确定性地分别移动到A'和B',奖励分别为+10和+5。
我的问题是如何通过Q学习实现这一目标。我希望能够通过矩阵求逆来估计值函数。代理开始于某个初始状态,不知道任何事情,然后采取ε-贪婪算法选择的行动,并获得我们可以模拟的奖励,因为我们知道如何分配奖励。
这引出了我的问题。每当代理从某个状态S转换时,我可以构建转移概率矩阵吗? S'根据代理采取特定行动并进行特定转变的频率计算概率?
答案 0 :(得分:1)
对于Q-learning,你不需要一个"模型"环境(即转移概率矩阵)来估计价值函数,因为它是一种无模型方法。对于矩阵求逆器评估,您可以参考使用转换矩阵的动态编程(基于模型)。您可以将Q学习算法视为一种试验和错误算法,您可以在其中选择操作并从环境中接收反馈。但是,与基于模型的方法相反,您不了解您的环境如何工作(没有转换矩阵和奖励矩阵)。最终,经过足够的采样经验后,Q函数将收敛到最佳值。
对于算法的实现,您可以在初始化所有统计数据和操作的Q函数之后从初始状态开始(这样您就可以跟踪$ SxA $)。然后根据您的策略选择一个操作。在这里,您应该实现步骤功能。 step函数将返回新状态$ s' $和奖励。将步骤功能视为环境对您行动的反馈。
最终您只需要根据以下内容更新您的Q功能: $ Q(S,A)= Q(S,A)+ \阿尔法\左[R + \伽马\底流{A'} {\最大值(Q(S',α)}) - Q(S ,一个)\右] $ 设置$ s = s' $并重复整个过程直到收敛。
希望这有帮助
答案 1 :(得分:0)
不确定这是否有帮助,但here是一篇通过机器人示例解释Q学习的文章。如果你想自己尝试一下,那里还有一些R代码。