蒙特卡洛方法、TD 方法、TD Error、GAE 与 Advantage 的关系
蒙特卡洛方法、TD 方法、TD Error、GAE 与 Advantage 的关系在 PPO、A2C、Actor-Critic 这类算法中,核心问题之一是:如何判断当前动作ata_tat在当前状态sts_tst下到底是好还是坏?这个判断通常依赖Advantage,也就是优势函数。优势函数定义为:A(st,at)=Q(st,at)−V(st) A(s_t,a_t)=Q(s_t,a_t)-V(s_t)A(st,at)=Q(st,at)−V(st)其中:V(st)V(s_t)V(st):状态价值,表示从状态sts_tst出发,未来预计能获得多少累计奖励;Q(st,at)Q(s_t,a_t)Q(st,at):动作价值,表示在状态sts_tst下先执行动作ata_tat,之后继续按照当前策略行动,未来预计能获得多少累计奖励;A(st,at)A(s_t,a_t)A(st,at):动作ata_tat相对于当前状态平均水平的优势。如果:A(st,at)0 A(s_t,a_t)0A(st,at)0说明当前动作比平均水平好,策略应该提高该动作概率。如果:A(st,at)0 A(s_t,a_t)0A(st,at)0说明当前动作比平均水平差,策略应该降低该动作概率。一、先明确:这里的“价值”是什么?在前面讨论的蒙特卡洛方法、TD 方法、GAE 中,“价值”主要指:状态价值函数V(s)V(s)V(s),也就是从某个状态出发,未来累计折扣奖励的期望。其定义为:Vπ(st)=Eπ[Gt∣st] V^\pi(s_t)=\mathbb{E}_\pi[G_t|s_t]Vπ(st)=Eπ[Gt∣st]其中GtG_tGt是从时刻ttt开始的累计折扣回报:Gt=rt+γrt+1+γ2rt+2+⋯ G_t=r_t+\gamma r_{t+1}+\gamma^2 r_{t+2}+\cdotsGt=rt+γrt+1+γ2rt+2+⋯也可以写成:Gt=∑l=0∞γlrt+l G_t=\sum_{l=0}^{\infty}\gamma^l r_{t+l}Gt=l=0∑∞γlrt+l所以,状态价值Vπ(st)V^\pi(s_t)Vπ(st)的含义是:在当前策略π\piπ下,从状态sts_tst出发,未来平均能拿到多少累计奖励。在 Actor-Critic、A2C、PPO 中,Critic 通常就是用来估计这个V(s)V(s)V(s)的。二、蒙特卡洛方法是什么?1. 蒙特卡洛方法的定义蒙特卡洛方法,Monte Carlo Method,指的是:等一条轨迹真实采样完成后,用真实发生的累计回报GtG_tGt来估计价值。也就是说,蒙特卡洛方法不提前预测未来,而是等未来真的发生之后,把真实奖励加起来。从时刻ttt开始,蒙特卡洛回报为:Gt=rt+γrt+1+γ2rt+2+⋯ G_t=r_t+\gamma r_{t+1}+\gamma^2 r_{t+2}+\cdotsGt=rt+γrt+1+γ2rt+2+⋯然后用GtG_tGt来估计状态价值:Vπ(st)≈Gt V^\pi(s_t)\approx G_tVπ(st)≈Gt如果多次从同一个状态sts_tst出发采样,得到多个回报:Gt(1),Gt(2),Gt(3),⋯ G_t^{(1)},G_t^{(2)},G_t^{(3)},\cdotsGt(1),Gt(2),Gt(3),⋯那么可以用平均值估计真实状态价值:Vπ(st)≈1N∑i=1NGt(i) V^\pi(s_t)\approx \frac{1}{N}\sum_{i=1}^{N}G_t^{(i)}Vπ(st)≈N1i=1∑NGt(i)2. 蒙特卡洛方法如何估计 Advantage?Advantage 的定义是:A(st,at)=Q(st,at)−V(st) A(s_t,a_t)=Q(s_t,a_t)-V(s_t)A(st,at)=Q(st,at)−V(st)如果我们用蒙特卡洛回报GtG_tGt来近似当前动作之后的动作价值Q(st,at)Q(s_t,a_t)Q(st,at),那么可以得到:A^tMC=Gt−V(st) \hat A_t^{MC}=G_t-V(s_t)A^tMC=Gt−V(st)含义是:当前动作之后真实拿到的累计回报,比 Critic 认为当前状态平均能拿到的回报高多少。如果:GtV(st) G_tV(s_t)GtV(st)则:A^tMC0 \hat A_t^{MC}0A^tMC0说明当前动作比平均水平好。如果:GtV(st) G_tV(s_t)GtV(st)则:A^tMC0 \hat A_t^{MC}0