1. 项目概述当智能体需要为自己的“不确定”打分最近在折腾一些强化学习和序列决策的项目一个绕不开的核心问题就是如何让一个自主行动的智能体Agent不仅做出决策还能量化并诚实地报告自己对决策结果的不确定性这不是一个纯理论问题。想象一下一个自动驾驶系统在判断“前方障碍物是塑料袋还是石头”时如果它只是给出一个“是石头”的预测我们无法信任它但如果它能同时说“我有95%的把握这是石头”这个置信度本身是否可靠我们又如何去评估这个“95%”说得好不好这就是“智能体不确定性量化”要解决的事。而“Proper Scoring Rules”恰当评分规则就是衡量这些概率预报是否“诚实”和“准确”的尺子。简单来说它是一套数学机制你智能体报告一个概率分布比如“前方是石头的概率为0.95是塑料袋的概率为0.05”等真实结果揭晓比如撞上去发现真是石头评分规则会根据你报告的概率和真实结果给你打一个分。这个分越高越好。最关键的特性是一个“恰当”的评分规则能保证智能体为了最大化自己的期望得分会心甘情愿地报告自己内心真实相信的概率。任何夸大或隐瞒比如明明心里没底却报个0.99从长期看都会导致期望得分降低。所以“Proper Scoring Rules for Agentic Uncertainty Quantification”这个标题直指一个非常前沿且实用的交叉领域我们不再满足于被动预测模型的不确定性比如图像分类的置信度而是要为核心具备行动能力和时序决策能力的智能体设计一套能引导其进行诚实、有效不确定性量化的评估体系。这关系到智能体的安全性、可靠性和人机信任。2. 核心需求与挑战为什么传统的评分规则不够用了要理解为什么需要专门为“智能体”设计评分规则得先看看传统场景和智能体场景的根本区别。2.1 传统不确定性评估的局限在经典的机器学习如监督学习中不确定性量化通常针对的是单步、独立同分布的预测任务。例如给定一张图片模型输出它是“猫”的概率是0.8是“狗”的概率是0.2。我们常用对数评分规则Log Score或Brier分数来评估这个概率向量的质量。这些规则运行良好因为它们隐含了几个假设预测与行动解耦模型只负责“说”不负责“做”。它报告概率但执行什么动作是系统其他部分决定的。即时反馈真实标签是猫还是狗会很快揭晓评分可以立即进行。静态环境每次预测被看作是独立的事件。2.2 智能体引入的新维度一旦主体变成了一个在环境中主动交互、执行动作序列以达成目标的智能体不确定性量化就变得复杂得多轨迹级不确定性智能体的不确定性不仅关乎当前状态State的认知更关乎未来轨迹Trajectory的发展。一条轨迹是由一系列状态和动作组成的。智能体需要对自己可能走出的不同未来路径及其回报有一个概率上的判断。例如在围棋中智能体需要对未来可能出现的多种棋局演变有一个概率分布。行动影响未来智能体当前的动作会直接影响未来状态和可观测信息的分布。它的不确定性会引导它采取信息收集行动探索这反过来又改变了它未来面临的不确定性。这种主动学习的特性使得评估其不确定性报告变得更加动态。延迟与稀疏反馈在序列决策中最终的成功或失败奖励可能要在很多步之后才揭晓。如何为中间步骤报告的不确定性进行评分这涉及到信用分配问题。策略依赖性智能体报告的概率分布往往与其自身遵循的策略紧密相关。一个激进的策略和一个保守的策略即使对世界有相同的信念也可能产生不同的不确定性报告例如激进策略可能更倾向于忽略低概率风险。评分规则需要能剥离策略的影响纯粹评估信念报告的质量吗还是说需要将策略作为一个整体来评估这些挑战意味着我们不能简单地将对数评分规则套用在智能体输出的每个动作的概率上。我们需要一套新的框架能够处理轨迹分布、时序信用分配以及策略与信念的交互。3. 理论基础从经典评分规则到轨迹评分规则要为智能体设计评分规则我们必须先夯实理论基础理解几种核心的Proper Scoring Rules并思考如何将它们从“单点预测”推广到“序列预测”。3.1 三大经典恰当评分规则假设智能体在某个时刻需要报告一个关于未来事件y属于结果集Y的概率分布P。真实结果y*随后揭晓。对数评分规则公式S(P, y*) log P(y*)。即直接取智能体为真实结果所分配概率的对数。解读这是信息论中“惊喜度”的负值。你给真实结果分配的概率越高得分对数越高。它非常严厉如果你给真实事件分配了零概率哪怕只有0.0001%的可能得分就是负无穷。这迫使智能体必须给所有可能结果分配非零概率即不能完全排除任何可能性这对于安全关键应用是 desirable 的。优点具有严格局部性只依赖于真实结果的概率且与贝叶斯更新有深刻联系。缺点对极端错误零概率惩罚过重在实际数值计算中可能不稳定。Brier评分规则公式对于分类任务S(P, y*) 2*P(y*) - ∑_{y in Y} P(y)^2 - 1。更常见的简化形式是计算概率向量与 one-hot 真实向量之间的均方误差然后取负使得分越高越好。解读它衡量的是报告的概率分布与“理想校准分布”所有质量集中在真实结果上之间的距离。它惩罚两种错误校准错误比如总是预测0.7但实际频率是0.5和锐度不足预测的概率分布太分散。优点对零概率预测有界惩罚数值上更稳健。缺点不像对数评分那样具有严格的信息论解释。连续概率空间评分规则当结果y是连续变量如预测明天的温度我们需要连续版本的评分规则。连续排名概率分数CRPS是一个广泛应用的选择。它计算报告累积分布函数CDFF与真实值的退化CDF之间的L2距离取负。公式CRPS(F, y*) -∫ [F(z) - 1{z y*}]^2 dz。它同时评估了概率分布的位置和形状。注意一个评分规则是“恰当”的意味着智能体如果真实相信分布Q那么报告Q所能获得的期望分数高于报告任何其他分布P。即E_{y~Q}[S(Q, y)] E_{y~Q}[S(P, y)]。这是激励诚实报告的核心数学保证。3.2 扩展到轨迹空间轨迹评分规则智能体的核心输出是关于未来轨迹τ (s0, a0, s1, a1, ..., sT)的概率分布。这里s是状态a是动作。一个最直接的思路是将整个轨迹视为一个“超级结果”然后应用经典评分规则。轨迹对数评分智能体报告一个轨迹分布P(τ)。当一条真实轨迹τ*被观测到后得分S log P(τ*)。挑战维度灾难轨迹空间极其庞大直接建模和计算P(τ*)几乎不可能。部分可观测性我们可能无法观测到完整轨迹例如无法知道智能体的内部状态或环境的全部信息。策略的混淆轨迹概率P(τ)是环境动态和智能体策略的混合产物。P(τ) P_env(τ | π) * π(a|s)的某种形式。如果我们用轨迹对数评分来评估智能体的“不确定性量化”我们到底是在评估它对环境动态的信念还是在评估它自身策略的随机性这需要仔细界定。因此实践中我们需要对“评分什么”做出清晰定义。通常我们关注的是智能体对环境动态包括状态转移和奖励的信念不确定性而不是其策略的探索随机性。这意味着我们需要设计方法从观测到的轨迹中反推或分离出对环境信念的评估。4. 面向智能体的评分规则设计思路基于以上挑战社区和研究中出现了一些针对智能体场景的评分规则设计思路。这里我结合自己的实验经验分享几个可行的方向。4.1 基于模型的价值评估法这是目前相对主流的一种思路。其核心是不直接对庞大的轨迹分布评分而是利用智能体内部的世界模型World Model和价值函数来构造一个代理评分目标。设定假设智能体有一个参数化的世界模型M_θ它能够预测给定状态和动作下的下一个状态和奖励。同时智能体有一个价值函数V_φ或策略π_φ。智能体对模型参数θ存在一个后验分布P(θ | D)这代表了它的认知不确定性。评分目标构造在决策时刻t智能体基于当前信念P(θ)对未来累积回报Value有一个分布。我们可以定义评分规则为智能体报告的价值分布与事后观察到的实际回报之间的吻合度。具体操作智能体在时刻t报告一个关于未来回报G_t的概率分布Q_t这个分布可以通过从模型后验P(θ)中采样进行多次轨迹rollout来估计。在回合结束后我们观察到实际的未来回报g_t^*。应用评分然后我们可以使用一个连续评分规则如CRPS来评估分布Q_t对单点g_t^*的预测质量S_t CRPS(Q_t, g_t^*)。优点将高维的轨迹评分降维到一维的回报评分大大简化了问题。回报是智能体最终关心的目标对其不确定性进行评分具有直接的实用意义。可以与基于模型的强化学习如PlaNet, Dreamer框架自然结合。难点与注意事项信用分配整个回合的最终回报g_t^*是由t时刻之后的所有动作和状态共同决定的。用最终回报来评估t时刻的预测存在严重的延迟和混淆。一个常见的缓解方法是使用n步回报或优势函数进行局部评估。分布估计的准确性从模型后验采样进行蒙特卡洛估计来得到Q_t计算代价高且估计的分布可能不准。需要高效的近似方法如贝叶斯神经网络或集成方法。策略的影响Q_t仍然依赖于当前策略π。如果策略在t时刻后发生了巨大变化例如从探索切换到利用那么用后来的回报评估之前的预测就不太公平。一种思路是固定策略进行评估或者使用“离线”评估设置。4.2 基于预测校准的序列评分另一种思路是回归到更基础的层面评估智能体世界模型在单步预测上的校准程度。因为如果模型在每一步的预测都是校准的那么由它推演出的长期轨迹和回报分布也更有可能是合理的。方法在智能体运行过程中记录下它在每个时间步t对下一个状态s_{t1}或关键观测变量的预测分布P_t(s_{t1})。当真实的下一个状态s_{t1}^*到来时计算该步的评分如对数评分或CRPS。对所有时间步的评分进行聚合例如求平均得到对整个回合或整个交互历史的评分。优点概念清晰直接评估模型的核心能力。反馈即时不存在长期的信用分配问题。可以方便地绘制校准曲线将预测概率分桶检查每个桶内事件发生的实际频率是否与概率匹配。一个校准良好的智能体其曲线应接近对角线。挑战这主要评估的是偶然不确定性Aleatoric Uncertainty和部分认知不确定性。对于纯粹由模型认知不足引起的、影响长期规划的不确定性捕捉能力有限。智能体可能会通过调整策略来“选择”更容易预测的状态从而获得高分但这不代表其模型在所有可能情况下的不确定性都量化得好。这需要设计覆盖各种情况的评估集。4.3 针对“决策置信度”的评分有时我们更关心智能体对其当前所做决策的置信度而不是对未来的完整分布。例如自动驾驶系统在决定“变道”时它对这个决策正确的把握有多大方法定义决策d_t例如执行动作a_t。智能体需要报告一个标量c_t ∈ [0, 1]代表它认为这个决策会带来正面结果或高于基线回报的概率。事后我们可以根据决策的实际结果例如是否发生事故回报是否高于基线定义一个二值标签y_t ∈ {0, 1}。然后我们可以使用二分类的Proper Scoring Rule如Brier分数或对数损失来评估这一系列概率报告{c_t}对标签{y_t}的预测质量。优点非常直观易于理解和实现。直接关联到决策的安全性和可靠性。难点如何定义“决策正确”的标签y_t非常关键且可能具有延迟性。这本质上是在评估一个二值事件的概率预测丢失了关于“为什么不确定”的丰富信息例如是因为环境随机性大还是因为模型知识不足。5. 实操框架与代码示例理论说了很多我们来点实际的。假设我们在一个标准的 Gym 环境中训练一个基于集成Ensemble模型的RL智能体并希望评估其不确定性量化的质量。这里我提供一个基于“基于模型的价值评估法”和CRPS评分的大致框架。5.1 环境与智能体设置我们使用一个简单的连续控制环境比如Pendulum-v1。智能体采用SAC算法但其价值函数和策略的输入除了状态还包含一个从集成动力学模型中提取的“不确定性特征”。集成动力学模型我们训练一个由K个神经网络组成的集成每个网络f_θ_k输入当前状态s_t和动作a_t预测下一个状态的差值Δs_t和奖励r_t。集成成员之间的预测差异可以作为认知不确定性的一个代理。不确定性特征提取在每一步我们将状态s_t和候选动作a_t输入集成模型得到K个预测。我们可以计算这些预测的均值μ和方差σ^2或熵。这个方差或熵向量可以作为附加特征与原始状态一起输入给价值网络和策略网络。智能体训练SAC智能体照常训练但其网络结构需要接受扩增后的状态特征[s_t, uncertainty_feat_t]。这样策略和价值函数可以学会如何根据不确定性来调整行为例如在高不确定性区域更谨慎。5.2 评估阶段计算轨迹价值分布的CRPS训练完成后我们固定智能体策略和集成模型在测试环境中进行多次 rollout 来评估。import numpy as np import torch from scipy.stats import norm def calculate_crps_for_episode(agent, ensemble_model, env, num_particles50, gamma0.99): 计算一个回合中智能体在每个时间步报告的未来回报分布的CRPS分数。 参数: agent: 训练好的智能体策略π固定。 ensemble_model: 训练好的集成动力学模型。 env: 测试环境。 num_particles: 用于估计回报分布的粒子轨迹数量。 gamma: 折扣因子。 返回: time_steps: 时间步列表。 crps_scores: 每个时间步的CRPS分数列表。 actual_returns: 每个时间步开始的实际未来折扣回报。 obs, _ env.reset() done False trajectory [] # 存储 (obs, action, reward, next_obs, done) # 1. 收集一条真实轨迹 while not done: with torch.no_grad(): action agent.select_action(obs, deterministicTrue) # 评估时使用确定性策略 next_obs, reward, terminated, truncated, _ env.step(action) done terminated or truncated trajectory.append((obs.copy(), action.copy(), reward, next_obs.copy(), done)) obs next_obs # 2. 为轨迹中的每个时间步t计算其未来回报分布和实际回报 T len(trajectory) time_steps [] crps_scores [] actual_returns_list [] for t in range(T): # 2.1 计算从时间步t开始的实际折扣回报 (g_t^*) actual_return 0 discount 1.0 for k in range(t, T): actual_return discount * trajectory[k][2] # reward discount * gamma actual_returns_list.append(actual_return) # 2.2 获取时间步t的状态和动作 s_t, a_t, _, _, _ trajectory[t] # 2.3 使用集成模型进行多粒子rollout估计回报分布 Q_t predicted_returns [] for _ in range(num_particles): # 随机选择一个集成成员作为本次rollout的“世界” model_idx np.random.randint(0, ensemble_model.size) current_model ensemble_model.models[model_idx] # 从当前状态s_t开始使用固定策略π进行模拟 cumulative_return 0 discount 1.0 sim_obs s_t.copy() sim_done False max_sim_steps 100 # 防止无限循环 for step in range(max_sim_steps): if sim_done: break # 智能体根据当前模拟状态选择动作同样使用确定性策略 with torch.no_grad(): sim_action agent.select_action(sim_obs, deterministicTrue) # 使用选定的集成成员模型预测下一个状态和奖励 next_obs_pred, reward_pred current_model.predict(sim_obs, sim_action) cumulative_return discount * reward_pred discount * gamma sim_obs next_obs_pred.copy() # 这里需要一个终止条件判断简单起见我们可以用真实轨迹中对应步的done或设置一个阈值 # 为简化我们使用固定步数或当折扣因子很小时停止 if discount 1e-3: break predicted_returns.append(cumulative_return) # 2.4 将预测的回报列表转换为一个经验分布并计算其CRPS # 简单起见假设预测回报服从高斯分布用样本均值和方差拟合 pred_returns_np np.array(predicted_returns) mu np.mean(pred_returns_np) sigma np.std(pred_returns_np) 1e-6 # 防止除零 # 计算CRPS (对于高斯分布有解析解) # CRPS(N(μ, σ^2), y) σ * [ (2Φ(z) - 1) 2φ(z) - 1/√π ]其中 z (y-μ)/σ # 这里我们使用负的CRPS使得分越高越好与其他评分规则一致 z (actual_return - mu) / sigma crps sigma * ( (2 * norm.cdf(z) - 1) 2 * norm.pdf(z) - 1/np.sqrt(np.pi) ) # 通常CRPS是越小越好我们取负值使其越大越好方便与其他评分规则如对数似然比较方向 score -crps time_steps.append(t) crps_scores.append(score) return time_steps, crps_scores, actual_returns_list # 使用示例 # time_steps, scores, actual_returns calculate_crps_for_episode(trained_agent, ensemble_dyn_model, test_env) # average_crps_score np.mean(scores)代码解读与注意事项核心思想在每一个决策点t我们利用智能体的集成世界模型和固定策略模拟出多条可能的未来轨迹并计算每条轨迹的折扣回报从而形成一个对未来回报的经验分布。然后我们将这个预测分布与事后观察到的实际回报进行比较使用CRPS打分。策略固定评估时必须使用确定性策略deterministicTrue进行rollout。这是因为我们要评估的是环境动态的不确定性由集成模型捕获而不是策略的随机性。如果策略是随机的那么预测回报的分布会混杂进策略噪声使得评分不纯。计算代价每个时间步都需要进行num_particles次模拟计算量很大。在实际研究中可能只抽样评估关键时间步或使用更高效的分布估计方法如贝叶斯神经网络。分布假设代码中假设预测回报服从高斯分布这只是一个近似。对于复杂、多模态的回报分布这个假设可能不成立。更稳健的方法是直接使用经验分布排序后的样本计算CRPS虽然计算稍复杂。终止条件模拟中的终止条件sim_done是一个难点。在模型中准确预测“终止”信号通常很困难。示例中使用了简化处理固定步数或小折扣。更好的做法是让模型也预测一个终止概率。5.3 评估结果分析运行上述评估多次多个随机种子多个测试回合我们可以得到一组CRPS分数。分析可以从以下几个维度进行平均分数计算所有时间步、所有回合的平均CRPS取负后值越大越好。这给出了智能体不确定性量化整体质量的宏观指标。随时间变化绘制CRPS分数随时间步或累积奖励变化的曲线。一个良好的智能体其CRPS分数应该相对稳定或随着学习到更多信息而改善。在环境发生剧变或遇到新情况时CRPS分数可能会暂时变差这恰好反映了不确定性的增加。与不确定性的相关性将CRPS分数与智能体在对应时间步报告的不确定性特征如集成方差进行相关性分析。理想情况下在智能体报告高不确定性的时间点如果其预测分布回报分布也确实很分散导致CRPS较差那么这种报告是“诚实”的。如果报告高不确定性但预测分布却很集中CRPS好或者报告低不确定性但预测分布很分散CRPS差都说明不确定性量化可能有问题。对比基准可以对比几种不同智能体基准1不使用集成模型、没有显式不确定性量化的普通SAC。基准2使用集成模型但不将不确定性特征提供给策略网络。我们的智能体使用集成模型并将不确定性特征提供给策略。 比较它们的平均CRPS。我们期望“我们的智能体”能获得最好的分数因为它被激励去产生更准确从而获得更高CRPS的概率预报。6. 常见陷阱与进阶思考在实际操作中你会遇到很多坑。这里分享几个我踩过的雷和后续的思考。6.1 认知不确定性与偶然不确定性的混淆这是最大的混淆源。偶然不确定性Aleatoric源于环境的固有随机性比如骰子本身是随机的而认知不确定性Epistemic源于模型知识的不足比如你不知道骰子是否灌了铅。问题集成模型的预测方差同时包含了这两种不确定性。如果你直接用这个方差作为“认知不确定性”的度量去引导探索或风险评估可能会出错。在随机性很大的环境中即使模型完全正确方差也会很大。排查技巧在已知确定性环境中测试在一个完全确定性的简单环境如某个格子世界中你的集成模型方差应该随着数据增多而趋近于零。如果不是说明你的集成训练或架构可能有问题例如集成成员初始化差异过大。分解不确定性有一些技术尝试分离这两种不确定性例如使用贝叶斯神经网络BNN先验表示认知不确定性用概率输出表示偶然不确定性。但这在实践中非常具有挑战性。实操建议对于大多数应用如果环境随机性不是极端的大使用集成方差作为一个综合的“总不确定性”度量通常也是有效的。但要明白其局限性并在解释结果时保持谨慎。6.2 评估中的“泄露”问题在评估不确定性量化时必须严防任何形式的数据泄露否则评分会毫无意义。时间泄露这是序列评估中最常见的错误。在时间步t评估时绝对不能使用t时刻之后任何的真实观测信息来计算预测分布Q_t。上面的代码框架中我们使用集成模型从s_t开始重新模拟就是为了避免使用真实轨迹中t1及之后的状态。动作泄露在模拟rollout时动作必须由被评估的固定策略π产生而不能使用真实轨迹中记录的动作。因为真实轨迹中的动作是历史策略可能已更新产生的用它来评估当前策略下的不确定性会产生偏差。检查清单在编写评估代码时反复问自己Q_t的生成过程中有没有任何地方偷偷用到了y_{t}^*未来的真实信息6.3 评分规则的选择困境该用对数评分、Brier分数还是CRPS对数评分优点理论性质最优与贝叶斯推理和最小描述长度紧密相连。对过度自信赋零概率惩罚极重在安全至上场景中是优点。缺点对分布估计的微小错误非常敏感数值上可能不稳定涉及log(0)。在智能体场景中由于分布估计本身就不准通过有限粒子近似使用对数评分可能导致分数方差极大难以进行可靠的比较。CRPS优点对连续变量友好对分布尾部的错误相对不那么敏感数值稳定。它同时衡量了校准性和锐度。缺点计算量通常比对数评分大除非有解析解且对于离散变量的推广如分类不如Brier分数直观。Brier分数优点计算简单对概率向量的评估直接。缺点主要适用于分类问题。对于连续或结构化输出需要先离散化。我的经验法则如果评估的是离散动作或事件发生概率优先使用Brier分数。如果评估的是连续值如回报、状态变量优先使用CRPS。如果追求理论严谨且能处理好数值稳定性问题可以尝试对数评分但一定要配合强大的分布估计方法和大量的粒子模拟。在报告中最好同时汇报多种评分规则的结果因为它们衡量了分布预测质量的不同侧面。6.4 从评估到改进如何利用评分进行训练评估只是第一步我们最终希望智能体能学会提供更好的不确定性估计。这引向了Proper Scoring Rules的另一个强大应用作为训练目标的一部分。我们可以设计一个混合损失函数总损失 策略损失如SAC的损失 λ * 不确定性评分损失其中不确定性评分损失是负的期望评分。例如如果我们使用CRPS并且我们有一个可参数化的概率分布输出器Q_ψ那么我们可以通过最小化-E[CRPS(Q_ψ, y*)]来训练ψ使其输出的分布更接近真实的未来回报分布。这本质上是一种分布强化学习的变体但目标更一般化不限于最小化Wasserstein距离或KL散度。关键在于评分规则提供了直接优化概率预测质量的途径。然而这带来了巨大的计算挑战评分规则的梯度计算特别是通过环境交互进行时可能非常复杂需要用到重参数化技巧和策略梯度方法。这条路目前还处于研究前沿但无疑是让智能体真正学会“诚实思考”的最有潜力的方向之一。