0

我试图弄清楚如何在 gridworld 示例中实现 Q 学习。我相信我了解 Q 学习如何运作的基础知识,但它似乎并没有给我正确的价值观。

这个例子来自 Sutton 和 Barton 关于强化学习的书。

网格世界的指定使得代理可以在任何给定状态下以相等的概率采取动作 {N,E,W,S},并且所有动作的奖励为 0,除非代理尝试离开网格,在这种情况下它是 - 1. 有两种特殊状态,A 和 B,其中代理确定性地分别移动到 A' 和 B',奖励分别为 +10 和 +5。

我的问题是关于我将如何通过 Q 学习来实现这一点。我希望能够通过矩阵求逆来估计价值函数。代理以某种初始状态开始,什么都不知道,然后采取由 epsilon-greedy 算法选择的动作并获得我们可以模拟的奖励,因为我们知道奖励是如何分配的。

这引出了我的问题。每次代理从某个状态 S -> S' 转换时,我是否可以构建一个转换概率矩阵,其中概率是根据代理采取特定动作并进行特定转换的频率计算的?

4

2 回答 2

1

对于 Q 学习,您不需要环境的“模型”(即转移概率矩阵)来估计价值函数,因为它是一种无模型方法。对于矩阵求逆评估,您指的是使用转移矩阵的动态规划(基于模型)。您可以将 Q 学习算法视为一种试错算法,您可以在其中选择一个动作并接收来自环境的反馈。但是,与基于模型的方法相反,您对环境的工作方式一无所知(没有转换矩阵和奖励矩阵)。最终,经过足够的采样经验后,Q 函数将收敛到最优值。

对于算法的实现,您可以从初始状态开始,在为所有统计信息和操作初始化 Q 函数之后(这样您就可以跟踪 $SxA$)。然后根据您的策略选择一个操作。在这里你应该实现一个step 函数。step 函数将返回新状态 $s'$ 和奖励。将阶跃函数视为环境对您的操作的反馈。

最终您只需要根据以下公式更新您的 Q 函数: $Q(s,a)=Q(s,a)+\alpha\left[r+\gamma\underset{a'}{\max(Q(s' ,a)})-Q(s,a)\right]$ 设置 $s=s'$ 并重复整个过程直到收敛。

希望这可以帮助

于 2015-05-26T20:23:40.773 回答
0

不确定这是否有帮助,但这里有一篇文章通过机器人示例解释 Q 学习。如果您想自己尝试一下,那里还有一些 R 代码。

于 2015-05-06T05:05:49.840 回答