一、策略梯度中的 baseline

本小结的主要内容是做数学推导得到带 baseline 的策略梯度的公式。

策略梯度方法常用 baseline 来降低方差,可以让收敛更快。

1.1 baseline 的性质

baseline 指的是一个函数 b ,它不依赖于动作 AA ,可以得到公式:

EA∼π[b⋅∂log⁡π(A∣s;θ)∂θ]=0(1.1)\mathbb{E}_{A \sim \pi} \left[ b \cdot \frac{\partial \log \pi(A|s; \theta)}{\partial \theta} \right] = 0 \tag{1.1}

证明过程如下:

EA∼π[b⋅∂log⁡π(A∣s;θ)∂θ](b 不依赖于动作 A)=b⋅EA∼π[∂log⁡π(A∣s;θ)∂θ](假设动作是离散的,展开期望)=b⋅∑a∈Aπ(a∣s;θ)∂log⁡π(a∣s;θ)∂θ(求导的链式法则)=b⋅∑a∈Aπ(a∣s;θ)[1π(a∣s;θ)⋅∂π(a∣s;θ)∂θ]=b⋅∑a∈A∂π(a∣s;θ)∂θ(连加与求导的对象不同)=b⋅∂∑a∈Aπ(a∣s;θ)∂θ(所有动作的概率和为 1)=b⋅∂1∂θ(常数的导数为 0)=0\begin{aligned} \mathbb{E}_{A \sim \pi} \left[ b \cdot \frac{\partial \log \pi(A|s; \theta)}{\partial \theta} \right] \\ & \text{(b 不依赖于动作 }A\text{)} \\ & = b \cdot \mathbb{E}_{A \sim \pi} \left[ \frac{\partial \log \pi(A|s; \theta)}{\partial \theta} \right] \\ & \text{(假设动作是离散的,展开期望)} \\ & = b \cdot \sum_{a \in A}\pi(a|s; \theta) \frac{\partial \log \pi(a|s; \theta)}{\partial \theta} \\ & \text{(求导的链式法则)} \\ & = b \cdot \sum_{a \in A}\pi(a|s; \theta) \left[ \frac{1}{\pi(a|s; \theta)} \cdot \frac{\partial \pi(a|s; \theta)}{\partial \theta} \right] \\ & = b \cdot \sum_{a \in A} \frac{\partial \pi(a|s; \theta)}{\partial \theta} \\ & \text{(连加与求导的对象不同)} \\ & = b \cdot \frac{\partial \sum_{a \in A} \pi(a|s; \theta)}{\partial \theta} \\ & \text{(所有动作的概率和为 1)} \\ & = b \cdot \frac{\partial 1}{\partial \theta} \\ & \text{(常数的导数为 0)} \\ & = 0 \\ \end{aligned}

1.2 带 baseline 的策略梯度公式

在基于策略的强化学习中推导了策略梯度的公式:

∂V(s;θ)∂θ=EA∼π(⋅∣s;θ)[∂log⁡π(A∣s;θ)∂θ⋅Qπ(s,A)]\frac{\partial V(s; \theta)}{\partial \theta} = \mathbb{E}_{A \sim \pi(\cdot | s; \theta)} \left[ \frac{\partial \log \pi(A | s; \theta)}{\partial \theta} \cdot Q_{\pi}(s, A) \right]

结合上面推导得到公式1和策略梯度公式,可以得到 带 baseline 的策略梯度公式 :

∂Vπ(s)∂θ=EA∼π[∂log⁡π(A∣s;θ)∂θ⋅Qπ(s,A)]=EA∼π[∂log⁡π(A∣s;θ)∂θ⋅Qπ(s,A)]−0=EA∼π[∂log⁡π(A∣s;θ)∂θ⋅Qπ(s,A)]−EA∼π[b⋅∂log⁡π(A∣s;θ)∂θ]=EA∼π[∂log⁡π(A∣s;θ)∂θ⋅(Qπ(s,A)−b)]\begin{aligned} \frac{\partial V_{\pi}(s)}{\partial \theta} & = \mathbb{E}_{A \sim \pi} \left[ \frac{\partial \log \pi(A | s; \theta)}{\partial \theta} \cdot Q_{\pi}(s, A) \right] \\ & = \mathbb{E}_{A \sim \pi} \left[ \frac{\partial \log \pi(A | s; \theta)}{\partial \theta} \cdot Q_{\pi}(s, A) \right] - 0 \\ & = \mathbb{E}_{A \sim \pi} \left[ \frac{\partial \log \pi(A | s; \theta)}{\partial \theta} \cdot Q_{\pi}(s, A) \right] - \mathbb{E}_{A \sim \pi} \left[ b \cdot \frac{\partial \log \pi(A|s; \theta)}{\partial \theta} \right] \\ & = \mathbb{E}_{A \sim \pi} \left[ \frac{\partial \log \pi(A | s; \theta)}{\partial \theta} \cdot \left( Q_{\pi}(s, A) - b \right) \right] \end{aligned}

即,如果 baseline 函数 b 不依赖于动作 AtA_t,下面公式成立:

∂Vπ(st)∂θ=EAt∼π[∂log⁡π(At∣st;θ)∂θ⋅(Qπ(st,At)−b)](1.2)\frac{\partial V_{\pi}(s_t)}{\partial \theta} = \mathbb{E}_{A_t \sim \pi} \left[ \frac{\partial \log \pi(A_t | s_t; \theta)}{\partial \theta} \cdot \left( Q_{\pi}(s_t, A_t) - b \right) \right] \tag{1.2}

从公式中我们可以看出:baseline 不会影响策略梯度的正确性,不管函数 b 是什么,得到的期望都是一样的。

1.3 蒙特卡洛近似

将 带 baseline 的策略梯度公式 中求期望的部分记作 g(At)g(A_t),即:

g(At)=∂log⁡π(At∣st;θ)∂θ⋅(Qπ(st,At)−b)g(A_t) = \frac{\partial \log \pi(A_t | s_t; \theta)}{\partial \theta} \cdot \left( Q_{\pi}(s_t, A_t) - b \right)
  1. 从策略 π(⋅∣s;θ)\pi(\cdot | s; \theta) 中抽样出动作 ata_t,然后计算 g(at)g(a_t) 。计算得到的 g(at)g(a_t) 就是 EAt∼π[g(At)]\mathbb{E}_{A_t \sim \pi} \left[ g(A_t) \right] 的蒙特卡洛近似。
  2. g(at)g(a_t) 是策略梯度的一个无偏估计,这是因为 g(At)g(A_t) 关于 AtA_t 的期望等于策略梯度。g(at)g(a_t) 其实是一个随机梯度,它是对策略梯度的蒙特卡洛近似。实际训练策略网络的时候,用的都是随机梯度 g(at)g(a_t) ,而不是用真正的策略梯度。 EAt∼π[g(At)]=∂Vπ(st)∂θ\mathbb{E}_{A_t \sim \pi} \left[ g(A_t) \right] = \frac{\partial V_{\pi}(s_t)}{\partial \theta}
  3. 使用随机梯度上升更新策略网络的参数 θ\theta θ←θ+β⋅g(at)\theta \leftarrow \theta + \beta \cdot g(a_t)

从 带 baseline 的策略梯度公式 看到,虽然使用不同的 baseline 函数 b 不会改变期望 EAt∼π[g(At)]\mathbb{E}_{A_t \sim \pi} \left[ g(A_t) \right] 的值,但是会影响 g(at)g(a_t) 的值。如果选择的baseline 函数 b 很好,接近 Qπ(st,At)Q_{\pi}(s_t, A_t),随机策略梯度 g(at)g(a_t) 的方差就会变小,就能让算法收敛更快。这也是为什么要使用 baseline 函数 b 的原因。

1.4 baseline 的选择

  1. b=0

    相当于不适用 baseline,得到的是标准的策略梯度。

    ∂Vπ(st)∂θ=EAt∼π[∂log⁡π(At∣st;θ)∂θ⋅Qπ(st,At)]\frac{\partial V_{\pi}(s_t)}{\partial \theta} = \mathbb{E}_{A_t \sim \pi} \left[ \frac{\partial \log \pi(A_t | s_t; \theta)}{\partial \theta} \cdot Q_{\pi}(s_t, A_t) \right]
  2. b=Vπ(st)b=V_{\pi}(s_t) 因为 Vπ(st)V_{\pi}(s_t) 只依赖于当前状态的 sts_t,状态 sts_t 是先于 AtA_t 被观测到的,所以 sts_t 不依赖于 AtA_t,可以作为 baseline 。

    而选择使用 Vπ(st)V_{\pi}(s_t) 作为 baseline 的原因在于,Vπ(st)V_{\pi}(s_t) 的值接近 Qπ(st,At)Q_{\pi}(s_t, A_t),能够有效的降低方差。

    Vπ(st)=EAt[Qπ(st,At)]V_{\pi}(s_t) = \mathbb{E}_{A_t}[Q_{\pi}(s_t, A_t)]

二、REINFORCE with Baseline

2.1 近似带 baseline 的策略梯度

在1.4 baseline 的选择中,证明了可以使用 Vπ(st)V_{\pi}(s_t) 来作为 Baseline:

∂Vπ(st)∂θ=EAt∼π[∂log⁡π(At∣st;θ)∂θ⋅(Qπ(st,At)−Vπ(st))]\frac{\partial V_{\pi}(s_t)}{\partial \theta} = \mathbb{E}_{A_t \sim \pi} \left[ \frac{\partial \log \pi(A_t | s_t; \theta)}{\partial \theta} \cdot \left( Q_{\pi}(s_t, A_t) - V_{\pi}(s_t) \right) \right]

在使用这个公式训练时,需要做总共3步近似:

  1. 使用随机策略梯度来近似真正的策略梯度的期望(蒙特卡洛近似) 记 g(At)g(A_t) 为:

    g(At)=∂log⁡π(At∣st;θ)∂θ⋅(Qπ(st,At)−Vπ(st))g(A_t) = \frac{\partial \log \pi(A_t | s_t; \theta)}{\partial \theta} \cdot \left( Q_{\pi}(s_t, A_t) - V_{\pi}(s_t) \right)

    从策略 π(⋅∣s;θ)\pi(\cdot | s; \theta) 中抽样出动作 ata_t,然后使用随机策略梯度 g(at)g(a_t) 的值来代替真正的策略梯度的期望 EAt∼π[g(At)]\mathbb{E}_{A_t \sim \pi} \left[ g(A_t) \right] 的值。

  2. 使用折扣回报来近似 Qπ(st,at)Q_{\pi}(s_t, a_t) 的值(再一次蒙特卡洛近似) 经过了上一步的近似后,我们得到:

    g(at)=∂log⁡π(at∣st;θ)∂θ⋅(Qπ(st,at)−Vπ(st))g(a_t) = \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta} \cdot \left( Q_{\pi}(s_t, a_t) - V_{\pi}(s_t) \right)

    得到的等式中,Qπ(st,at)Q_{\pi}(s_t, a_t) 和 Vπ(st)V_{\pi}(s_t) 依然是未知的。

    使用策略 π(⋅∣s;θ)\pi(\cdot | s; \theta) 控制智能体玩一局游戏到结束,得到轨迹:

    st,at,rt,st+1,at+1,rt+1,⋯ ,sn,an,rns_t, a_t, r_t, s_{t+1}, a_{t+1}, r_{t+1}, \cdots, s_n, a_n, r_n

    计算折扣回报:

    ut=∑i=tnγi−triu_t = \sum_{i=t}^n \gamma^{i-t} r_i

    折扣回报 utu_t 就是 Qπ(st,at)Q_{\pi}(s_t, a_t) 的无偏估计。REINFORCE 算法就是使用折扣回报 utu_t 来近似 Qπ(st,at)Q_{\pi}(s_t, a_t) 的值。

  3. 使用神经网络来近似 Vπ(st)V_{\pi}(s_t)(函数近似)

    使用神经网络 v(s;w)v(s; \mathbf{w}) 来近似 Vπ(st)V_{\pi}(s_t) 的值。

经过3步近似后,可以得到 近似后的带 baseline 的策略梯度 :

∂Vπ(st)∂θ≈g(at)≈∂log⁡π(at∣st;θ)∂θ⋅(ut−v(st;w))\frac{\partial V_{\pi}(s_t)}{\partial \theta} \approx g(a_t) \approx \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta} \cdot \left( u_t - v(s_t; \mathbf{w}) \right)

2.2 算法训练流程

  1. 使用策略 π(⋅∣s;θ)\pi(\cdot | s; \theta) 控制智能体玩一局游戏到结束,得到轨迹:

    st,at,rt,st+1,at+1,rt+1,⋯ ,sn,an,rns_t, a_t, r_t, s_{t+1}, a_{t+1}, r_{t+1}, \cdots, s_n, a_n, r_n
  2. 计算折扣回报 utu_t 和误差 δt\delta_t

    ut=∑i=tnγi−triu_t = \sum_{i=t}^n \gamma^{i-t} r_i δt=v(st;w)−ut\delta_t = v(s_t; \mathbf{w}) - u_t

    (注意这里是 v-q 而不是 q-v)

  3. 更新策略网络的参数 θ\theta

    θ←θ−β⋅δt⋅∂log⁡π(at∣st;θ)∂θ\theta \leftarrow \theta - \beta \cdot \delta_t \cdot \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta}
  4. 更新价值网络的参数 w\mathbf{w}

    w←w−α⋅δt⋅∂v(st;w)∂w\mathbf{w} \leftarrow \mathbf{w} - \alpha \cdot \delta_t \cdot \frac{\partial v(s_t; \mathbf{w})}{\partial \mathbf{w}}

    其中 δt⋅∂v(st;w)∂w\delta_t \cdot \frac{\partial v(s_t; \mathbf{w})}{\partial \mathbf{w}} 是误差 δt\delta_t 的均方差关于参数 w\mathbf{w} 的导数

    ∂δt2/2∂w=δt⋅∂v(st;w)∂w\frac{\partial \delta_t ^2 / 2}{\partial \mathbf{w}} = \delta_t \cdot \frac{\partial v(s_t; \mathbf{w})}{\partial \mathbf{w}}
  5. 对于第1步中的每个时刻,重复第2-4步。

三、Advantage Actor-Critic(A2C)算法

把 baseline 用到 Actor-Critic Method 上得到的算法就是A2C算法。

3.1 神经网络

  1. 策略网络(Actor) 与原始的 Actor-Critic Method 中的策略网络(Actor)相同,依然是使用神经网络 π(a∣s;θ)\pi(a|s; \theta) 来近似策略函数 π(a∣s)\pi({a|s}),其中 θ\theta 是神经网络的参数。

  2. 价值网络(Critic) 价值网络使用的是状态价值网络 Vπ(s)V_{\pi}(s) 而不是动作价值网络 Qπ(s,a)Q_{\pi}(s, a)。使用神经网络 v(s;w)v(s; \mathbf{w}) 来近似策略函数 Vπ(s)V_{\pi}(s),其中 w\mathbf{w} 是神经网络的参数。

    动作价值网络 Qπ(s,a)Q_{\pi}(s, a) 依赖于状态 ss 和 动作 aa ,而状态价值网络 Vπ(s)V_{\pi}(s) 仅依赖于状态 ss,不依赖于动作 aa,所以状态价值网络 Vπ(s)V_{\pi}(s) 比动作价值网络 Qπ(s,a)Q_{\pi}(s, a) 更好训练。

3.2 训练过程

  1. 获取到一组 transition (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1})
  2. 计算 TD target yt=rt+γ⋅v(st+1;w)y_t = r_t + \gamma \cdot v(s_{t+1}; \mathbf{w})
  3. 计算 TD error δt=v(st;w)−yt\delta_t = v(s_t; \mathbf{w}) - y_t
  4. 更新策略网络的参数 θ\theta θ←θ−β⋅δt⋅∂log⁡π(at∣st;θ)∂θ\theta \leftarrow \theta - \beta \cdot \delta_t \cdot \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta}
  5. 更新价值网络的参数 w\mathbf{w} w←w−α⋅δt⋅∂v(st;w)∂w\mathbf{w} \leftarrow \mathbf{w} - \alpha \cdot \delta_t \cdot \frac{\partial v(s_t; \mathbf{w})}{\partial \mathbf{w}}

3.3 算法推导

3.3.1 价值函数性质的推导

在强化学习中时序差分学习推导出了公式:

Qπ(st,at)=E[Rt+γ⋅Qπ(St+1,At+1)], for all πQ_{\pi}(s_t, a_t) = \mathbb{E}[R_t + \gamma \cdot Q_{\pi}(S_{t+1}, A_{t+1})], \text{ for all }\pi

所以:

Qπ(st,at)=E[Rt+γ⋅Qπ(St+1,At+1)]=ESt+1,At+1[Rt+γ⋅Qπ(St+1,At+1)](Rt 与 At+1 无关)=ESt+1[Rt+γ⋅EAt+1[Qπ(St+1,At+1)]](状态价值函数的定义)=ESt+1[Rt+γ⋅Vπ(St+1)]\begin{aligned} Q_{\pi}(s_t, a_t) & = \mathbb{E}[R_t + \gamma \cdot Q_{\pi}(S_{t+1}, A_{t+1})] \\ & = \mathbb{E}_{S_{t+1}, A_{t+1}}[R_t + \gamma \cdot Q_{\pi}(S_{t+1}, A_{t+1})] \\ & \text{(}R_t\text{ 与 }A_{t+1}\text{ 无关)} \\ & = \mathbb{E}_{S_{t+1}} \left[ R_t + \gamma \cdot \mathbb{E}_{A_{t+1}}[Q_{\pi}(S_{t+1}, A_{t+1})] \right] \\ & \text{(状态价值函数的定义)} \\ & = \mathbb{E}_{S_{t+1}}[R_t + \gamma \cdot V_{\pi}(S_{t+1})] \\ \end{aligned}

即:

Qπ(st,at)=ESt+1[Rt+γ⋅Vπ(St+1)](3.3.1a)Q_{\pi}(s_t, a_t) = \mathbb{E}_{S_{t+1}}[R_t + \gamma \cdot V_{\pi}(S_{t+1})] \tag{3.3.1a}

另,根据状态价值函数的定义:

Vπ(st)=EAt[Qπ(st,At)](使用公式 3.3.1a)=EAt[ESt+1[Rt+γ⋅Vπ(St+1)]]=EAt,St+1[Rt+γ⋅Vπ(St+1)]\begin{aligned} V_{\pi}(s_t) & = \mathbb{E}_{A_t}[Q_{\pi}(s_t, A_t)] \\ & \text{(使用公式 3.3.1a)} \\ & = \mathbb{E}_{A_t} \left[ \mathbb{E}_{S_{t+1}}[R_t + \gamma \cdot V_{\pi}(S_{t+1})] \right] \\ & = \mathbb{E}_{A_t,S_{t+1}}[R_t + \gamma \cdot V_{\pi}(S_{t+1})] \\ \end{aligned}

即:

Vπ(st)=EAt,St+1[Rt+γ⋅Vπ(St+1)](3.3.1b)V_{\pi}(s_t) = \mathbb{E}_{A_t,S_{t+1}}[R_t + \gamma \cdot V_{\pi}(S_{t+1})] \tag{3.3.1b}

3.3.2 价值函数性质的蒙特卡洛近似

假设我们获取到一组 transition (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1})

  1. 公式3.3.1a 可以近似为

    Qπ(st,at)≈rt+γ⋅Vπ(st+1)(3.3.2a)Q_{\pi}(s_t, a_t) \approx r_t + \gamma \cdot V_{\pi}(s_{t+1}) \tag{3.3.2a}

    后面会使用这个公式来近似策略梯度,A2C算法的关键也在于这个公式。

  2. 公式3.3.1b 可以近似为

    Vπ(st)≈rt+γ⋅Vπ(st+1)(3.3.2b)V_{\pi}(s_t) \approx r_t + \gamma \cdot V_{\pi}(s_{t+1}) \tag{3.3.2b}

    使用TD算法训练价值网络 Vπ(st)V_{\pi}(s_t) 时,TD target 就是由这个公式来的。

3.3.3 训练策略网络

本文前面定义了随机梯度 g(at)g(a_t)

g(at)=∂log⁡π(at∣st;θ)∂θ⋅(Qπ(st,at)−Vπ(st))g(a_t) = \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta} \cdot \left( Q_{\pi}(s_t, a_t) - V_{\pi}(s_t) \right)

g(at)g(a_t) 中包含了 Qπ(st,at)−Vπ(st)Q_{\pi}(s_t, a_t) - V_{\pi}(s_t),而 Qπ(st,at)−Vπ(st)Q_{\pi}(s_t, a_t) - V_{\pi}(s_t) 正好是优势函数(Advantage function)的定义,所以算法名中包含了 Advantage 。

结合 g(at)g(a_t) 的定义和 公式3.3.2a,有:

g(at)≈∂log⁡π(at∣st;θ)∂θ⋅(rt+γ⋅Vπ(st+1)−Vπ(st))g(a_t) \approx \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta} \cdot \left( r_t + \gamma \cdot V_{\pi}(s_{t+1}) - V_{\pi}(s_t) \right)

使用神经网络 v(s;w)v(s;\mathbf{w}) 近似状态价值函数 Vπ(s)V_{\pi}(s),得到:

g(at)≈∂log⁡π(at∣st;θ)∂θ⋅(rt+γ⋅v(st+1;w)−v(st;w))g(a_t) \approx \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta} \cdot \left( r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) - v(s_t;\mathbf{w}) \right)

将公式中的 rt+γ⋅v(st+1;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) 记作 yty_t。

yty_t 其实就是 TD target,后面更新价值网络时也会用到。

既然计算出了近似的策略梯度,就可以使用梯度上升来训练策略网络了:

θ←θ+β⋅∂log⁡π(at∣st;θ)∂θ⋅(yt−v(st;w))\theta \leftarrow \theta + \beta \cdot \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta} \cdot (y_t - v(s_t; \mathbf{w}))

3.3.4 训练价值网络

将 公式3.3.2b 中的 Vπ(S)V_{\pi}(S) 使用神经网络 v(S;w)v(S; \mathbf{w}) 近似,得到:

v(st;w)≈rt+γ⋅v(st+1;w)v(s_t; \mathbf{w}) \approx r_t + \gamma \cdot v(s_{t+1}; \mathbf{w})

将 rt+γ⋅v(st+1;w)r_t + \gamma \cdot v(s_{t+1}; \mathbf{w}) 记作 yty_t。使用TD算法训练时, yty_t 其实就是 TD target 。

所以 TD error 就是:

δt=v(st;w)−yt\delta_t = v(s_t; \mathbf{w}) - y_t

梯度:

∂δt2/2∂w=δt⋅∂v(st;w)∂w\frac{\partial \delta_t ^2 / 2}{\partial \mathbf{w}} = \delta_t \cdot \frac{\partial v(s_t; \mathbf{w})}{\partial \mathbf{w}}

最后使用梯度下降方法来更新网络参数 w\mathbf{w}:

w←w−α⋅δt⋅∂v(st;w)∂w\mathbf{w} \leftarrow \mathbf{w} - \alpha \cdot \delta_t \cdot \frac{\partial v(s_t; \mathbf{w})}{\partial \mathbf{w}}

3.3.5 对算法的直观理解

回顾对策略梯度的近似:

g(at)≈∂log⁡π(at∣st;θ)∂θ⋅(rt+γ⋅v(st+1;w)−v(st;w))g(a_t) \approx \frac{\partial \log \pi(a_t | s_t; \theta)}{\partial \theta} \cdot \left( r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) - v(s_t;\mathbf{w}) \right)

这个公式用来更新策略网络 π(a∣s;θ)\pi(a|s; \theta)。

公式中的 rt+γ⋅v(st+1;w)−v(st;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) - v(s_t;\mathbf{w}) 是状态价值网络 v(s;w)v(s;\mathbf{w}) 做出的评价。它评价了动作 ata_t 的好坏,可以指导策略网络 π(a∣s;θ)\pi(a|s; \theta) 做改进,所以状态价值网络 v(s;w)v(s;\mathbf{w}) 被称为 Critic 。

但是 rt+γ⋅v(st+1;w)−v(st;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) - v(s_t;\mathbf{w}) 中并未包含动作 ata_t,又是如何评价动作 ata_t 的好坏呢?

  1. v(st;w)v(s_t;\mathbf{w}) 是状态价值网络在 tt 时刻基于状态 sts_t 对状态 sts_t 的折扣回报 E[Ut∣st]\mathbb{E}[U_t | s_t] 的 预测值。预测值可以评价状态 sts_t 的好坏,状态 sts_t 越好,这个值就越大。

  2. rt+γ⋅v(st+1;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) 是状态价值网络在 t+1t+1 时刻基于状态 sts_t 和状态 st+1s_{t+1} 对状态 sts_t 的折扣回报 E[Ut∣st,st+1]\mathbb{E}[U_t | s_t, s_{t+1}] 的 预测值。

  3. v(st;w)v(s_t;\mathbf{w}) 和 rt+γ⋅v(st+1;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) 的 相同点:

    • 都是状态价值网络对状态 sts_t 的折扣回报的预估值。
    • 都能够评价状态 sts_t 的好坏。
  4. v(st;w)v(s_t;\mathbf{w}) 和 rt+γ⋅v(st+1;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) 的 区别:

    • v(st;w)v(s_t;\mathbf{w}) 是在 tt 时刻做出的预测,这个预测是在执行动作 ata_t 之前做出的,所以这个预测与动作 ata_t 无关。
    • rt+γ⋅v(st+1;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) 是在 t+1t+1 时刻做出的预测,这个预测受动作 ata_t 的影响,动作 ata_t 越好,新的状态 st+1s_{t+1} 就越好,rt+γ⋅v(st+1;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) 的值也就越大。
    • 如果动作 ata_t 越好,rt+γ⋅v(st+1;w)r_t + \gamma \cdot v(s_{t+1};\mathbf{w}) 的值就比 v(st;w)v(s_t;\mathbf{w}) 更大,它们的差值就是正数,反之亦然。所以两者的差可以反映动作 ata_t 带来的优势,两者的差就叫做 Advantage 。

参考:策略梯度与baseline