让您感到困惑的部分Bellman approximation
是用于更新Q-values
被定义为s
执行给定操作的状态的a
部分。
Q
对于这个状态,s
和行动,a
,等于预期的即时奖励和目标状态的折扣长期奖励。
Q-values(or the value of the action)
我们在状态的值中取最大值,s'
这是从状态开始的下一个状态s
,带有一个动作,因为从一个状态到一个状态a'
时我们可以采取的动作是一组互斥的离散集(即,您的环境允许您在向上、向左、向右或向下的方向上移动),因此最佳操作将是导致该操作的最高值的操作。s
s'
以上图为例。代理从状态开始,s0
并且能够向上、向左、向右或向下移动,这些都是动作。代理可以采取的行动本质上是随机的,不是确定性的,但即当代理打算向上时0.33%
,代理可能会改为向左或向右移动。我将在这里为 gamma 分配一个值 1。
这就是你如何计算Q-values
状态s0
和动作up
的值,进入状态的值是代理收到的即时奖励,V1 = 1, V2 = 2, V3 = 3, V4 = 4
。
Q(s0,up) = 0.33 * V1 + 0.33 * V2 0.33 * V4
= 0.33 * 1 + 0.33 * 2 + 0.33 * 4
= 2.31
接下来,如果您计算所有其他可能状态及其动作的 Q 值,您将得到以下结果:
Q(s0,left) = 1.98
Q(s0,right) = 2.64
Q(s0,down) = 2.97
因此,状态的最终值s0
是maximum
那些动作的值,即2.97
。这就是您在代码中真正尝试做的所有事情。
至于做什么currentQ[action] = newQ;
,它正在对当前的动作执行更新,Q-values
从其旧值到剧集结束时的新更新值。
关于它为什么这样做,您必须了解的一件事是,代理Q-values
在一集之后对其进行更新,然后再次进行训练并重复该过程,直到代理设法完成其目标(对于 Atari 论文这个算法是从引入的,那个目标的平均得分我认为是 19,这相当于在 21 场比赛中赢了 19 场)。
您可以从原始论文中了解有关整个过程的更多信息。
但我认为在此之前你需要更多地了解贝尔曼方程,因为它对于理解强化学习非常重要。DeepMind 有一个关于这方面的优秀 Youtube 系列,可以在这里找到。
更好的是,它的创始人 Richard Sutton 和 Andrew Barto 有一本关于强化学习的免费书籍。我相信他们会在第 4 章详细介绍这一点。
编辑:
我不太清楚你所说的它如何影响训练是什么意思,但我会概述整个过程,让你了解训练是如何为此工作的: