带规划的 Dyna-Q 与 n 步 Q 学习
Dyna-Q with planning vs. n-step Q-learning
我正在阅读 Sutton 和 Barto 的强化学习,对于 Dyna-Q 的示例,他们使用了迷宫问题。该示例表明,在规划 n=50 步的情况下,该算法仅用 3 集就达到了最优路径。
这是对 50 步 Q 学习的改进吗?看起来你真的只是 运行 一堆每集 50 步的 Q-learning 算法,所以说它在 3 集中找到最佳路径是误导。
此外,我想最大的问题是,当您没有环境模型时,我认为 Dyna-Q 很有用,但在这个例子中我们没有环境模型吗?如果我们已经有了一个模型,为什么还要使用所有的内存来保存我们之前的所有动作呢?我无法理解为什么这是 Dyna-Q 的一个很好的例子。
理论上,我们没有模型。我们在实践中只是为了模拟,但在现实生活中我们没有。
Dyna-Q 基本上使用示例来近似您的模型。您 "query" 您的数据不是学习转换和奖励函数:过去我在状态 s
中执行操作 a
时发生了什么?如果一切都是确定性的,这相当于知道确切的模型。
想想也是这样。在经典的 Q-learning 中,您只知道当前的 s,a
,因此您仅在访问它时更新 Q(s,a)
。在 Dyna-Q 中,您每次更新所有 Q(s,a)
从内存中查询它们。您不必重新访问它们。这极大地加快了速度。
此外,非常常见的 "replay memory" 基本上重新发明了 Dyna-Q,尽管没有人承认它。
我正在阅读 Sutton 和 Barto 的强化学习,对于 Dyna-Q 的示例,他们使用了迷宫问题。该示例表明,在规划 n=50 步的情况下,该算法仅用 3 集就达到了最优路径。
这是对 50 步 Q 学习的改进吗?看起来你真的只是 运行 一堆每集 50 步的 Q-learning 算法,所以说它在 3 集中找到最佳路径是误导。
此外,我想最大的问题是,当您没有环境模型时,我认为 Dyna-Q 很有用,但在这个例子中我们没有环境模型吗?如果我们已经有了一个模型,为什么还要使用所有的内存来保存我们之前的所有动作呢?我无法理解为什么这是 Dyna-Q 的一个很好的例子。
理论上,我们没有模型。我们在实践中只是为了模拟,但在现实生活中我们没有。
Dyna-Q 基本上使用示例来近似您的模型。您 "query" 您的数据不是学习转换和奖励函数:过去我在状态 s
中执行操作 a
时发生了什么?如果一切都是确定性的,这相当于知道确切的模型。
想想也是这样。在经典的 Q-learning 中,您只知道当前的 s,a
,因此您仅在访问它时更新 Q(s,a)
。在 Dyna-Q 中,您每次更新所有 Q(s,a)
从内存中查询它们。您不必重新访问它们。这极大地加快了速度。
此外,非常常见的 "replay memory" 基本上重新发明了 Dyna-Q,尽管没有人承认它。