2.2-如何计算回报?
上一节我们已经证明了回报的重要性,那么如何计算回报呢?实际上我们有两种计算回报的方法。

图\(2.3\): 用于说明如何计算回报的示例。这个例子中没有目标单元格或禁止单元格。
-
第一个计算回报的方法就是根据定义,回报等于沿轨迹收集的所有奖励的折扣总和。请看图\(2.3\)中的例子。令\(v_i\)表示从\(s_i\)(\(i = 1, 2, 3, 4\))开始获得的回报。那么,从图\(2.3\)中的四种状态出发所得到的回报为:
\[\begin{gathered}v_{1}=r_1+\gamma r_2+\gamma^2r_3+\ldots,\\v_{2}=r_2+\gamma r_3+\gamma^2r_4+\ldots,\\v_{3}=r_3+\gamma r_4+\gamma^2r_1+\ldots,\\\mathrm{v}_4=r_{4}+\gamma r_{1}+\gamma^{2}r_{2}+\ldots.\end{gathered}\tag{2.2}\] -
第二种方法是本节重点关注的自举法(bootstrapping)。具体来说,通过观察式\((2.2)\)中回报的表达式,可以将其重写为:
\[\begin{gathered}v_{1}=r_1+\gamma(r_2+\gamma r_3+\ldots)=r_1+\gamma v_2,\\v_{2}=r_2+\gamma(r_3+\gamma r_4+\ldots)=r_2+\gamma v_3,\\v_{3}=r_3+\gamma(r_4+\gamma r_1+\ldots)=r_3+\gamma v_4,\\v_{4}=r_4+\gamma(r_1+\gamma r_2+\ldots)=r_4+\gamma v_1.\end{gathered}\tag{2.3}\]方程\((2.3)\)表明了一个有趣的现象,从不同状态出发的回报值是相互依赖。具体来说,\(v_1\)依赖于\(v_2\),\(v_2\)依赖于\(v_3\),\(v_3\)依赖于\(v_4\),\(v_4\)又依赖于\(v_1\)。这反映了自举的思想:\(v_1,v_2,v_3,v_4\)可以从其自身\(v_2,v_3,v_4,v_1\)得到。
乍一看,自举似乎是一个无解的循环,这是因为一个未知量的计算依赖于另一个未知量。事实上,如果我们从数学的角度来看,自举法更容易理解。具体来说,\((2.3)\)的方程可以转换成一个矩阵-向量形式的方程:
\[\underbrace{\begin{bmatrix}v_1\\v_2\\v_3\\v_4\end{bmatrix}}_{v}=\begin{bmatrix}r_1\\r_2\\r_3\\r_4\end{bmatrix}+\begin{bmatrix}\gamma v_2\\\gamma v_3\\\gamma v_4\\\gamma v_1\end{bmatrix}=\underbrace{\begin{bmatrix}r_1\\r_2\\r_3\\r_4\end{bmatrix}}_{r}+\underbrace{\gamma\begin{bmatrix}0&1&0&0\\0&0&1&0\\0&0&0&1\\1&0&0&0\end{bmatrix}}_{P}\underbrace{\begin{bmatrix}v_1\\v_2\\v_3\\v_4\end{bmatrix}}_{v},\]上式可以更简洁地写为:
\[v=r+\gamma Pv.\]上面方程的解很容易求解,即\(v=(I-\gamma P)^{-1} r\),其中\(I\in\mathbb{R}^{4\times 4}\)是单位矩阵。有的读者会问\((I - \gamma P)\)一定是可逆的吗?答案是肯定的,具体证明可参见\(2.7.1\)节。
事实上,\((2.3)\)就是这个简单例子的贝尔曼方程,而方程\((2.4)\)是这个贝尔曼方程的矩阵-向量形式。虽然很简单,但方程\((2.3)\)却展示了贝尔曼方程的核心思想:从一个状态出发所获得的回报依赖于从其他状态开始所获得的回报。自举的思想对理解后面介绍的贝尔曼方程至关重要。