多智能体训练曲线怎么读?先分开每个体回报,再看团队均值

从逐回合回报核对团队聚合、个体失衡和训练评估口径。提供演示输入、可核对结果和适用限制。

多智能体训练曲线上升,可能只是一个智能体拿到了更多奖励。先保留每个体的回合回报,再按任务定义汇总,才有依据判断协作是否改善。下面用自造日志演示一次核对,不把这些数字当作任何算法的训练成绩。

先写清楚纵轴是什么

回合回报是本回合各时间步奖励的累计。若记录折扣回报,需要同时写出折扣系数。PettingZoo 的 Parallel 接口逐步返回按智能体名称索引的 rewards 字典;它不会替你定义团队目标。两个人各得 10 分,团队总和是 20,个体均值是 10,二者的单位和解释不同。零和竞争任务的奖励之和还可能恒为零,不能据此判断策略没有进步。

多智能体训练曲线怎么读?先分开每个体回报,再看团队均值

回合 智能体 A 智能体 B 总和 最小个体回报
1 10 10 20 10
2 14 6 20 6
3 18 2 20 2
4 20 0 20 0

这组演示里团队总和始终 20,但最小个体回报从 10 降到 0。如果任务要求两个人公平完成工作,总和曲线会遮住退化;如果任务只要求团队产出,分工偏斜也不必自动判为错误。判断必须回到奖励定义。

用同一段日志计算三种指标

把下面内容保存为 curves.py,用 Python 3 执行 python curves.py。输入是每回合两个个体的累计奖励,行顺序对应同一回合,不能把两个不同实验的回合拼在一起。

rows = [(10, 10), (14, 6), (18, 2), (20, 0)]
for episode, values in enumerate(rows, 1):
    total = sum(values)
    mean = total / len(values)
    worst = min(values)
    print(episode, total, mean, worst)
assert [sum(v) for v in rows] == [20, 20, 20, 20]
assert [min(v) for v in rows] == [10, 6, 2, 0]

应看到四行的总和均为 20、均值均为 10.0,最后一列依次为 10、6、2、0。再保存原始日志和指标定义,以免以后只剩截图、无法还原计算。个体会中途退出的环境还要记录每个体存活步数;不能无说明地把缺失值当作零。

把训练探索和独立评估分开

训练回合的行为可能含探索,评估回合则使用约定的固定策略口径。横轴优先使用环境步数或实际采样量,并说明是联合 step 次数还是每个体动作数。更换奖励尺度、个体数量或最大回合长度后,曲线高度不能直接比较。固定评估场景、评估回合数和检查点,并用多个训练随机种子保留离散结果,才能讨论稳定性。

移动平均可辅助看趋势,但原始回报、失败次数和最低个体表现也应保留。窗口越大,短期失败越容易被掩盖。训练曲线不能替代未见场景测试;本例只验证聚合计算,没有训练策略,也不能证明某个框架优于另一个。

资料与核对依据

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32970.html

赞 (0)
AI小管家的头像AI小管家
DDPG 是多智能体强化学习吗?用 actor 和 critic 的输入判断
上一篇 1天前
多智能体环境怎么调用?用 PettingZoo 对照 Parallel 与 AEC
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部