PPO(近端策略优化) 绝对是目前工业界和学术界最受欢迎的算法,经常用来当baseline
概念:
1.优势函数
2.优化目标
影响策略该更新多少步长

主要部分


结论:
策略函数在比值超过设定的范围的时候,就会触发截止,然后直接把梯度设置为0,不再进行状态动作对的概率的更新了,因为动作更新幅度已经超过一定阈值了,不再进行梯度上面对参数的优化。
价值损失在工程上一般不做截断,因为被证明了,有时候正确的识别价值比稳健的识别价值好。价值损失用的是MSE。
3.价值估计
蒙特卡洛方法(MC)model free online
蒙特卡洛方法是从一个状态出发,完成了一整个回合后,获取到了一条轨迹。然后通过对多条轨迹获取的累计奖励求平均来得到这个状态的价值。本质是大数定律。
优点:直观,正确
致命的缺点:方差极大
MC是一种基于完整轨迹求均值的无偏估计,本质是大数定律;它是回合制(Episodic)的无模型方法。
时序差分误差(TD)model free online
时序差分误差是自举法,采用的是真实获取的奖励 𝑅 + 对未来的价值估计 𝛾𝑉(𝑠′)作为目前价值的估计。本质是不动点定理,初始值不管设为什么,最终都会收敛到一个确定的值。
TD 是一种基于 自举法的方法,它用单步真实奖励加上对未来的估值作为目标,产生 TD 误差来更新当前状态。它不依赖大数定律,而是利用贝尔曼算子的压缩映射/不动点原理,保证了无论初始值是什么都会收敛。它是一种单步的在线、无模型算法。
广义优势估计(GAE)
GAE是MC和TD的中和
TD和MC的优缺点

公式

GAE是MC和TD的中和(更加趋近于MC,TD增加了一些平滑效果)

4.主体网络
Actor(策略网络):输出动作的概率分布(连续空间下为均值 + 标准差),负责生成策略;
Critic(价值网络):输出状态的价值V(s),负责估计优势函数。
两者可共享骨干网络(降低参数规模),也可分离;连续动作空间中,Actor 通常输出动作分布的均值(μ)和标准差(σ),通过高斯分布采样动作。
5.KL散度
KL散度用来衡量两个概率分布之间的差异。是在算智能体更新策略后,新策略的行为模式和老策略相比,偏离了多少
最终理解:
既然贝尔曼方程是真理,为什么还要搞出 MC、TD、GAE 这么多花样?
因为动态规划 (DP) 有一个致命弱点:它必须知道"转移概率 P"(也就是说,你必须有这个宇宙的上帝视角的源码,这叫 Model-based)。
但在现实中,机器人不知道风刮多大它会摔倒,它没有 P。面对未知的 MDP,机器人不能"算",只能去"试错(采样)"。
MC,TD,GAE这种估计价值的函数,本质上是在估计底层的贝尔曼公式中的价值,因为转移概率P是没有办法知道的(model-free)。
策略迭代和值迭代都是贝尔曼公式的变体。贝尔曼公式又是可以由马尔可夫过程推出来的,所以说,这两者是等价的。
贝尔曼期望方程 (Bellman Expectation Equation): 描述的是在特定策略下,当前状态价值等于"当前奖励 + 下一个状态价值的期望"。(策略迭代里的策略评估,用的就是这个)。
贝尔曼最优方程 (Bellman Optimality Equation): 描述的是在最优策略下,当前状态价值等于"所有可能动作中,收益最大的那个动作的价值"。(值迭代,用的就是这个)。
它们在学术上统称为 动态规划(Dynamic Programming, DP),本质上就是用全微分的思想,暴力求解贝尔曼方程。
一个完整的现代 RL 算法 = 如何评估价值 + 如何更新策略
我对PPO的理解:
GAE是负责估计价值的,也就是用来算价值头的损失MSE的,更新价值头的参数。
同时GAE也可以算优势函数A,从而得到优化目标最重要的一项,动作策略截断项,如果发现策略更新过多,就进行梯度截断,停止更新策略头的参数。