PPO算法原理
PPO算法原理
一、强化学习基础概念
-
核心要素(以超级玛丽游戏为例)
- Environment(环境):游戏本身(画面、后台程序),负责状态转换、奖励生成等
- Agent(智能体):根据策略决策动作,目标是最大化累积奖励
- State(状态):游戏当前状况,是Agent决策的依据(视频中假设State=Observation)
- Action(动作):Agent的行为(如左移、右移、跳跃)
- Reward(奖励):环境对动作的反馈(如吃金币+10分,死亡-100分)
- Action Space(动作空间):所有可能动作的集合(如超级玛丽的left/up/right)
- Trajectory(轨迹):状态与动作的序列(S₀→A₀→S₁→A₁→…→Sₜ),也称episode
- Return(回报):从当前时刻到结束的累积奖励(需考虑长远收益)
-
策略函数(π)
- 输入:State(状态)
- 输出:Action的概率分布(如向左0.1、向上0.2、向右0.7)
- 动作选择:根据概率采样(而非取最大值),目的是探索更多可能性
二、强化学习核心目标与数学表达
-
目标:训练策略网络参数θ,使Return的期望最大化
- 数学表达:
- 其中为轨迹,为轨迹的概率分布,为轨迹的回报
- 数学表达:
-
策略梯度(Policy Gradient)
- 采用梯度上升法优化目标函数,梯度公式:
- 直观意义:若轨迹回报为正,增大该轨迹中所有动作的概率;若为负,减小概率
三、算法优化与改进
-
回报修正
- 引入衰减因子γ(γ<1),使远期奖励影响衰减:
- 仅累积当前动作后的奖励(动作无法影响历史奖励)
-
优势函数(Advantage Function)
- 定义:
- (动作价值函数):状态s下执行动作a的期望回报
- (状态价值函数):状态s的期望回报
- 作用:去除基线影响,仅反映动作相对优势(好的动作A>0,差的动作A<0)
- 定义:
-
GAE(Generalized Advantage Estimation)
- 平衡采样偏差与方差,结合多步采样的优势:
- 其中为时序差分误差
- λ控制权重分配(如λ=0.9时,一步采样权重0.1,两步0.09,逐步衰减)
- 平衡采样偏差与方差,结合多步采样的优势:
-
Actor-Critic架构
- Actor:策略网络,负责输出动作概率
- Critic:价值网络,估算状态价值V(s),辅助计算优势函数
- 价值网络训练:拟合回报的衰减累积和(作为标签)
四、PPO算法核心
-
核心改进:解决On-Policy效率低的问题,采用Off-Policy训练
- 重要性采样:用参考策略采样数据,训练目标策略,引入修正系数:
- 截断机制:限制策略更新幅度(如ε=0.2时,概率比控制在0.8~1.2之间),替代KL散度约束
-
训练流程
- 用参考策略采样轨迹数据
- 计算优势函数
- 最小化PPO损失函数更新目标策略θ
- 重复采样与训练(数据可多次使用)
五、训练代码与实现要点
-
网络结构
- 策略网络:输入为游戏画面(状态),输出动作概率分布(如3个神经元+Softmax)
- 价值网络:可与策略网络共享特征提取层,输出单个值(状态价值)
-
训练步骤
- 采集数据:让Agent玩N场游戏,获取轨迹与回报
- 计算目标:用GAE计算优势函数
- 更新网络:通过PPO损失函数优化策略网络和价值网络
- 迭代:更新参考策略,重复训练
六、注意事项
- 奖励设计:Reward定义直接影响训练效果,需合理设置(如通关正奖励、死亡负奖励)
- 探索与利用:训练时需根据概率采样动作,避免陷入局部最优
- 策略约束:确保目标策略与参考策略差异不大(通过截断机制),否则采样数据失效
- 价值网络拟合:需用衰减累积回报作为标签,平衡偏差与方差
- 效率问题:PPO通过Off-Policy机制复用数据,显著提升训练速度
七、总结
PPO算法通过重要性采样和截断机制,在保证稳定性的前提下实现了高效的Off-Policy训练,核心是平衡策略更新幅度与数据利用率,是强化学习中应用广泛的算法(尤其在大语言模型RLHF中)。