Proximal Policy Optimazation 近端策略优化
针对于RL中的奖励函数,采用一定的算法对其做动态调整和限制。以达到更好的学习效果。
存在的问题
单纯的奖励函数:
- q 来自用户提问的数据分布,o 表示在 时模型的输出、回答
- r(o) 表示模型在 o 的输出时,获得的奖励函数
- E 表示总体数据的期望
该奖励函数存在以下问题:
- 高方差:获得的奖励不稳定
- 激励不充分:对于不同的 Actor,应该根据 Actor 的实际情况来做针对性的激励,而不应该用统一的指标对所有的 Actor 做一个的评价
思考
PPO 的核心在于“近端”,即为加入了 clip 机制,核心考虑是:更新参数获得更好的回报,但是新策略不能离旧策略太远。
总结为以下三个部分
- critic:设定一个预期分数线的价值函数
- clip 利用 min 函数防止更新过度
- Reference Model 防止作弊
对当前动作收益的评估
critic 设定一个“分数线”:价值函数,作为参考线 baseline。将训练目标改为用 Reward 训练,进化为用 Advantage 来衡量进步。
思考
优势函数在回答一个问题:在状态 的情况下,选择动作 ,比策略平均得到的价值要好多少?
- A 是 Advantage,表示了奖励比预期好了多少的程度。
由以下两个参数考量:
- 动作价值函数:代表当前获得的奖励,在传统 RL 中,这个值直接用来优化强化学习模型
- 状态价值函数:表示了在当前状态 (当前 query 的情况下)下,对预期平均奖励的估计
TD Error 时序差分误差
思考
现实是什么?预期是什么?然后用现实减去预期。
- 现实(更准确的估计):计算当前的奖励 ,加上对下一个状态的打折估计 。得到
- 旧的估计:原本认为当前状态的价值
得到差值:
- V() 是由价值网络输出的结果
- 是超参数折旧因子
GAE 广义优势估计
加入新的超参数 (0.9-0.95),然后对所有的 TD Error 的加权平均。
- 该公式可以用递归方式从右往左计算。
由此,回到了参数 ,获得了 Advantage 最终的值。
clip 防止更新过度
使用 clip 防止更新过度,即为利用 min 限制更新率。
其中
- 表示新策略和旧策略之间的更新比值,如果比值比较小,则正常更新,如果比较大,则使用 clip 限制更新
Reference Model 防止作弊
在最终的具体实现中,使用一个 KL散度 并设定一个初始策略,如果新策略对初始策略偏离太多,则会被判定为作弊而受到惩罚。
总结:目标优化公式
- J 是目标函数,希望最大化的目标
- :新旧策略的比率 (Probability Ratio),计算为:
- :优势函数估计 (Advantage Estimate) ,衡量动作比平均水平好的程度。使用 GAE(Generalized Advantage Estimation)来计算