1. 不确定性量化:为什么你的AI模型需要“自知之明”?
在科学计算和工程决策中,我们常常面临一个尴尬的局面:一个深度学习模型对某个分子的毒性给出了高达0.95的预测置信度,但实验验证却发现它完全错了。或者,一个用于预测新材料性能的物理信息神经网络,在训练数据覆盖的区域内表现优异,一旦输入一个从未见过的晶体结构,它依然会“自信满满”地给出一个可能谬以千里的预测,而我们对这个预测的可靠性一无所知。这种“过度自信”的沉默失败,在药物发现、气候建模、自动驾驶等高风险领域是致命的。
这正是不确定性量化要解决的核心问题。它不是一个锦上添花的指标,而是让模型从“黑箱预言家”转变为“可靠的顾问”的关键技术。简单来说,UQ就是教会模型说“我不知道”。更准确地说,是让模型不仅能给出一个预测值(比如“这个材料的带隙是2.1 eV”),还能同时给出这个预测的不确定性范围(比如“有95%的把握认为带隙在2.0到2.2 eV之间”)。
在科学AI领域,数据往往昂贵、稀缺且充满噪声。一次失败的湿实验可能耗费数周,一次高精度的量子化学计算可能需要上万CPU小时。我们无法承受模型在未知区域盲目自信所带来的代价。因此,UQ的价值凸显在几个层面:风险预警(高不确定性提示预测不可信,需要进一步实验或计算验证)、主动学习(优先标注不确定性高的样本,以最高效的方式提升模型)、决策支持(在多个候选方案中,选择性能可能不是最优但确定性最高的方案),以及模型诊断(高不确定性可能揭示训练数据分布偏差或模型架构缺陷)。
传统的机器学习模型,尤其是深度神经网络,通常输出一个确定的点估计。它们经过海量数据训练,在测试集上可能取得很高的准确率,但这并不意味着它们真正“理解”了数据背后的物理规律。其“自信”来源于对训练数据模式的记忆和拟合,而非对世界本质的认知。UQ技术,特别是结合了贝叶斯推理与深度学习的方法,旨在为这些强大的模型注入一种概率化的“谦逊”和“自知之明”。
2. 不确定性之源:拆解“不知道”的两种面孔
要量化不确定性,首先得弄清楚它从何而来。在建模复杂系统时,不确定性并非铁板一块,研究者通常将其区分为两种本质不同的类型:偶然不确定性和认知不确定性。理解这一区分是选择正确UQ方法的基石。
2.1 偶然不确定性:世界固有的“噪声”
偶然不确定性,也称为数据不确定性或随机不确定性,源于物理系统或观测过程本身固有的随机性。这种不确定性是客观存在的,无法通过获取更多知识或数据来消除。
- 例子1:量子测量。在量子系统中,即使我们完全知道一个电子的量子态,对其进行测量时,结果仍然是概率性的。这是量子力学的基本原理决定的,与我们的模型无关。
- 例子2:实验噪声。在材料科学实验中,测量仪器的热噪声、电子噪声是无法完全消除的。即使在同一条件下重复实验十次,你也会得到十个略有差异的读数。这种噪声就是典型的偶然不确定性。
- 例子3:信息缺失。在仅给定分子二维结构图时预测其三维构象下的性质,由于缺乏精确的几何和电子结构信息,预测本身必然存在一个固有的、不可约减的模糊性。
在建模中,偶然不确定性通常通过在模型输出层引入一个噪声项来刻画。例如,在回归任务中,我们不再假设y = f(x),而是假设y = f(x) + ε,其中ε是一个随机噪声,通常建模为零均值的高斯分布N(0, σ²)。这里的方差σ²可以是一个常数,也可以是一个由数据x通过另一个神经网络分支预测得到的值(即均值-方差估计)。
实操心得:在实现MVE时,一个常见的陷阱是让模型只专注于最小化预测误差(均方误差),而忽略了对方差
σ²的合理估计。这可能导致模型将σ²预测为一个极小的常数,从而无法有效反映偶然不确定性。一个有效的技巧是在损失函数中加入一个正则化项,防止方差估计坍塌为零,或者使用异方差损失函数,同时优化均值和方差的预测。
2.2 认知不确定性:模型自身的“无知”
认知不确定性,也称为模型不确定性或系统不确定性,源于我们对所建模系统知识的不足。这包括模型架构选择不当、参数训练不充分、或者训练数据未能覆盖当前输入样本所代表的区域。
- 例子1:外推风险。一个用中小型有机分子数据训练的模型,被要求预测一个超大蛋白质分子的性质。由于输入空间远超出训练分布,模型的行为是未定义的,其预测具有极高的认知不确定性。
- 例子2:数据稀疏区。在材料发现中,我们可能只在某些成分比例附近有数据,对于其他比例,模型只能进行不可靠的猜测。这种因数据缺失导致的不确定性就是认知性的。
- 例子3:模型错误指定。我们用一个简单的线性模型去拟合一个高度非线性的物理过程,即使数据充足,模型也因为其本身能力限制而无法准确描述系统,这种偏差也属于认知不确定性。
与偶然不确定性不同,认知不确定性是可减少的。通过收集更多数据(特别是在不确定性高的区域),改进模型架构以更好地契合物理规律,或者进行更充分的训练,我们都可以降低认知不确定性。
在深度学习中,认知不确定性的量化通常与模型参数的不确定性绑定。我们不再将网络权重w视为固定的最优值,而是将其视为服从某个概率分布的随机变量。通过贝叶斯神经网络等方法,我们可以推断出权重w的后验分布p(w|D),其中D是训练数据。对于一个新输入x*,其预测分布p(y*|x*, D)是通过对所有权重可能性的积分得到的,这个分布的整体宽度(如方差)就反映了认知不确定性。
两种不确定性的直观对比与分离: 在实际应用中,我们通常希望同时估计两者。总预测不确定性 = 偶然不确定性 + 认知不确定性。在贝叶斯框架下,对于一个新样本x*,其预测分布p(y*|x*, D)的方差可以分解为:Var[y*] = E[Var[y*|w]] + Var[E[y*|w]]其中,第一项E[Var[y*|w]]是在固定权重w下,输出y*的方差的期望,这反映了偶然不确定性(数据噪声)。第二项Var[E[y*|w]]是不同权重w下预测均值的方差,这反映了认知不确定性(模型知识的不确定)。一些先进的UQ方法,如证据深度学习,在设计上就旨在显式地分离和量化这两种不确定性。
3. 深度学习中的UQ兵器谱:从实用技巧到理论框架
为深度神经网络配备UQ能力,已发展出一系列从启发式技巧到严谨概率框架的方法。它们各有优劣,适用于不同的场景和计算约束。
3.1 深度集成:简单粗暴却有效的“委员会决策”
深度集成并非严格意义上的贝叶斯方法,但它被证明是实践中非常强大且稳定的UQ启发式策略。其核心思想异常简单:训练多个相同架构的模型(通常3到10个),但使用不同的随机种子初始化,有时也结合不同的数据子集或超参数。在预测时,收集所有模型的输出,用这些输出的均值作为最终预测,用它们的方差(或标准差)作为不确定性的估计。
- 为什么有效?深度神经网络损失函数高度非凸,存在大量局部最优解。不同的初始化会使模型收敛到不同的局部最优。这些局部最优在训练集上性能相近,但对于未知数据的泛化行为可能不同。集成相当于组建了一个“专家委员会”,当所有专家意见一致时(输出方差小),我们信心足;当专家们分歧很大时(输出方差大),我们就知道这个问题比较棘手,不确定性高。
- 实操要点:
- 成员多样性是关键:仅仅改变随机种子是最低要求。为了增强多样性,可以结合使用不同的数据增强策略、不同的优化器设置,甚至对网络架构进行微小扰动(如随机深度)。
- 计算成本:这是深度集成最大的缺点。训练和推理成本与集成成员数量成线性增长。对于大模型,这可能令人望而却步。
- 不确定性校准:集成输出的方差可以直接作为不确定性度量,但其尺度可能与真实的预测误差不完全匹配。通常需要进行后处理校准,例如使用温度缩放或分位数回归来调整。
注意事项:深度集成虽然效果好,但其不确定性估计缺乏严格的概率解释。它更多是一种频率学派下的方差估计。在某些对不确定性校准有严格要求的场景(如安全临界系统),可能需要结合概率校准方法。
3.2 MC Dropout:将正则化技巧变为推理工具
蒙特卡洛Dropout可能是将现有确定性神经网络快速“贝叶斯化”最便捷的方法。其洞见在于,在训练中用于防止过拟合的Dropout操作,在测试时如果同样开启,可以近似视为对贝叶斯神经网络中随机权重的一种采样。
操作流程:
- 使用Dropout训练一个标准的神经网络。
- 在测试(推理)时,保持Dropout开启。
- 对同一个输入
x*,进行T次前向传播(例如T=30)。由于Dropout的随机性,每次前向传播相当于使用了一个略有不同的网络(随机关闭了不同的神经元)。 - 收集这
T次前向传播的输出{y*_1, ..., y*_T}。用它们的均值作为预测,用方差作为不确定性估计。
原理浅析:从贝叶斯视角看,带有Dropout的网络可以近似等价于一个特定的概率模型(如深度高斯过程)。测试时执行
T次随机前向传播,相当于从近似后验分布中抽取了T个模型样本。这种方法提供了一种极其廉价的近似贝叶斯推断。实现细节:
import torch import torch.nn as nn class MCDropoutModel(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim, dropout_rate=0.2): super().__init__() self.fc1 = nn.Linear(input_dim, hidden_dim) self.dropout = nn.Dropout(dropout_rate) # 定义Dropout层 self.fc2 = nn.Linear(hidden_dim, output_dim) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.dropout(x) # 注意:训练和测试时都应执行此操作 x = self.fc2(x) return x # 推理阶段 model.eval() # 但Dropout层在eval模式下默认不工作,需特殊处理 def mc_dropout_predict(model, x, n_samples=30): predictions = [] # 临时将模型中所有Dropout层切换到训练模式(启用Dropout) enable_dropout(model) with torch.no_grad(): # 不计算梯度,加速推理 for _ in range(n_samples): pred = model(x) predictions.append(pred) predictions = torch.stack(predictions) # [n_samples, batch_size, output_dim] mean_pred = predictions.mean(dim=0) std_pred = predictions.std(dim=0) # 作为不确定性的粗略估计 return mean_pred, std_pred
3.3 贝叶斯神经网络:正统的概率化之道
BNN是深度学习与贝叶斯统计的直系结合。它将神经网络中的权重和偏置从确定值变为概率分布。我们为权重w指定一个先验分布p(w)(如标准高斯分布),然后利用训练数据D,通过贝叶斯定理计算后验分布p(w|D)。
- 核心挑战:后验推断的棘手性。对于具有数百万参数的深度网络,精确计算后验分布
p(w|D) ∝ p(D|w)p(w)是难以处理的,因为证据项p(D)涉及高维积分。因此,我们必须依赖近似推断方法。 - 变分推断:这是目前最主流的BNN近似推断方法。其思想是寻找一个参数化的简单分布
q_φ(w)(如对角高斯分布)来近似真实后验p(w|D)。通过优化变分参数φ来最小化q_φ(w)与p(w|D)之间的KL散度。这等价于最大化证据下界。- Bayes-by-Backprop:一种巧妙的实现方式。它使用“重参数化技巧”将随机权重
w表示为确定性函数w = g(φ, ε),其中ε来自一个简单的随机源(如标准高斯分布)。这样,关于φ的梯度就可以通过标准的反向传播计算,使得VI能够无缝集成到现有的深度学习框架中。
- Bayes-by-Backprop:一种巧妙的实现方式。它使用“重参数化技巧”将随机权重
- 马尔可夫链蒙特卡洛:MCMC方法通过构建一个马尔可夫链来从后验分布中抽取样本。虽然理论上能提供更精确的近似,但其计算成本极高,尤其对于大模型,收敛速度慢,难以应用于实践。基于梯度的MCMC变体(如哈密顿蒙特卡洛)有所改进,但仍面临挑战。
- 最后一层贝叶斯:一种实用的简化策略。考虑到深度网络的前几层主要学习特征表示,而最后一层负责最终预测,可以只将最后一层的权重设为贝叶斯,而固定前面所有层为确定性权重。这大幅减少了待推断的随机变量数量,在保持一定UQ能力的同时,极大降低了计算开销。
3.4 证据深度学习:基于信任度的新视角
EDL是近年来兴起的一种有趣框架,它基于Dempster-Shafer证据理论。与BNN直接对权重建模不同,EDL对模型预测的“主观意见”或“信任度”进行建模。
- 核心思想:对于一个分类任务,EDL网络不再直接输出各类别的概率,而是输出一个“证据”向量
e。这个证据向量被用于参数化一个狄利克雷分布Dir(α),其中α = e + 1。狄利克雷分布是分类概率向量上的分布。期望概率p_k = α_k / (Σ α_i)可作为预测,而浓度参数S = Σ α_i则反映了总证据量。S值大表示证据充足,不确定性低;S值小表示证据不足,不确定性高。 - 如何工作:网络被训练为对于熟悉的、有足够训练样本的输入,产生大的证据值(低不确定性);对于陌生或模糊的输入,则产生小的证据值(高不确定性),甚至退回到一个均匀的先验分布(表示“我不知道”)。
- 优势:EDL能自然地区分偶然不确定性和认知不确定性,并且特别擅长分布外检测。一个OOD样本通常会触发极低的证据值,从而被轻易识别。其实现在回归任务中也有对应版本,使用正态逆伽马分布作为共轭先验。
- 一个简单的分类EDL损失函数示意:
def edl_loss(alpha, target, kl_weight=0.1): # alpha: 网络输出的证据向量,shape [batch, num_classes] # target: one-hot编码的真实标签 S = torch.sum(alpha, dim=1, keepdim=True) # 总证据量 p = alpha / S # 期望概率 # 第一部分:分类损失(如交叉熵) ce_loss = F.cross_entropy(p, target.argmax(dim=1)) # 第二部分:KL散度损失,鼓励无证据时退回到均匀先验(alpha=1) # 这对应于狄利克雷分布 Dir(alpha) 与均匀先验 Dir([1,1,...,1]) 的KL散度 kl_div = torch.sum(torch.lgamma(S) - torch.sum(torch.lgamma(alpha), dim=1) + torch.sum((alpha - 1) * (torch.digamma(alpha) - torch.digamma(S.unsqueeze(1))), dim=1)) kl_loss = kl_weight * kl_div.mean() return ce_loss + kl_loss
4. 科学AI中的UQ实战:从分子到微分方程
将UQ应用于科学AI任务,不仅仅是技术移植,更需要考虑科学问题的特殊性:数据稀缺、高维、结构化,且通常受物理规律约束。
4.1 分子性质预测:UQ如何指导新药新材料发现
分子性质预测是科学AI的经典任务。UQ在这里的核心应用是优先筛选和主动学习。
场景:我们有一个训练好的模型,可以预测小分子与某个靶点蛋白的结合亲和力。现在有一个包含百万级化合物的虚拟库,我们需要筛选出最有潜力的几百个进行后续昂贵的实验验证。
传统做法:按预测结合力排序,选择Top-N。风险在于,模型可能对某些结构新颖的化合物做出过度自信的错误预测,导致漏掉真正有效的分子,或浪费资源在无效分子上。
UQ增强流程:
- 模型:采用具备UQ能力的模型(如GP、深度集成、BNN)对虚拟库中的所有分子进行预测,得到每个分子的预测结合力均值
μ和不确定性标准差σ。 - 采集函数:设计一个权衡“开发”与“探索”的采集函数。最常用的是上置信界:
UCB = μ + β * σ,其中β是一个可调参数,控制探索的积极性。 - 筛选:根据UCB分数对分子排序,选择分数最高的进行实验。高
μ意味着可能的高活性(开发),高σ意味着模型对该分子认知不足,值得探索。 - 迭代:将实验得到的新数据加入训练集,重新训练或更新模型,然后进行下一轮筛选。这个过程就是贝叶斯优化或主动学习的核心。
- 模型:采用具备UQ能力的模型(如GP、深度集成、BNN)对虚拟库中的所有分子进行预测,得到每个分子的预测结合力均值
研究实例:在多个分子性质预测基准测试中,高斯过程和深度集成往往在不确定性校准和OOD检测方面表现稳健。例如,有研究比较了MVE、MC Dropout、集成和GP在预测分子溶解度、毒性等任务上的表现,发现基于图神经网络特征训练的GP模型,其预测区间能很好地覆盖真实值,且不确定性估计与预测误差高度相关。
4.2 物理信息神经网络:为物理规律加上误差棒
PINN通过将物理方程(如PDE)作为正则项加入损失函数,来训练神经网络求解正/反问题。但PINN同样面临外推不准、对初边值条件敏感等问题。UQ可以帮助我们识别PINN解不可靠的区域。
挑战:PDE的解空间可能非常复杂,PINN的优化容易陷入局部极小,导致在某些区域解的质量很差,而模型本身并无察觉。
UQ集成方法:
- 集成PINN:训练多个PINN,使用不同的网络初始化、权重或残差点采样策略。解集合的方差可以直观显示哪些空间-时间区域PINN的解是稳定一致的(低方差,可信),哪些区域存在巨大分歧(高方差,不可信)。
- 贝叶斯PINN:将PINN的权重变为贝叶斯变量。在推理时,可以从后验中采样多个权重,得到多个解,同样通过方差量化不确定性。这能揭示由于训练数据(包括物理残差点)不足导致的认知不确定性。
- 后验校准:即使使用了UQ方法,其输出的不确定性尺度也可能需要校准。可以在已知精确解的少量验证点上,评估预测误差与估计不确定性之间的关系,并进行缩放调整。
一个简单的PINN集成不确定性可视化思路:
# 假设我们训练了5个PINN模型 models[0]...models[4] 来求解同一个PDE # 定义空间网格 x = np.linspace(0, 1, 100) t = np.linspace(0, 1, 100) X, T = np.meshgrid(x, t) inputs = np.stack([X.flatten(), T.flatten()], axis=1) predictions = [] for model in models: pred = model.predict(inputs) # 每个模型输出解u(x,t) predictions.append(pred.reshape(X.shape)) predictions = np.array(predictions) # shape: [5, 100, 100] mean_solution = np.mean(predictions, axis=0) std_solution = np.std(predictions, axis=0) # 解的标准差,即不确定性地图 # 绘制 plt.figure(figsize=(12,4)) plt.subplot(1,3,1) plt.contourf(X, T, mean_solution, levels=50) plt.title('Mean PINN Solution') plt.colorbar() plt.subplot(1,3,2) plt.contourf(X, T, std_solution, levels=50) plt.title('Uncertainty (Std Dev)') plt.colorbar() plt.subplot(1,3,3) # 假设我们有参考解或高精度数值解 # error = np.abs(mean_solution - reference_solution) # plt.contourf(X, T, error, levels=50) # plt.title('Absolute Error') # 通常会发现,高误差区域与高不确定性区域有很强的相关性通过这种可视化,计算域中哪些区域的解是可靠的(不确定性低),哪些需要警惕或进一步加密采样点,便一目了然。
4.3 图神经网络中的UQ:处理关系数据的不确定性
在材料科学和生物信息学中,分子、蛋白质、晶体常被表示为图。GNN是处理这类数据的利器,但其UQ面临独特挑战:不确定性不仅来自节点特征和模型权重,还可能来自图结构本身(边是否存在、边的类型)。
方法演进:
- Graph DropConnect:将MC Dropout的思想推广到图卷积的权重上,随机丢弃邻接矩阵中的连接,从而对图结构进行扰动采样,以估计不确定性。
- 贝叶斯图卷积网络:不仅对GNN的权重进行贝叶斯推断,还将观测到的图结构视为对真实潜在结构的噪声观测,并利用如混合成员随机块模型等对潜在图结构进行后验推断。这能同时量化模型和结构的不确定性。
- 变分图卷积网络:对图的邻接矩阵进行变分推断,学习一个概率化的图结构,提升模型对对抗性扰动的鲁棒性。
- 图后验网络:将EDL框架扩展到图节点分类任务,在节点层面输出证据和不确定性,被证明能有效检测OOD节点。
实操考量:为GNN添加UQ,计算开销会显著增加,因为每次前向传播可能涉及随机的图结构。在实际应用中,需要根据任务对不确定性的精细度要求和计算预算进行权衡。对于大规模图,最后一层贝叶斯或MC Dropout这类轻量级方法可能是更实用的起点。
5. 评估、挑战与未来方向:UQ的“测不准”与“道阻且长”
为UQ方法本身制定评估标准,是一个元问题,却至关重要。我们不能仅仅因为一个模型输出了一个方差值就相信它。
5.1 如何评估不确定性估计的好坏?
一个好的不确定性估计应该具备以下属性:
- 校准性:估计的90%置信区间,应该恰好覆盖约90%的真实值。如果覆盖不足,说明模型过于自信;如果过度覆盖,说明模型过于保守。常用评估指标有预期校准误差和可靠性曲线。
- 锐度:在保证校准的前提下,预测区间应该尽可能窄。一个总是输出
(-∞, +∞)作为区间的模型是完美校准的,但毫无用处。锐度衡量了不确定性估计的“信息量”。 - 与误差的相关性:对于回归任务,预测的不确定性(如标准差)应该与预测的绝对误差高度正相关。模型在犯错大的地方,应该自知“心里没底”。
- 分布外检测能力:模型对OOD样本应该给出显著高于分布内样本的不确定性。可以用AUROC等指标来衡量模型区分ID和OOD样本的能力。
常见评估任务与指标速查表:
| 评估维度 | 核心问题 | 常用指标/方法 |
|---|---|---|
| 校准性 | 置信区间/水平是否与真实频率匹配? | 预期校准误差、可靠性图、负对数似然 |
| 锐度 | 预测区间是否过于宽泛? | 预测区间的平均宽度、锐度得分 |
| 误差相关性 | 不确定性是否在模型犯错时更高? | 不确定性 vs. 绝对误差的秩相关系数(如斯皮尔曼系数) |
| OOD检测 | 能否识别训练分布外的样本? | AUROC、AUPRC、FPR@95%TPR |
| 下游任务提升 | UQ是否改善了主动学习、贝叶斯优化等? | 主动学习曲线下的面积、贝叶斯优化找到最优解的速度 |
5.2 当前挑战与开放问题
尽管UQ领域进展迅速,但在科学AI的实践中仍面临严峻挑战:
- 没有“银弹”:大量基准研究表明,没有一种UQ方法能在所有任务、所有评估指标上 consistently 超越其他方法。GP在数据量少时表现优雅但扩展性差;深度集成效果稳健但计算成本高;MC Dropout方便但可能低估不确定性;BNN理论优美但推断困难。方法选择严重依赖于具体任务、数据规模和计算资源。
- 计算可扩展性:科学AI模型正变得越来越大(如用于蛋白质结构的AlphaFold系列模型)。大多数精确的贝叶斯推断方法无法扩展到数十亿参数。开发既能保持高质量不确定性估计,又能与大规模模型训练兼容的高效近似算法,是迫切需求。基于子空间推断、随机梯度朗之万动力学等方向是当前的研究热点。
- 融入领域知识:现有的UQ方法大多是通用的,未能充分融入物理、化学等领域的先验知识。例如,在求解PDE时,不确定性估计是否应满足某些对称性?在分子建模中,不确定性是否应与分子的稳定性或反应活性相关?开发领域感知的UQ方法,将物理约束或化学规则作为先验注入不确定性模型,是一个充满潜力的方向。
- 基准与标准化缺失:科学AI领域缺乏统一的、具有挑战性的UQ基准测试集和评估协议。许多研究在自己的小数据集上验证,结果难以横向比较。构建基于高保真模拟数据(如大规模DFT计算、高精度CFD模拟)的基准,并制定涵盖校准性、锐度、OOD检测等多维度的标准评估流程,对领域发展至关重要。
5.3 给实践者的建议:如何开始?
如果你正准备在你的科学AI项目中引入UQ,以下是一个循序渐进的建议:
- 从简单开始:不要一开始就追求最复杂的贝叶斯方法。首先尝试深度集成(哪怕只是2-3个模型)或MC Dropout。它们实现简单,能快速给你一个不确定性估计的基线感受。计算一下预测不确定性与验证集误差的相关性,画个可靠性图,看看你的模型是否过度自信。
- 明确你的核心需求:问自己:我需要UQ主要用来做什么?是筛选高潜力样本(主动学习)?是评估模型在新场景下的风险(OOD检测)?还是为最终决策提供置信区间(如药物剂量预测)?不同的目标可能对应不同的评估重点和方法偏好。
- 选择合适的工具:根据你的模型框架(PyTorch/TensorFlow/JAX)和任务类型,选择成熟的库。例如,PyTorch有
torch-uncertainty库,TensorFlow Probability提供了强大的贝叶斯层。对于高斯过程,GPyTorch或scikit-learn是不错的起点。 - 迭代与验证:UQ不是一劳永逸的。将UQ集成到你的工作流中,例如,用不确定性来指导下一轮数据采集。在每次迭代中,验证不确定性估计是否如预期般工作(例如,在新标注的数据上,高不确定性的样本是否确实预测误差更大?)。
- 保持怀疑:始终记住,UQ方法本身也是模型,其输出的“不确定性”本身也有不确定性。对UQ的结果进行交叉验证,并结合领域专家的直觉进行判断。在关键决策上,不要完全依赖模型的置信区间。
不确定性量化不是让预测变得模糊,而是让模糊变得清晰可见。它是在复杂且数据稀缺的科学探索中,为AI模型点亮的一盏“探照灯”,不仅照亮前路,也清晰地标出黑暗的边界。