9.1-策略表示:从表格到函数
在本书之前的所有章节中,策略都用表格来表示:所有状态的行动概率都存储在一个表格中,如表\(9.1\)。实际上,策略也可以用函数来表示,记为\(\pi(a|s, \theta)\),其中\(\theta \in \mathbb{R}^m\)为参数向量。该策略函数也可以写成其他形式,例如\(\pi_\theta(a|s)\)、\(\pi_\theta(a, s)\)或\(\pi(a,s,\theta)\)。

表\(9.1\):策略的表格化表示。该表包含\(9\)个状态,每个状态对应\(5\)个行动。
我们首先说明表格法和函数法之间的区别。
- 首先,定义最优策略的方式不同? 当以表格形式表示策略时时,最优策略的定义是它能够最大化所有状态的状态值,即其状态值大于或等于其他任意策略的状态值。当以函数形式表示策略时时,最优策略的定义是它能够最大化一个标量目标函数。置于什么是标量目标函数。后面将详细介绍。
Note
在之前,一个策略\(\pi^*\)是最优的,如果对所有\(s\in \mathcal{S}\)和任何其他策略\(\pi\),\(v_{\pi^*}(s)\geq v_\pi(s)\)。\(\pi^*\)的状态值是最优状态值。
-
第二,策略的更新方式不同 当策略以表格形式展示时,可以通过直接改变表格中的元素来直接更新选择某些动作的概率。而当用函数描述策略时,不能再以这种方式更新策略,而只能通过改变函数参数\(\theta\)来间接更新选择某些动作的概率。
-
第三,获取行动概率的方式不同 当用表格描述策略时,可以直接通过查看表格中对应的元素来获得某个行动的概率。而用函数描述策略时,我们需要将状态-行动对\((s, a)\)输入函数中,通过计算函数来获得其概率(见图\(9.2(a)\))。当然,根据函数的结构也多种多样。我们也可以仅输入一个状态\(s\),然后输出所有动作的概率(见图\(9.2(b)\))。

图\(9.2\):用函数来表示策略。这些函数可能具有不同的结构。
上面的几点不同使得用函数表示策略具有诸多优势,例如它在处理大型状态-行动空间时更加高效,也具有更强的泛化能力。其原因与用函数表示值是类似的,这里不再赘述。
当用函数表示策略时,我们的任务是最大化一个标量目标函数\(J(\theta)\),其中\(\theta\)代表策略函数的参数。不同的参数对应于不同的目标函数值,因此我们需要找到最优的参数从而优化该目标函数。最简单的优化方法是梯度上升:
其中\(\nabla_\theta J\)表示\(J\)关于\(\theta\)的梯度,\(t\)为时间步长,\(\alpha\)为优化速率。
这实际上就是策略梯度方法的基本思想,虽然这个基本思想非常简单,但是想要理解其中的细节还是要花一点时间的。我们将在本章后续部分回答以下三个问题。
- 应该使用什么目标函数?(第\(9.2\)节)
- 如何计算目标函数的梯度?(第\(9.3\)节)
- 如何利用经验样本计算梯度并优化目标函数?(第\(9.4\)节)