一、Advantage Function 优势函数

策略梯度定理常写成:

                ​​​​​​​        ​​​​​​​        ​​​​​​​       

这里的核心是:Qπ(s,a) 在状态 s 下执行动作 a,然后继续按策略 π 行动,未来总回报是多少。

但是只看 Q(s,a) 有一个问题:它不知道这个动作相对于当前状态的平均水平到底好不好。

例如:

        状态 s 本身就很好,随便选动作都能拿高分,那么某个动作的 Q(s,a) 高,不一定说明这个动作真的优秀。所以我们引入优势函数。


优势函数定义为:

         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

其中:Qπ(s,a) 表示在状态 s 下做动作 a 的价值。Vπ(s) 表示在状态 s 下,按照当前策略平均行动的价值。

所以:Aπ(s,a) 表示这个动作比当前状态下的平均水平好多少。


Q(s,a) 只告诉你“这个动作值多少钱”,而 A(s,a) 告诉你“这个动作比平均水平强多少”。

PPO 里面真正重要的不是 Q,而是 advantage。


二、TD Error 和 Advantage 的关系

优势函数理论上是:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

但是实际训练时,我们通常不知道真实的 Qπ(s,a),所以要估计它。

最简单的估计方式是 TD error:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​     ​​​​​  ​​

这里:rt​+γV(st+1​) 可以看成一步估计出来的目标价值。 所以:δt​ 可以理解为“一步优势估计”。

        如果:δt​>0 说明实际结果比 Critic 预期更好。

        如果:δt​<0 说明实际结果比 Critic 预期更差。


三、GAE:广义优势估计

如果只用一步 TD error:

优点是方差低,训练稳定。缺点是偏差可能比较大,因为它只看了一步。

如果用完整回报: 再计算:At​=Gt​−V(st​)

优点是偏差小。缺点是方差大,训练不稳定。

所以 GAE 的目的就是:

        在“低偏差”和“低方差”之间做折中。


GAE 的核心公式是:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

其中:

参数含义:γ 是折扣因子,控制未来奖励的重要性。λ 是 GAE 的平衡参数,控制用多少未来 TD error。


把 GAE 展开就是:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​

当前动作的优势,不仅看当前这一步的 TD error,还看后面若干步的 TD error。

        如果:A^t​>0 说明这个动作比平均水平好,PPO 应该增加它的概率。

        如果:A^t​<0 说明这个动作比平均水平差,PPO 应该降低它的概率。


当:λ=0 GAE 退化成一步 TD:A^t​=δt​ 特点:方差低,偏差高。

当:λ=1 GAE 接近 Monte Carlo 回报估计:A^t​=Gt​−V(st​) 特点:偏差低,方差高。

实际 PPO 中常用:λ=0.95 这表示:既考虑较长未来,又不过度依赖完整轨迹。


四、GAE 在 PPO 中的作用

PPO 的核心目标函数是:

        ​​​​​​​        ​​​​​​​        

其中:​ 表示新策略和旧策略对同一个动作的概率比值。

这里的:A^t​ 通常就是用 GAE 估计出来的 advantage。

所以 PPO 更新时真正判断一个动作该增强还是削弱,靠的是:A^t​

        如果:A^t​>0 PPO 会倾向于提高这个动作的概率。

        如果:A^t​<0 PPO 会倾向于降低这个动作的概率。

        但是 PPO 不允许策略变化太大,所以加入了 clip。


六、On-policy

On-policy 的意思是:

                                用当前策略采样数据,也用当前策略更新自己。

也就是:采样策略=学习策略

代表算法:SARSA, REINFORCE, A2C, PPO

例如 PPO:

        当前策略 πθold​​ 先去环境中采样一批数据,然后用这批数据更新策略。

        但是这批数据不能反复用太久,因为策略更新后,数据就变“旧”了。


优点:训练更稳定,理论上更直接。

缺点:样本效率低,因为数据通常不能长期重复利用。

适合:PPO 这类稳定优先的算法。


七、Off-policy

Off-policy 的意思是:

                                采样数据的策略和真正要学习的策略可以不同。

也就是:采样策略不等于学习策略

代表算法:Q-learning, DQN, DDPG, TD3, SAC

例如 DQN:

        智能体用 ϵ-greedy 策略和环境交互,把数据存进 replay buffer。

        训练时从 replay buffer 里面随机抽旧数据来更新 Q 网络。

        这些数据可能是很久之前的策略产生的,但仍然可以用。


优点:样本效率高,可以反复利用历史经验。

缺点:训练更复杂,容易不稳定,需要 replay buffer、target network 等机制。

适合:DQN、SAC 这类需要大量重复利用经验的算法。


八、DQN、PPO、SAC 的位置

算法

类型

动作空间

是否用 replay buffer

核心特点

DQN

Off-policy

离散动作

学习 Q(s,a)

PPO

On-policy

离散/连续都可

通常不用

学习策略,clip 限制更新

SAC

Off-policy

连续动作常用

Actor-Critic + 最大熵

九、三者之间的关系

Advantage Function 解决的是:这个动作比当前状态的平均水平好多少。

                                

GAE 解决的是:如何更稳定地估计 advantage。

                                

On-policy / Off-policy 解决的是:训练数据来自当前策略,还是可以来自旧策略。

PPO 是:On-policy + Advantage + GAE + Clip。

SAC 是:Off-policy + Actor-Critic + Replay Buffer + Entropy。

DQN 是:Off-policy + Q-learning + Replay Buffer + Target Network。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐