智能体不确定性量化:从经典评分规则到轨迹级评估的工程实践
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)是一个广泛应用的选择。它计算报告累积分布函数(CDF)F与真实值的退化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_{t+1}(或关键观测变量)的预测分布P_t(s_{t+1})。 - 当真实的下一个状态
s_{t+1}^*到来时,计算该步的评分(如对数评分或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_particles=50, gamma=0.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, deterministic=True) # 评估时使用确定性策略 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, deterministic=True) # 使用选定的集成成员模型预测下一个状态和奖励 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打分。 - 策略固定:评估时必须使用确定性策略(
deterministic=True)进行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开始重新模拟,就是为了避免使用真实轨迹中t+1及之后的状态。 - 动作泄露:在模拟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散度)。关键在于,评分规则提供了直接优化概率预测质量的途径。然而,这带来了巨大的计算挑战:评分规则的梯度计算,特别是通过环境交互进行时,可能非常复杂,需要用到重参数化技巧和策略梯度方法。
这条路目前还处于研究前沿,但无疑是让智能体真正学会“诚实思考”的最有潜力的方向之一。
