从决策规则到概率分布

策略回答一个问题:给定状态 ss,智能体应该采取哪个动作 aa?最简单的答案是一个函数。

定义确定性策略

确定性策略把每个状态直接映射到一个动作:

a=μθ(s),μθ:SAa = \mu_\theta(s), \qquad \mu_\theta : \mathcal{S} \rightarrow \mathcal{A}

给定一个固定的参数向量 θ\theta,同一个状态总是产生同一个动作。

这已经足以定义出一种行为,而且确定性策略在实践中往往就是这样实现的,比如用一个小型多层感知机,直接把观测向量映射成动作向量,中间没有任何采样步骤,也不涉及任何概率分布。但一个纯粹的确定性映射有一个结构性弱点,本系列前面的笔记里其实已经埋下了伏笔:它没法探索。如果 μθ\mu_\theta 从同一个状态出发总是返回同一个动作,智能体就没有任何内建的机制去尝试其他选项、弄清楚它们是否更好。探索只能从外部硬加进来,作为事后叠加的显式噪声。

定义随机性策略

随机性策略定义的是一个以状态为条件、关于动作的概率分布:

πθ(as)\pi_\theta(a \mid s)

从中采样一个动作记作 aπθ(s)a \sim \pi_\theta(\cdot \mid s)

探索这件事,从这个定义里几乎是免费得到的:只要 πθ\pi_\theta 给不止一个动作赋予了非零概率,智能体就会(从构造上)偶尔尝试当前认为并非最优的选项。但这里有一点很容易被模糊掉:这只是随机性策略之所以重要的两个真正独立的理由之一,而另一个理由,对本笔记之后的内容而言,反而更加关键。

策略要随机,其实有两个不同的理由

第一个理由是行为层面的:一个关于动作的分布天然支持探索,而一个确定性映射不支持。第二个理由是数学层面的,和探索完全无关:把一个决策变成一个分布、而不是一个单点,恰恰是能够对策略自身的参数写出一个光滑、可微目标的关键,即便底层的选择本身是离散的,即便被优化的量(回报)对动作本身并不可微。正是这第二个理由,让策略梯度方法特别需要 πθ(as)\pi_\theta(a \mid s) 是一个真正的概率分布,有明确的密度或质量函数,而不仅仅是”在确定性策略上加了点随机噪声”。这正是策略梯度笔记里整套 log-derivative 技巧要处理的主题。

πθ(as)\pi_\theta(a \mid s) 具体长什么样,完全取决于它要覆盖的动作空间,就像本系列前面对比基于价值的方法时一样,离散和连续动作空间需要真正不同的构造。

离散动作:类别分布策略

定义类别分布策略

对于离散动作空间 A={a1,,an}\mathcal{A} = \{a_1, \dots, a_n\},类别分布策略输出一个概率向量

πθ(s)=[p1pn],pi=πθ(ais),i=1npi=1.\pi_\theta(\cdot \mid s) = \begin{bmatrix} p_1 \\ \vdots \\ p_n \end{bmatrix}, \qquad p_i = \pi_\theta(a_i \mid s), \qquad \sum_{i=1}^n p_i = 1.

在实现上,这和一个分类器完全一样:网络输出 nn 个实值 logits,再用 softmax 把它们转换成上面的概率向量。

如果采样出的动作是 aia_i,它的似然是 πθ(ais)=pi\pi_\theta(a_i \mid s) = p_i,而它的对数似然(接下来一切都会用到的量)是 logπθ(ais)=logpi\log \pi_\theta(a_i \mid s) = \log p_i

连续动作:对角高斯策略

一旦动作空间变成连续统,类别分布就没有任何有意义的类比了,即没有办法”给每一个实数分配一个概率”。标准的做法是让网络输出一个连续分布的参数,而不是分布本身的每一个取值。

定义对角高斯策略

对于一个 kk 维连续动作 aRka \in \mathbb{R}^k,对角高斯策略是

πθ(as)=N(μθ(s), diag(σ2))\pi_\theta(a \mid s) = \mathcal{N}\big(\mu_\theta(s),\ \operatorname{diag}(\sigma^2)\big)

其中均值向量为 μθ(s)\mu_\theta(s),协方差矩阵被限制为对角矩阵 Σ=diag(σ12,,σk2)\Sigma = \operatorname{diag}(\sigma_1^2, \dots, \sigma_k^2)

为什么是对角的

Σ\Sigma 限制为对角矩阵,是一个真正的建模选择,而不是数学上的必然,即它意味着在给定状态的条件下,各个动作维度被视为条件独立的,即每个 ii 分别满足 aiN(μi,σi2)a_i \sim \mathcal{N}(\mu_i, \sigma_i^2)。一个完整的协方差矩阵原则上可以捕捉动作维度之间的相关性(比如转向角和速度联动),但代价是 O(k2)O(k^2) 个参数,还要在整个训练过程中维持矩阵的正定性。对角化的限制放弃了这部分表达能力,换来的是 O(k)O(k) 个参数,以及一个只需要逐坐标维持的正性约束。

用无约束参数化表示一个有约束的量

标准差必须满足 σi>0\sigma_i > 0,但神经网络的原始输出是一个无约束的实数。与其裁剪或者用其他方式硬性约束网络的输出,标准的做法是让网络转而输出 logσiR\log \sigma_i \in \mathbb{R},再通过 σi=exp(logσi)\sigma_i = \exp(\log \sigma_i) 恢复出 σi\sigma_i。因为 exp:RR>0\exp: \mathbb{R} \to \mathbb{R}_{>0} 是一个双射,这个重参数化不费吹灰之力就精确地保证了正性,完全不需要触碰优化器所在的那个无约束参数空间。

从这个策略里采样,用的是同一个技巧的反向操作:不直接从一个参数依赖于 θ\theta 的分布里采样,而是先采样与参数无关的噪声,再对它施加一个确定性的、依赖 θ\theta 的变换。

定义通过重参数化采样

采样 zN(0,I)z \sim \mathcal{N}(0, I),然后令

a=μθ(s)+σz,即逐坐标地 ai=μi(s)+σizi,a = \mu_\theta(s) + \sigma \odot z, \qquad\text{即逐坐标地 } a_i = \mu_i(s) + \sigma_i z_i,

其中 \odot 表示逐元素乘法。

命题这个重参数化是正确的

按上面方式构造出来的 aa 满足 aN(μθ(s),diag(σ2))a \sim \mathcal{N}(\mu_\theta(s), \operatorname{diag}(\sigma^2))

证明

每一个坐标 ai=μi(s)+σizia_i = \mu_i(s) + \sigma_i z_i 都是对标准正态变量 ziN(0,1)z_i \sim \mathcal{N}(0,1) 的一个仿射变换。高斯变量的仿射变换仍然是高斯的,其均值和方差按如下方式变换:E[ai]=μi(s)+σiE[zi]=μi(s)\mathbb{E}[a_i] = \mu_i(s) + \sigma_i \mathbb{E}[z_i] = \mu_i(s)Var(ai)=σi2Var(zi)=σi2\operatorname{Var}(a_i) = \sigma_i^2 \operatorname{Var}(z_i) = \sigma_i^2,所以 aiN(μi(s),σi2)a_i \sim \mathcal{N}(\mu_i(s), \sigma_i^2)。按构造,zz 的各个坐标是相互独立的,而对独立变量做逐坐标的仿射变换会保持独立性,所以各个 aia_i 之间也相互独立,这恰好就是 aN(μθ(s),diag(σ2))a \sim \mathcal{N}(\mu_\theta(s), \operatorname{diag}(\sigma^2))

把对角高斯的密度写出来再取对数,就得到了对数似然。

定义对角高斯策略的对数似然
logπθ(as)=12i=1k[(aiμiσi)2+2logσi+log(2π)]\log \pi_\theta(a \mid s) = -\frac{1}{2} \sum_{i=1}^{k} \left[ \left(\frac{a_i - \mu_i}{\sigma_i}\right)^2 + 2\log\sigma_i + \log(2\pi) \right]

离均值近的动作对数似然更高;离均值远的动作对数似然更低;而更大的 σi\sigma_i,既会让分布变宽,也会(从公式里直接可以看出来)削弱对数似然对”aia_i 离均值有多远”这件事的敏感度,代价是一个常数项 logσi-\log\sigma_i 的惩罚。更大的 σi\sigma_i 是在用精度换取维度 ii 上的探索,而对数似然公式把这个权衡明确地标出了价格。

对数似然:策略真正在优化的对象

上面两种构造最终都落在了同一个地方:不是概率本身,而是概率的对数。这不是一个纯粹的行文偏好。

为什么偏偏是对数

logπθ(as)\log \pi_\theta(a \mid s) 而不是 πθ(as)\pi_\theta(a \mid s),同时做了两件事。第一,它把概率的乘积变成了对数的求和,即一条轨迹在某个策略下的概率,可以分解成逐步概率的乘积,所以它的对数概率就是逐步对数概率的求和,这对一长串很小的数字而言在数值上更稳定,而且逐项求导也容易得多。第二,也更根本的是:对数似然正是 log-derivative 技巧作用的那个精确对象:θlogπθ(as)\nabla_\theta \log \pi_\theta(a \mid s) 恰恰是那个把”一个被采样动作的回报”转化为一个可用梯度信号的 score function,而完全不需要对环境本身求导。这个恒等式(为什么”对数概率的梯度”恰好是应该乘上回报的那个正确对象)内容足够充分,值得单独推导,在策略梯度笔记里有完整的推导。

对比

策略类型动作空间分布主要输出
确定性策略连续或离散直接输出动作 a=μθ(s)a = \mu_\theta(s)
类别分布策略离散类别分布动作概率 πθ(ais)\pi_\theta(a_i \mid s)
对角高斯策略连续高斯分布均值 μθ(s)\mu_\theta(s) 和标准差 σ\sigma

参考资料