多智能体奖励塑形怎么计算?核对势函数差分与终态处理

计算势函数奖励并验证折扣求和,识别终态和理论边界。提供演示输入、可核对结果和适用限制。

奖励塑形是在原任务奖励之外增加反馈。势函数塑形的一种经典形式是 F(s,s′)=γΦ(s′)−Φ(s)。它与“离目标更近就直接加分”不同,折扣系数和终态定义必须一致。下面算一段自造轨迹,帮助你检查代码是否实现了这个差分。

输入一条已知轨迹

设折扣 γ=0.9,状态势依次为 -3、-2、-1、0,最后一个是终态,原任务只在最后交付奖励 10。可把 Φ 理解为对进度的数值描述,但本例不是训练学出的价值函数。三次塑形奖励分别是 1.2、1.1、1.0;与原奖励相加得到 1.2、1.1、11.0。

多智能体奖励塑形怎么计算?核对势函数差分与终态处理

按同样折扣加总塑形部分:1.2+0.9×1.1+0.9²×1=3。展开后中间项相互抵消,留下 -Φ(s0)+γ³Φ(s3)。终态势为零时是 -Φ(s0)。所以从同一起点出发,正确的差分不会仅因绕路就凭空增加折扣回报。

运行差分和求和检查

保存 shaping.py,用 Python 3 执行 python shaping.py。这里的断言核对的是数学实现,不是策略已经学好。

from math import isclose
gamma = 0.9
phi = [-3.0, -2.0, -1.0, 0.0]
original = [0.0, 0.0, 10.0]
extra = [gamma * phi[t + 1] - phi[t] for t in range(3)]
shaped = [r + f for r, f in zip(original, extra)]
discounted = sum((gamma ** t) * f for t, f in enumerate(extra))
boundary = -phi[0] + gamma ** 3 * phi[-1]
print([round(v, 3) for v in extra], [round(v, 3) for v in shaped])
print(round(discounted, 3), round(boundary, 3))
assert isclose(discounted, boundary)
assert isclose(discounted, 3.0)

应得到额外奖励 [1.2,1.1,1.0]、合成奖励 [1.2,1.1,11.0],两个求和值都是 3.0。若结果不一致,先检查 Φ 使用的是当前状态和下一状态,且塑形 γ 与回报 γ 相同,不要一个用 0.9、另一个用 1。

终止与截断需要分别建模

有限回合示例把真正终态势设为零,避免末状态额外项改变有限轨迹的排序。时间上限截断并不总是任务终态:若理论任务继续存在,应保留下一状态和正确的价值引导;若时间就是任务的一部分,应把剩余时间纳入状态并明确终止规则。不要看见 done 就无条件把势清零。

在多智能体任务里,先注明势函数作用于联合状态还是个体观察,奖励给谁,以及执行端是否需要全局信息。本例计算可用于检查共享团队任务的实现,但经典论文关于固定 MDP 的策略不变性结论,不能直接当作一般随机博弈的均衡保持或多智能体训练收敛保证。

先保留原任务奖励和塑形奖励两条日志,测试到达终点、掉头、循环、超时和不同起点;评估最终交付率时使用原任务标准。仅看塑形回报升高,很可能看不到真正的任务退化。

资料与核对依据

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

赞 (0)
AI小管家的头像AI小管家
多智能体奖励函数怎么设计?用双人搬运核对团队目标与个体激励
上一篇 21小时前
多智能体强化学习框架怎么选?分清 Gymnasium、PettingZoo 与 RLlib
下一篇 21小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

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

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