AIGC标识 世界模型 MSE 更低,规划却选错动作:一个 Python 最小反例

比较两个世界模型时,最容易得到的数字往往是预测误差。于是,一个很自然的选型方法是:在验证集上算 MSE,选更小的那个,再把它交给规划器。

如果模型的用途是辅助决策,这个方法少了一层检查:误差更小,是否真的保住了候选动作的优劣顺序?

下面构造一个只有三个动作的例子。两个模型面对完全相同的候选动作、真实代价和规划规则。我们只改变预测,观察 MSE 与规划遗憾值是否给出同一结论。

先把反例摆出来

假设代价越小越好,有三个候选动作:

动作 真实代价 模型 A 的预测 模型 B 的预测
left 0 2 0
right 1 1 3
wait 100 100 94

规划器的规则很简单:选择预测代价最小的动作。

模型 A 选 right,执行后的真实代价是 1。模型 B 选 left,执行后的真实代价是 0。

再算平均平方误差:

  • A:三个误差的平方为 4、0、0,MSE 为 4/3,约 1.333333。
  • B:三个误差的平方为 0、4、36,MSE 为 40/3,约 13.333333。

A 的 MSE 只有 B 的十分之一,却选了更差的动作。

B 对 wait 的预测错得更多,这显著拉高了平均误差;但在这个固定候选集合中,wait 的预测仍远高于另外两个动作,不影响最优动作的选择。A 的较小误差则发生在关键位置:它把 left 和 right 的顺序颠倒了。

这是人为构造的诊断例子,不是任何真实模型的跑分。

用真实代价算 regret

为了单独观察模型预测对选择的影响,这里假定模型已经给出了候选动作的预测代价。它可以看作“环境预测 → 代价计算 → 动作选择”链路的末端切片,并非完整世界模型模拟器。

记模型选择的动作为 chosen,规划遗憾值定义为:

\[\operatorname{regret}=c(\text{chosen})-\min_{a\in\mathcal A}c(a) \]

这里的 c 是真实代价,不能用预测代价替代。

如果用模型自己的预测评价它选择的动作,每个模型都会认为自己已经选到了最小值,那就无法发现选错的情况。

import math

def evaluate_forecast(predicted, true_costs):
    if not true_costs or set(predicted) != set(true_costs):
        raise ValueError("expected matching, nonempty action dictionaries")
    if not all(isinstance(a, str) for a in true_costs):
        raise ValueError("action names must be strings")
    if not all(math.isfinite(x) for x in (*predicted.values(), *true_costs.values())):
        raise ValueError("costs must be finite")

    actions = sorted(true_costs)
    # 预测值相同,按动作名排序,保证结果不依赖字典插入顺序。
    chosen = min(actions, key=lambda a: predicted[a])
    mse = math.fsum((predicted[a] - true_costs[a]) ** 2 for a in actions) / len(actions)
    best_true_cost = min(true_costs.values())
    regret = true_costs[chosen] - best_true_cost
    return {"chosen": chosen, "mse": mse, "regret": regret}

true_costs = {"left": 0.0, "right": 1.0, "wait": 100.0}
pred_a = {"left": 2.0, "right": 1.0, "wait": 100.0}
pred_b = {"left": 0.0, "right": 3.0, "wait": 94.0}

for name, pred in (("A", pred_a), ("B", pred_b)):
    r = evaluate_forecast(pred, true_costs)
    print(f"{name}: chosen={r['chosen']}, MSE={r['mse']:.6f}, regret={r['regret']:.6f}")

输出:

A: chosen=right, MSE=1.333333, regret=1.000000
B: chosen=left, MSE=13.333333, regret=0.000000

这两个指标在回答不同的问题:MSE 衡量候选动作上的代价预测有多接近真值;regret 衡量最终选择相对于候选集合中的真实最优动作损失了多少。

注意“候选集合中”这个限定。如果规划器根本没生成一个更好的动作,这里的零 regret 也不能说明它找到了整个环境中的全局最优策略。

甚至不需要“不重要的动作”

上面的例子利用了 wait 的大误差。是否只有候选集合里混入无关动作,才会发生这种现象?也不是。

考虑真实代价为 (0, 1) 的两个动作:

模型 预测代价 MSE 选择 regret
C (10, 11) 100 left 0
D (0.6, 0.4) 0.36 right 1

C 的代价预测整体偏移很大,但动作顺序正确;D 的每个预测都更接近真值,却跨过了两个动作的决策边界。

two_actions = {"left": 0.0, "right": 1.0}
c = evaluate_forecast({"left": 10.0, "right": 11.0}, two_actions)
d = evaluate_forecast({"left": 0.6, "right": 0.4}, two_actions)
assert c["mse"] == 100.0 and c["regret"] == 0.0
assert math.isclose(d["mse"], 0.36) and d["regret"] == 1.0
assert d["mse"] < c["mse"]

这里直接比较的是预测代价。所有候选代价共同加上常数,不改变 argmin。这不意味着任意状态预测加常数都不影响规划:状态还要经过代价函数,非线性变换可能改变排序。

什么时候预测精度能保证选择正确?

平均误差难以提供这种保证,但一个更强的逐动作误差上界可以。

设真实最优动作唯一,最优与次优动作的代价差为 gap。如果每个候选动作的预测误差绝对值都不超过 epsilon,并且:

\[\text{gap}>2\epsilon \]

那么预测排序不会把其他动作放到最优动作前面。最坏情况下,最优动作被高估 epsilon,另一动作被低估 epsilon,也不足以抹平这个间隔。

这是固定候选动作、精确最小化预测代价时的充分条件。MSE 是平均量,不能直接把它当成每个动作的误差上界。

这也解释了为什么越接近决策边界,较小的误差就可能改变选择;离边界很远时,较大的误差仍可能不影响动作。

评测代码还要防几个误判

一是把预测最小值当作实际效果,二是只比较动作名称是否相同,三是忽略同分时的选择规则。

# 完美预测应同时得到零误差和零 regret。
r = evaluate_forecast(true_costs, true_costs)
assert r["mse"] == 0.0 and r["regret"] == 0.0

# 同分按动作名字典序,不能受输入顺序影响。
ties = evaluate_forecast({"z": 0.0, "a": 0.0}, {"z": 0.0, "a": 5.0})
assert ties["chosen"] == "a" and ties["regret"] == 5.0

# 真实最优动作可能不唯一,选另一最优动作仍应是零 regret。
r = evaluate_forecast({"a": 1.0, "b": 0.0}, {"a": 2.0, "b": 2.0})
assert r["chosen"] == "b" and r["regret"] == 0.0

# 仅有一个候选动作时,不论预测是否准确,候选集合内的 regret 都为零。
r = evaluate_forecast({"only": 7.0}, {"only": 5.0})
assert r["mse"] == 4.0 and r["regret"] == 0.0
print("evaluation checks passed")

函数需要对动作名排序,时间复杂度为 O(A log A),额外空间为 O(A)。在实际任务中,更难的部分通常是取得可靠的真实代价,而不是计算这几个指标。

放回世界模型的评测链路

世界模型可能预测状态、潜变量、图像或回报。不同预测误差如何影响规划,取决于任务代价、候选动作、规划器和 rollout 长度,不能统一换算成一个 MSE 门槛。

2026 年 9 月的预印本 Not All Errors Matter: Decision-Relevant Prediction Error Predicts Planning Quality研究了误差分配到不同状态维度时的规划差异,并提出 DRPE。本文的三个动作例子只说明平均误差与选择质量可以不一致,不是该论文实验或 DRPE 指标的复现。

另一篇以决策为中心的世界模型评测立场论文强调,评测证据需要与模型声称的用途相匹配。若声称模型适合规划,只有视觉质量或预测相似度,仍不足以证明规划收益。

实际比较时,可以先固定任务、候选动作生成方式、规划预算和随机种子,再分别报告预测误差、真实执行代价或成功率,以及不同 rollout 长度下的表现。真实环境无法枚举最优动作时,应明确 regret 的基准来自哪里;不能把“相对某个基线的代价差”写成精确最优 regret。

我把本文中的代价预测反例整理成了 TensorDrill 的比较预测 MSE 与规划 regret 练习。这是我维护的 AI 编程练习项目,题目提供固定契约和测试,便于动手检查指标实现。

预测更准确仍然有价值。但当使用目标是决策时,验证预测是否支持正确选择,应当成为独立的一步。

posted @ 2026-10-16 12:06  dijefff  阅读(1)  评论(0)    收藏  举报