











接上篇: macos(M4)上跑强化学习 - PyTorch LunarLander-v3 Stable-Baselines3
官方文档参考:https://stable-baselines3.readthedocs.io/en/master/common/logger.html#explanation-of-logger-output
通用的图例数据基础介绍:
PPO 不是走一步更新一次,而是先收集一批轨迹,再统一训练,这一批收集过程就叫一次 rollout。
其中有2个图标:如下图

本轮 rollout 收集到的所有回合,平均回合长度(其实就是回合执行的时间,这里用步数代替了)。如下图:

本轮 rollout 收集到的所有回合,平均回合奖励(就是平均回合奖励的总数)。如下图:

其中只有一个,就是fps。(这个不是游戏渲染帧率)每秒完成多少条环境交互 step,也就是训练数据采集阶段的运行速度。
简单来说,fps越高,收集训练样本速度越快,也就意味着训练速度越快。

这里有9个表格。
Approximate KL Divergence,近似平均KL散度,代表的是更新前旧策略 和 更新后新策略 的分布差距有多大。
PPO 最核心思想:不能让策略一次性改动太大!,否则训练极易崩溃、震荡。

被 Clip 裁剪截断的样本占全部样本的比例。
强化学习中,需要限制策略更新幅度,阻止一次性改动过大。也就意味着,更新的新策略越多,裁剪越大。所以这里有一个规律,KL 越高 → 策略改动越大 → 更多样本触发裁剪 → clip_fraction 上升。

PPO 裁剪区间的半径,是初始化模型设置的参数。默认为0.2。可以开启动态自适应clip_range。

熵损失。熵(Entropy):用来衡量策略随机性大小。

解释方差(Explained Variance)专门用来评价 PPO 里 Critic 价值网络(估值网络)预测准不准。
数值区间解读
≈ 1.0:完美!价值网络预测和真实回报几乎一致> 0:价值网络有一定预测能力(有效)≈ 0:价值网络预测效果 ≈ 和直接猜平均值差不多,基本没用< 0:最差情况!价值网络预测完全不靠谱,甚至还不如直接输出常数均值
优化器当前使用的学习率 lr。其实就是控制神经网络每一次参数更新的步幅大小。

策略梯度损失(Actor 网络专属损失)。
这一步是策略更加倾向选择能拿到更高奖励的动作。只控制模型怎么选择动作。
好的表现是:缓慢持续下降,不会剧烈震荡、不会突然断崖式飙升。
强化学习的一个结论:平稳温和的迭代,经常比单次激进优化得到更好的最终结果。

价值网络损失(Critic 网络专属损失)。
这个目标是让 Critic 的估值越来越贴近真实收益。
价值网络:评估当前状态好不好。
好的表现是:训练前期 Critic 完全不懂环境,预测偏差巨大;随着训练不断修正,估值误差持续缩小。平稳持续下降,没有突然剧烈跳涨。

图表中这个会在policy_gradient_loss和value_loss前面。只是这里我放到了最后。
PPO 总的联合损失函数(Total Loss)。
策略梯度损失(policy_gradient_loss,优化 Actor) + 价值网络损失(优化 Critic)+ 熵损失(entropy_loss,鼓励探索,带负号)。
强化学习中,不能像普通监督学习一样,单纯认为 loss 越低 = 模型越好!。

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。