尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

AI不确定性推理实战:从贝叶斯原理到大模型置信度评估

AI不确定性推理实战:从贝叶斯原理到大模型置信度评估 1. 为什么“不确定性推理”成了 AI 的下一个关键问题过去两年大语言模型的能力有目共睹能写代码、能做总结、能多轮对话、能调用工具。但在实际落地时很多人会发现一个尴尬情况——模型在完全不知道答案的时候也会一本正经地给出一个错误结果。这种现象在 AI 领域被称为“幻觉”Hallucination它的本质其实是模型对自己的“无知”缺乏感知。DeepMind 副总裁在一次技术分享中明确提出下一代 AI 系统的核心竞争力不只是“更能答”而是“知道自己在多大程度上不确定”。这句话点出了当前大模型落地困境的核心AI 需要从“给出答案”进化到“给出带置信度的答案”。不确定性推理Uncertainty Reasoning并不是一个新概念它在贝叶斯统计、机器人控制、自动驾驶、强化学习中都有长期积累。但把它和大语言模型结合在一起用于衡量模型输出的可信度、帮助系统决定“什么时候该回答、什么时候该拒绝、什么时候该求助”正是当前 AI 工程化最缺的一环。本文将从概念拆解、数学基础、代码实现、工程实践四个维度完整介绍 AI 不确定性推理。2. 什么是不确定性推理2.1 不确定性的来源要理解不确定性推理先要理解不确定性来自哪里。一般来说AI 系统中的不确定性可以分为两大类。第一类是偶然不确定性Aleatoric Uncertainty也叫数据不确定性。它来自数据本身的随机性比如明天是否下雨、传感器噪声、用户下一句话会说什么。这类不确定性即使增加更多数据也无法完全消除只能通过概率分布来描述。第二类是认知不确定性Epistemic Uncertainty也叫模型不确定性。它来自模型知识的不足比如训练数据没有覆盖某个罕见场景、模型参数没有被充分学习。这类不确定性可以通过增加数据、改进模型来降低。对 LLM 来说还有一类比较特殊的不确定性来源参数不确定性和推理路径不确定性。同一个提示词模型在不同采样温度下可能生成不同答案同一个问题思维链不同结果也可能不同。这种不确定性在工程上表现得非常明显。2.2 不确定性推理要解决什么问题不确定性推理的目标用一句话概括就是让模型能够估计并表达自己对当前输出的置信程度并基于这种置信度做出更安全的决策。具体到应用场景包括医疗辅助诊断中模型应在证据不足时输出“不确定建议进一步检查”而不是强行给出结论。自动驾驶中感知模块在低置信度时应触发安全兜底策略而不是继续按默认路径行驶。客服机器人中当问题超出知识库范围时应转人工而不是编造答案。代码生成工具中当模型对 API 用法不确定时应提示用户验证而不是直接给出可能错误的代码。2.3 不确定性不等于“我不知道”这里需要特别区分一个概念模型说“我不知道”和模型真正量化自己的不确定性是完全不同的两件事。“我不知道”可以是一个规则、一个关键词触发比如识别到“不确定”“我不清楚”“请咨询专业人士”等字眼。但这种方式非常脆弱模型在很自信的时候也可能输出“我不确定”在完全胡编的时候反而可能语气坚定。真正的不确定性推理要求模型内部产生可数值化的置信度指标例如一个概率值、一组概率分布、多个采样结果的离散程度。这个指标可以被程序读取、比较、设置阈值从而自动化地决定行为。3. DeepMind 观点中的核心方法论DeepMind 副总裁在分享中谈到几个关键方法论我结合自己实际项目经验做一些展开解读。3.1 把不确定性分层一个完整的 AI 系统通常由多个模块组成输入理解、检索、推理、生成、工具调用等。传统做法是只在最终输出层做置信度判断但 DeepMind 的观点是——不确定性应该分层管理。例如一个 RAG检索增强生成系统的不确定性来源包括检索模块是否找到了相关内容检索到的内容与问题是否相关生成模型对检索内容的利用程度如何生成结果内部是否自洽如果你只对最终答案做一次置信度判断就很难定位问题出在哪个环节。比较好的工程实践是在每个关键环节都输出一个不确定性指标形成一条“不确定性传递链”最终由决策模块综合判断。3.2 从“点估计”走向“分布估计”传统神经网络输出的是一个确定性的数值或概率分布比如分类任务输出 softmax 概率。但 softmax 概率并不等于模型的真实置信度这是深度学习领域一个非常重要、也常被忽视的问题。DeepMind 强调的方向是模型应该输出对参数的分布估计而不是单一的点估计。具体到深度学习实现中常见的方法包括Monte Carlo Dropout在推理阶段多次开启 Dropout统计多次输出的方差。Deep Ensemble训练多个模型用多个模型的预测分布来衡量不确定性。Bayesian Neural Network对网络权重假设先验分布通过变分推断近似后验分布。这些方法在传统深度学习任务中已经比较成熟现在被越来越多地引入 LLM 的推理流程中。3.3 与决策机制解耦DeepMind 还提到一个很有意思的观点模型输出的不确定性信息应该与下游决策机制解耦。意思是模型只负责提供一个可靠的置信度估计至于“置信度低于多少要转人工”“低于多少要拒绝回答”这些应该由产品策略和业务规则决定而不是模型本身来判断。这个观点在实际工程中非常重要。不同业务场景对置信度的容忍度完全不同。医疗场景可能要求 99% 以上才能给出结论而闲聊场景 60% 置信度也足够。如果把决策硬编码在模型里每次业务调整都要重新训练模型成本太高。4. 不确定性推理的数学基础4.1 贝叶斯视角不确定性推理的数学根基是贝叶斯公式P(θ|D) P(D|θ) × P(θ) / P(D)其中P(θ) 是参数的先验分布表示在看到数据之前对参数的判断。P(D|θ) 是似然函数表示在给定参数下当前数据出现的概率。P(θ|D) 是后验分布表示看到数据之后对参数的更新。在实际深度学习场景中直接计算后验分布几乎是不可能的因为参数空间太大。因此工程上主要依赖近似方法比如变分推断、蒙特卡洛采样等。4.2 校准Calibration不确定性推理的结果好不好一个关键指标是“校准程度”。校准指的是模型预测的置信度与真实正确率是否一致。举个例子如果模型对 100 个样本给出 80% 置信度那这 100 个样本中应该有大约 80 个预测正确。如果实际只有 60 个正确说明模型过于自信过校准如果实际有 90 个正确说明模型过于保守欠校准。常用评估指标是 Expected Calibration ErrorECE计算方式是把预测置信度分成若干区间然后比较每个区间的平均置信度与真实准确率的差异。4.3 熵与互信息在信息论中熵Entropy是衡量不确定性的经典指标。对一个概率分布 p熵定义为H(p) -Σ p(x) log p(x)熵越大说明分布越平坦结果越不确定。在分类任务中softmax 输出的熵可以直接作为不确定性指标。互信息Mutual Information衡量两个变量之间的相互依赖程度。在贝叶斯主动学习中互信息常用来衡量“获取某个数据点能为模型带来多少新信息”。5. 完整实战用 Python 实现一个不确定性推理示例接下来我们通过一个完整的代码示例演示如何在实际项目中量化模型的不确定性。我们选择图像分类任务作为示例因为它的数据直观、效果容易验证。5.1 环境准备本文示例使用以下环境Python 3.9PyTorch 2.0torchvisionscikit-learnmatplotlib安装命令pip install torch torchvision scikit-learn matplotlib注意PyTorch 安装命令会根据操作系统、CUDA 版本有所不同请参考 PyTorch 官网获取对应安装命令。CPU 版本同样可以运行本文示例。5.2 创建项目结构uncertainty-demo/ ├── data/ ├── models/ ├── utils/ ├── train.py ├── evaluate_uncertainty.py └── calib_curve.py5.3 训练一个基础分类模型先写一个简单的 CNN 分类模型用于在 MNIST 数据集上分类。文件路径models/cnn.pyimport torch.nn as nn class SimpleCNN(nn.Module): def __init__(self, num_classes10): super().__init__() self.features nn.Sequential( nn.Conv2d(1, 32, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(2), nn.Conv2d(32, 64, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(2), ) self.classifier nn.Sequential( nn.Flatten(), nn.Linear(64 * 7 * 7, 128), nn.ReLU(), nn.Dropout(0.5), nn.Linear(128, num_classes), ) def forward(self, x): return self.classifier(self.features(x))文件路径train.pyimport torch import torch.nn as nn from torch.utils.data import DataLoader from torchvision import datasets, transforms from models.cnn import SimpleCNN device torch.device(cuda if torch.cuda.is_available() else cpu) print(fUsing device: {device}) transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) train_dataset datasets.MNIST( root./data, trainTrue, downloadTrue, transformtransform ) test_dataset datasets.MNIST( root./data, trainFalse, downloadTrue, transformtransform ) train_loader DataLoader(train_dataset, batch_size64, shuffleTrue) test_loader DataLoader(test_dataset, batch_size256, shuffleFalse) model SimpleCNN().to(device) criterion nn.CrossEntropyLoss() optimizer torch.optim.Adam(model.parameters(), lr0.001) def train_one_epoch(): model.train() total_loss 0 for images, labels in train_loader: images, labels images.to(device), labels.to(device) optimizer.zero_grad() outputs model(images) loss criterion(outputs, labels) loss.backward() optimizer.step() total_loss loss.item() return total_loss / len(train_loader) for epoch in range(5): loss train_one_epoch() print(fEpoch {epoch 1}, Loss: {loss:.4f}) torch.save(model.state_dict(), mnist_cnn.pth) print(Training complete.)这个示例展示了最基础的训练流程。需要注意的重点是model.train()模式下 Dropout 层是开启的这为后面的 Monte Carlo Dropout 提供了便利。5.4 实现 Monte Carlo Dropout 不确定性估计Monte Carlo Dropout 的核心思想是推理时也保持 Dropout 开启多次前向传播得到多个预测结果用这些结果的均值作为最终预测用方差或熵作为不确定性估计。文件路径evaluate_uncertainty.pyimport numpy as np import torch import torch.nn.functional as F from torchvision import datasets, transforms from models.cnn import SimpleCNN device torch.device(cuda if torch.cuda.is_available() else cpu) transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) test_dataset datasets.MNIST( root./data, trainFalse, downloadTrue, transformtransform ) test_loader torch.utils.data.DataLoader( test_dataset, batch_size256, shuffleFalse ) model SimpleCNN().to(device) model.load_state_dict(torch.load(mnist_cnn.pth, map_locationdevice)) def mc_dropout_predict(model, images, num_samples30): 使用 MC Dropout 进行多次前向传播返回平均概率和不确定性指标。 model.train() # 保持 Dropout 开启 predictions [] with torch.no_grad(): for _ in range(num_samples): logits model(images) probs F.softmax(logits, dim1) predictions.append(probs.cpu().numpy()) predictions np.stack(predictions) # shape: (num_samples, batch_size, num_classes) mean_probs predictions.mean(axis0) # 用预测熵衡量不确定性 entropy -np.sum(mean_probs * np.log(mean_probs 1e-12), axis1) # 用多次预测的方差衡量不确定性 variance predictions.var(axis0).sum(axis1) return mean_probs, entropy, variance def evaluate(): model.train() # 评估阶段也开启 dropout correct 0 total 0 all_entropies [] for images, labels in test_loader: images, labels images.to(device), labels.to(device) mean_probs, entropy, variance mc_dropout_predict(model, images) predicted mean_probs.argmax(axis1) correct (predicted labels.cpu().numpy()).sum() total labels.size(0) all_entropies.extend(entropy.tolist()) accuracy correct / total print(fAccuracy: {accuracy:.4f}) print(fMean Entropy: {np.mean(all_entropies):.4f}) if __name__ __main__: evaluate()这个示例的核心在于在推理阶段设置model.train()模式让 Dropout 层继续随机丢弃神经元。每次前向传播实际上是在采样一个不同的“子模型”多次采样的统计结果就可以用来估计不确定性。如果某个样本的熵很高接近均匀分布说明模型对它的预测没有信心反之如果熵很低某个类别的概率接近 1说明模型比较确定。5.5 温度缩放Temperature Scaling温度缩放是一种非常经典且实现简单的置信度校准方法。它的原理是在 softmax 之前将 logits 除以一个温度系数 Tsoftmax(z_i / T)当 T 1 时输出分布变得更平坦当 T 1 时输出分布变得更尖锐。温度系数在验证集上进行优化目标是让模型的置信度与实际准确率更一致。文件路径calib_curve.pyimport numpy as np import torch import torch.nn.functional as F from torchvision import datasets, transforms from models.cnn import SimpleCNN device torch.device(cuda if torch.cuda.is_available() else cpu) transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) calib_dataset datasets.MNIST( root./data, trainTrue, downloadTrue, transformtransform ) calib_loader torch.utils.data.DataLoader( calib_dataset, batch_size1024, shuffleFalse ) model SimpleCNN().to(device) model.load_state_dict(torch.load(mnist_cnn.pth, map_locationdevice)) model.eval() logits_list [] labels_list [] with torch.no_grad(): for images, labels in calib_loader: images images.to(device) logits model(images) logits_list.append(logits.cpu().numpy()) labels_list.append(labels.numpy()) logits_all np.concatenate(logits_list) labels_all np.concatenate(labels_list) def optimize_temperature(logits, labels): 通过最小化负对数似然来搜索最优温度系数。 logits_tensor torch.tensor(logits, dtypetorch.float32) labels_tensor torch.tensor(labels, dtypetorch.long) temperature torch.nn.Parameter(torch.tensor(1.0)) optimizer torch.optim.LBFGS([temperature], lr0.01, max_iter50) def eval_loss(): optimizer.zero_grad() scaled_logits logits_tensor / temperature loss F.cross_entropy(scaled_logits, labels_tensor) loss.backward() return loss optimizer.step(eval_loss) return temperature.item() T optimize_temperature(logits_all, labels_all) print(fOptimal temperature: {T:.4f})运行这个脚本后会得到一个最优温度值。在推理阶段只需要将模型的 logits 除以该温度再计算 softmax即可得到校准后的置信度。5.6 绘制校准曲线校准曲线是评估模型置信度是否准确的最直观工具。横轴是模型预测的置信度纵轴是实际正确率。理想情况下校准曲线应该沿对角线分布。import matplotlib.pyplot as plt import numpy as np def draw_calibration_curve(confidences, correct, num_bins10): 绘制校准曲线。 bin_edges np.linspace(0, 1, num_bins 1) bin_centers (bin_edges[:-1] bin_edges[1:]) / 2 accuracies [] proportions [] for i in range(num_bins): in_bin (confidences bin_edges[i]) (confidences bin_edges[i 1]) if np.sum(in_bin) 0: accuracies.append(np.mean(correct[in_bin])) proportions.append(np.mean(in_bin)) else: accuracies.append(0) proportions.append(0) plt.figure(figsize(8, 6)) plt.plot([0, 1], [0, 1], linestyle--, colorgray, labelPerfect Calibration) plt.plot(bin_centers, accuracies, markero, labelModel Calibration) plt.xlabel(Confidence) plt.ylabel(Accuracy) plt.title(Calibration Curve) plt.legend() plt.show()使用方式# 在 temperature scaling 之后 T 1.2 # 假设优化得到的最优温度 with torch.no_grad(): model.eval() confidences_list [] correct_list [] for images, labels in test_loader: images images.to(device) logits model(images) / T probs F.softmax(logits, dim1) confidence, predicted probs.max(dim1) confidences_list.extend(confidence.cpu().numpy()) correct_list.extend((predicted labels.to(device)).cpu().numpy()) draw_calibration_curve( np.array(confidences_list), np.array(correct_list), )这个示例同时展示了校准曲线的绘制方法。在实际项目中校准曲线应该成为每个模型发布前的标准检查项。6. 大语言模型中的不确定性估计6.1 LLM 不确定性估计的难点把不确定性推理应用到 LLM 上比传统分类任务复杂得多。主要难点包括输出是开放式的文本而不是固定的类别标签。生成结果的长度不同难以直接计算概率。同一个问题可以有多种正确表达方式不能简单地用“是否一致”来判断正确性。模型内部的 logits 并不完全可信存在过度自信的问题。因此针对 LLM 的不确定性估计业界提出了一系列专门的方法。6.2 基于采样的不确定性估计这是目前最简单、最容易落地的方法。核心思路是让模型在相同提示词下采样 N 次然后统计 N 次输出之间的一致性和概率特性。具体实现可以这样设计from transformers import AutoModelForCausalLM, AutoTokenizer import torch model_name your-model-path tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name) prompt 中国的首都是哪个城市 inputs tokenizer(prompt, return_tensorspt) num_samples 5 outputs [] for _ in range(num_samples): with torch.no_grad(): output_ids model.generate( **inputs, max_new_tokens50, do_sampleTrue, temperature0.7, top_p0.9, pad_token_idtokenizer.eos_token_id ) output_text tokenizer.decode(output_ids[0][inputs[input_ids].shape[1]:], skip_special_tokensTrue) outputs.append(output_text) print(outputs)对多次采样结果可以计算语义熵Semantic Entropy先将生成结果进行语义聚类再利用聚类结果的概率计算熵。如果 5 次采样结果都属于同一语义簇说明模型非常确定如果分散在多个语义簇说明模型不确定。自我一致性Self-Consistency对多次输出做两两相似度计算相似度越低不确定性越高。Token 概率平均值对每次输出计算每个 token 概率的几何平均再对多次采样取均值。6.3 基于 Token 概率的不确定性另一种思路是直接利用生成过程中的 token 概率。当模型对某个 token 的预测概率分布非常平坦时说明它在这个位置上没有把握。例如生成下一个 token 时前三个候选概率分别是 0.34、0.33、0.33这时模型几乎没有区分度不确定性极高。with torch.no_grad(): outputs model(**inputs) logits outputs.logits[0, -1, :] # 最后一个 token 位置的 logits probs torch.softmax(logits, dim-1) top_probs, top_indices torch.topk(probs, k5) print(Top 5 token probabilities:) for prob, idx in zip(top_probs, top_indices): token tokenizer.decode([idx]) print(f {token}: {prob.item():.4f})如果 top1 概率明显大于其他说明模型在这个位置比较确定如果 top1 和 top2 概率非常接近说明模型处于犹豫状态。6.4 基于提出自身不确定性的微调方法更高级的做法是在训练阶段引入“不确定性感知”机制。例如在训练数据中扩充“不确定性表达”样本让模型学会在信息不足时输出类似“我不确定需要更多上下文”的答案。使用强化学习对齐让模型在给出错误答案时受到惩罚而承认不确定性时获得奖励。引入工具的“拒绝选项”让模型可以输出“无法回答”而不是强行生成结果。这一方向的代表思想是 DeepMind 提出的“决策级分离”模型提供不确定性信号策略层决定是否回答、是否转人工、是否调用工具。这种架构能够大幅提升 AI 系统在真实业务中的可靠性。7. 常见问题与排查思路7.1 不确定性指标与实际准确率不对应问题现象常见原因解决思路高置信度样本仍然大量预测错误模型过拟合softmax 过度自信使用温度缩放进行校准引入 MC Dropout 作为辅助指标不确定性指标波动很大采样次数不足增加 MC Dropout 的采样次数到 30-50 次不同不确定性指标结果矛盾熵和方差衡量维度不同综合分析多个指标结合具体业务场景选取主要指标7.2 MC Dropout 推理速度太慢MC Dropout 需要多次前向传播推理耗时约为原来的 N 倍。解决方法包括减少采样次数从 30 次降到 15 次观察指标稳定性。使用批量推理将多个采样合并为一个大 batch 前向传播。对不确定性指标做近似估计只在关键样本上做完整 MC Dropout。7.3 LLM 多次采样结果都是相同的错误答案如果 5 次采样结果高度一致但都是错的说明模型的“错误”具有系统性和确定性不确定性估计方法无法解决这个问题。排查方向检查 prompt 本身是否包含误导性信息。检查检索增强时检索到的上下文是否本身质量偏低。考虑使用更大的模型或重新构造训练数据。7.4 温度缩放后准确率下降温度缩放只改变置信度数值不改变预测类别因此理论上不影响准确率。如果实际测试中准确率下降通常是数据划分出了问题——温度系数应该只在独立的验证集上优化不能使用测试集。7.5 不确定性估计的评估指标怎么选评估不确定性估计质量时需要关注的指标ECEExpected Calibration Error衡量校准程度。Brier Score衡量概率预测的均方误差。AUC-ROC在“是否选择回答”的二分类任务中衡量不确定性作为特征的有效性。Coverage vs Risk在接受多少比例的样本时能达到多低的错误率。8. 最佳实践与工程建议8.1 分层设计不确定性系统在实际工程中建议不要只依赖单一的不确定性指标。推荐按下面的层次设计第一层输入层面检测输入是否属于模型熟悉的数据分布比如用嵌入向量的距离判断输入是否 OODOut-of-Distribution。第二层模型层面使用 MC Dropout、深度集成等方法估计模型内部的认知不确定性。第三层输出层面对最终输出进行语义一致性检查结合多个采样结果判断是否可信。第四层决策层面根据业务规则设置不同置信度下的处理策略。8.2 建立置信度阈值体系每个业务都应该有一套自己的置信度阈值。例如置信度 0.95正常返回答案。0.80 ~ 0.95返回答案但附带“仅供参考”提示。0.60 ~ 0.80转人工同时把模型预测结果作为辅助建议。 0.60不返回结果要求用户提供更多信息。这些阈值需要根据线上效果持续调整并不存在一个“万能阈值”。8.3 将校准检查纳入模型发布流程建议在模型发布流程中加入以下检查项在所有评估集上计算 ECE。绘制校准曲线并人工检查。在关键业务子集上单独检查校准效果比如冷门类别、长尾样本。对比不同版本模型的校准表现确保校准效果不退化。8.4 记录不确定性指标用于线上监控不要只在离线评估时计算不确定性线上推理时也要记录。具体做法每次推理都记录置信度、熵、采样次数。定期统计置信度分布与用户反馈点赞、点踩、转人工率之间的关系。如果发现高置信度样本的投诉率上升说明模型校准出现漂移需要及时排查。这一套机制能帮助你提前发现模型退化的苗头而不是等到用户大量投诉后才被动响应。8.5 安全底线与合规提醒在医疗、金融、法律等高风险场景中部署带不确定性推理的 AI 系统时必须明确模型输出的置信度只能作为辅助决策参考。对于不确定性较高的结果必须有明确的人工兜底流程。在系统设计上预留“拒绝服务”选项而不是强制模型必须回答所有问题。涉及用户数据的场景需要保证数据处理的合法合规遵循最小必要原则。9. 一些可以直接使用的排查清单当你在项目中实现不确定性推理时遇到问题可以按以下清单逐一排查。第一先确认你的模型基础表现是否正常。一个准确率本身就很低的模型讨论不确定性没有意义。第二检查你使用的指标是否与任务匹配。分类任务可以用 softmax 概率、熵回归任务通常用预测方差生成任务更多依赖采样一致性和语义熵。第三确认校准数据集与测试集是否严格分离。温度缩放参数不该从测试集上学习。第四观察不确定性分布是否符合直觉。比如噪声大的样本、类别重叠严重的样本应该表现出更高的不确定性。第五避免过度依赖单一阈值。固定阈值很容易在数据分布漂移后失效建议定期重算置信度分布。10. 总结为什么“不确定性推理”值得你花时间学习从模型能力角度来看大模型已经足够强大真正拉开差距的是“可靠性”。不确定性推理提供了衡量可靠性的一套理论工具和工程方案让 AI 系统从“看起来聪明”变成“用起来安全”。如果你目前正在做 LLM 应用开发并且遇到了这些情况——模型经常幻觉、不敢把模型输出直接放到生产环境、无法判断模型什么时候会出错——那么不确定性推理正是你需要补上的那一课。你可以从最简单的入口开始给自己训练的模型加上 MC Dropout 推理计算一次校准曲线跑一次温度缩放。这些代码通常不需要超过一百行却能让你对模型的“自信程度”有完全不同的感知。建议下一步的学习路线是先掌握贝叶斯思维基础再深入理解校准理论和评估指标然后动手实践 MC Dropout、深度集成接着尝试 LLM 的语义熵估计最后结合业务场景设计完整的置信度决策体系。
返回列表