快速 Q 学习
Speedy Q-Learning
我在维基百科上看过
https://en.wikipedia.org/wiki/Q-learning
Q-learning may suffer from slow rate of convergence, especially when the discount factor {\displaystyle \gamma } \gamma is close to one.[16] Speedy Q-learning, a new variant of Q-learning algorithm, deals with this problem and achieves a slightly better rate of convergence than model-based methods such as value iteration
所以我想试试 speedy q-learning,看看效果如何。
我在互联网上能找到的关于它的唯一来源是:
https://papers.nips.cc/paper/4251-speedy-q-learning.pdf
这是他们建议的算法。
现在,我不明白。 TkQk 到底是什么,我应该有另一个 q 值列表吗?还有比这更清楚的解释吗?
Q[previousState][action] = ((Q[previousState][action]+(learningRate * ( reward + discountFactor * maxNextExpectedReward - Q[previousState][action]) )));
这是我当前的 QLearning 算法,我想将其替换为快速 Q-learning。
首先要考虑的是:如果你想加速 Q-learning 来解决实际问题,我会在 Speedy Q-learning 之前选择其他选项,例如 well-known Q(lambda ),即 Q-learning 与可读性痕迹相结合。为什么?因为有大量的信息和实验(好的)结果带有资格痕迹。事实上,正如 Speedy Q-learning 作者所说,这两种方法的工作原理是相似的:
The idea of using previous estimates of the action-values has already
been used to improve the performance of Q-learning. A popular
algorithm of this kind is Q(lambda)
[14, 20], which incorporates the
concept of eligibility traces in Q-learning, and has been empirically
shown to have a better performance than Q-learning, i.e., Q(0), for
suitable values of lambda
.
您可以在 Sutton and Barto RL book 中找到很好的介绍。如果您只是想研究 Speedy Q-learning 和标准版之间的差异,请继续。
现在你的问题。是的,你必须维护两个单独的 Q-values 列表,一个用于当前时间 k
,另一个用于之前的 k-1
,即 Q_{k}
和 Q_{k-1}
分别
在常见情况下(包括您的情况),TQ_{k} = r(x,a) + discountFactor * max_{b in A} Q_{k}(y,b)
,其中 y
是下一个状态,b
最大化给定状态 Q_{k}
的动作.请注意,您在标准 Q-learning 中使用该运算符,它具有以下更新规则:
在 Speedy Q-learning (SQL) 的情况下,如前所述,您维护两个 Q-functions 并将操作 TQ
应用于两个:TQ_{k}
和 TQ_{k-1}
。然后在SQL更新规则中使用前面操作的结果:
pseudo-code你post问题中的另一点要强调的是,它对应于SQL的同步版本。这意味着,在每个时间步 k
中,您需要生成下一个状态 y
并为所有现有 state-actions 对 (x,a)
更新 Q_{k+1}(x,a)
。
我在维基百科上看过 https://en.wikipedia.org/wiki/Q-learning
Q-learning may suffer from slow rate of convergence, especially when the discount factor {\displaystyle \gamma } \gamma is close to one.[16] Speedy Q-learning, a new variant of Q-learning algorithm, deals with this problem and achieves a slightly better rate of convergence than model-based methods such as value iteration
所以我想试试 speedy q-learning,看看效果如何。
我在互联网上能找到的关于它的唯一来源是: https://papers.nips.cc/paper/4251-speedy-q-learning.pdf
这是他们建议的算法。
现在,我不明白。 TkQk 到底是什么,我应该有另一个 q 值列表吗?还有比这更清楚的解释吗?
Q[previousState][action] = ((Q[previousState][action]+(learningRate * ( reward + discountFactor * maxNextExpectedReward - Q[previousState][action]) )));
这是我当前的 QLearning 算法,我想将其替换为快速 Q-learning。
首先要考虑的是:如果你想加速 Q-learning 来解决实际问题,我会在 Speedy Q-learning 之前选择其他选项,例如 well-known Q(lambda ),即 Q-learning 与可读性痕迹相结合。为什么?因为有大量的信息和实验(好的)结果带有资格痕迹。事实上,正如 Speedy Q-learning 作者所说,这两种方法的工作原理是相似的:
The idea of using previous estimates of the action-values has already been used to improve the performance of Q-learning. A popular algorithm of this kind is
Q(lambda)
[14, 20], which incorporates the concept of eligibility traces in Q-learning, and has been empirically shown to have a better performance than Q-learning, i.e., Q(0), for suitable values oflambda
.
您可以在 Sutton and Barto RL book 中找到很好的介绍。如果您只是想研究 Speedy Q-learning 和标准版之间的差异,请继续。
现在你的问题。是的,你必须维护两个单独的 Q-values 列表,一个用于当前时间 k
,另一个用于之前的 k-1
,即 Q_{k}
和 Q_{k-1}
分别
在常见情况下(包括您的情况),TQ_{k} = r(x,a) + discountFactor * max_{b in A} Q_{k}(y,b)
,其中 y
是下一个状态,b
最大化给定状态 Q_{k}
的动作.请注意,您在标准 Q-learning 中使用该运算符,它具有以下更新规则:
在 Speedy Q-learning (SQL) 的情况下,如前所述,您维护两个 Q-functions 并将操作 TQ
应用于两个:TQ_{k}
和 TQ_{k-1}
。然后在SQL更新规则中使用前面操作的结果:
pseudo-code你post问题中的另一点要强调的是,它对应于SQL的同步版本。这意味着,在每个时间步 k
中,您需要生成下一个状态 y
并为所有现有 state-actions 对 (x,a)
更新 Q_{k+1}(x,a)
。