5.3 动作的价值
为了更轻松一些,除了状态价值V(s),还可以用Q(s, a)定义不同的动作价值。基本上,Q(s, a)等于在状态s时执行动作a可获得的总奖励,并且可以通过V(s)进行定义。与V(s)相比,这个量没有那么基础,由于它更加方便,因此该变量为整个方法家族起了个名字叫Q-learning。
在这些方法中,我们的主要目标是获取每对状态和动作的Q值。
Q等于在状态s时采取动作a所预期获得的立即奖励和目标状态折扣长期奖励之和。我们也可以通过Q(s, a)来定义V(s):
这意味着,某些状态的价值等于从该状态执行某动作能获得的最大价值。最后,也可以用递归的方式表示Q(s, a)(在第6章中会用到):
在前面的公式中,立即奖励的索引s、a取决于环境细节。如果在状态s执行特定行动a后立即获得奖励,则使用索引(s, a),公式完全如上所述。但是,如果奖励是通过动作a'到达状态s'获得的,则该奖励的索引应为(s', a'),并且需要加上max运算符。从数学的角度来看,这种差异不是很明显,但是在方法的实现过程中可能很重要。第一种情况较为常见,因此,我们将遵循上述公式。
为了给你一个具体的例子,考虑一个类似于FrozenLake的环境,但结构要更简单:初始状态(s0)的周围有4个目标状态s1、s2、s3和s4,并具有不同的奖励(见图5.5)。
图5.5 简化的网格状环境
每个动作的概率都与FrozenLake中的方式相同:33%的概率会按动作执行,33%的概率会滑动到移动方向的左侧目标单元格,以及33%的概率会滑向右侧(见图5.6)。为简单起见,我们使折扣因子γ=1。
图5.6 网格环境转移图
首先来计算一下开始的动作的价值。最终状态s1、s2、s3和s4没有向外的连接,因此对于所有动作,这些状态的Q为零。因此,最终状态的价值等于其立即奖励(一旦到达目的地,片段结束,没有任何后续状态):V1=1,V2=2,V3=3,V4=4。
状态0的动作价值要复杂一些。首先计算动作“上”的价值。根据定义,其价值等于立即奖励加上后续步骤的长期价值。对于动作“上”的任何可能的转移都没有后续步骤:
Q(s0, 上)=0.33·V1+0.33·V2+0.33·V4=0.33·1+0.33·2+0.33·4=2.31
对s0的其他动作重复上述计算:
Q(s0, 左)=0.33·V1+0.33·V2+0.33·V3=1.98
Q(s0, 右)=0.33·V4+0.33·V1+0.33·V3=2.64
Q(s0, 下)=0.33·V3+0.33·V2+0.33·V4=2.97
状态s0的最终价值为这些动作的最大价值,即2.97。
在实践中,Q值要更加方便,对于智能体而言,制定决策时基于Q要比基于V简单得多。对于Q而言,要基于状态选择动作,智能体只需要基于当前状态计算所有动作的Q值,并且选择Q值最大的动作即可。要使用状态价值(V)做相同的事,智能体不仅需要知道价值,还需要知道转移概率。在实践中,我们很少能事先知道它们,所以智能体需要估计状态动作对的转移概率。在本章的后面,会通过两种方式解决FrozenLake环境的问题。然而,我们仍然缺少一项重要内容,即计算这些Vs和Qs的通用方法。