原文链接:
huggingface.co/learn/deep-rl-course/unit2/bellman-equation
贝尔曼方程简化了我们的状态值或状态-动作值计算。
根据我们目前学到的知识,我们知道如果计算V(St)V(S_t)V(St)(状态的值),我们需要计算从该状态开始的回报,然后永远遵循策略。(我们在下面的示例中定义的策略是贪婪策略;为简化起见,我们不打折奖励)。
因此,要计算V(St)V(S_t)V(St),我们需要计算预期奖励的总和。因此:
要计算状态 1 的值:如果代理从该状态开始,然后按照贪婪策略(采取导致最佳状态值的动作)进行所有时间步骤的奖励总和。
然后,要计算V(St+1)V(S_{t+1})V(St+1),我们需要计算从该状态St+1S_{t+1}St+1开始的回报。
要计算状态 2 的值:如果代理从该状态开始,然后按照所有时间步骤的策略进行奖励的总和。
所以你可能已经注意到,我们在计算不同状态的值时重复了计算,如果你需要为每个状态值或状态-动作值都这样做,这可能会很繁琐。
不是为每个状态或每个状态-动作对计算预期回报,我们可以使用贝尔曼方程。(提示:如果你知道什么是动态规划,这非常相似!如果你不知道是什么,不用担心!)
贝尔曼方程是一个递归方程,工作原理如下:不是从每个状态的开始计算回报,而是将任何状态的值视为:
即时奖励Rt+1R_{t+1}Rt+1 + 后续状态的折现值(gamma∗V(St+1)gamma * V(S_{t+1}) gamma∗V(St+1) )。
如果我们回到我们的例子,我们可以说状态 1 的值等于如果我们从该状态开始的预期累积回报。
要计算状态 1 的值:如果代理从该状态 1 开始,然后按照所有时间步骤的策略进行奖励的总和。
这等同于 V(St)V(S_{t})V(St) = 立即奖励 Rt+1R_{t+1}Rt+1 + 下一个状态的折现价值 γ∗V(St+1)\gamma * V(S_{t+1})γ∗V(St+1)
为简化起见,这里我们不打折,所以γ = 1。
为简单起见,这里我们不打折,所以γ = 1。但在本单元的 Q 学习部分,您将学习一个γ = 0.99 的示例。
-
V(St+1)V(S_{t+1}) V(St+1) = 立即奖励 Rt+2R_{t+2}Rt+2 + 下一个状态的折现价值 (γamma∗V(St+2)gamma * V(S_{t+2})gamma∗V(St+2) ).
-
等等。
总之,贝尔曼方程的思想是,不是将每个值计算为预期回报的总和,这是一个漫长的过程,而是将值计算为立即奖励的总和 + 随后状态的折现价值。
在进入下一节之前,请考虑贝尔曼方程中γ的作用。如果γ的值非常低(例如 0.1 甚至为 0),会发生什么?如果值为 1 会发生什么?如果值非常高,比如一百万会发生什么?