想象你在一间完全漆黑的房间里,想要摸清一头大象的样子。你只有一只手电筒,但电筒时好时坏——每次打开,只能照亮大象的一个局部:这次照到粗壮的腿,下次照到扇子般的耳朵,再下次照到长长的鼻子。你是不是会这样想:与其只信一次闪光的结果,不如反复开关手电筒,把每次看到的部分拼在一起,综合判断大象的全貌?而如果十次闪光里,有八次你摸到的是“柱子”、只有两次是“扇子”,你心里大概就有数:这头大象的腿很粗壮,但耳朵的样子不太确定。 这正是 Monte Carlo Dropout(MC Dropout)的核心思想。在深度学习里,模型预测时通常会“自信满满”地给出一个答案,但它其实并不知道自己什么时候在胡说。MC Dropout 的做法很简单:预测时故意打开“随机丢弃”开关(也就是训练时用的 Dropout),让模型像那只时好时好的手电筒一样,多次前向传播,得到一批不同的结果。对这些结果取平均,能提升预测精度;看看它们之间的差异(方差),就能估计模型的不确定性。 这篇文章将用这个“黑屋摸象”的比喻,带你从零理解 MC Dropout 的原理、它与普通 Dropout 的区别、如何用它做不确定性估计、需要采样多少次,以及如何用代码实现。读完你就掌握了一个让模型“知道自己不知道”的利器。
对 AI 从业者而言,掌握 MC Dropout 意味着你无需改造模型结构,就能为任意神经网络附加“可信度仪表盘”,在医疗诊断、自动驾驶、金融风控等高风险场景中判断模型何时该“闭嘴说不知道”,这是从“能用”迈向“可信赖”的关键技能。
目录
可视化演示
动态演示Monte Carlo Dr的核心机制,通过概览/流程/对比/趋势四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Monte Carlo Dr:Mont Monte Carlo Dro MC Dropout 与标准 核心机制可视化 Monte Carlo Dr整体架构与关键组件
Dropout 随机丢弃:训练时的“随机熄灯”
回到黑屋摸象的场景。假设你不是一个人摸象,而是一支由十个人组成的队伍,大家手拉手围住大象。如果十个人总是站得整整齐齐、各自负责固定位置,那么一旦有一个人走神或看错,整个判断就可能被带偏。但如果每次摸象前,队伍都随机抽走两三个人,让剩下的人重新分工配合,反复多次之后,这支队伍就会变得非常稳健——因为每个成员都适应过“缺了谁都能干活”的局面。
这就是 Dropout 的设计哲学。在训练神经网络时,每次前向传播都随机“熄灭”一部分神经元(通常比例是 20%~50%),让剩下的神经元独立完成预测。这样一来,网络不能过度依赖某几个“明星神经元”,而必须学会分布式地协作,从而有效缓解过拟合——就像那支队伍不再依赖任何特定成员一样。
在标准用法中,模型训练完部署到线上时,Dropout 会被关闭——因为此时你希望模型用“全部智力”来做判断。这相当于摸象队伍在正式回答问题时全员到齐、全力以赴。
- 掩码采样每次前向传播都独立采样一个二值掩码,决定哪些神经元被保留
- 逐元素相乘将掩码与输入逐元素相乘,被熄灭的神经元输出变为 0,不参与本次计算
- 前向传播被“瘦身”后的网络照常完成前向计算,输出预测结果
MC Dropout 原理:推理时故意“留一盏灯”
现在到了关键转折:正式判断时,摸象队伍应该全员到齐,但 MC Dropout 偏偏反其道而行——它要求你在推理时也“故意”随机抽走几个人,让队伍以不完整的状态去摸象,而且要多摸几次。
为什么这么做?因为 Dropout 在训练时引入的随机性,实际上等价于对神经网络权重的一种“贝叶斯扰动”。学术上已经证明(Gal & Ghahramani, 2016),在推理时保持 Dropout 开启,多次前向传播得到的结果,近似于从贝叶斯后验分布中采样。简单说:每次“随机熄灯”后的网络,都像是从“可能的模型家族”中随机抽出一个成员;多次采样,你就得到了这个家族的全家福。
所以 MC Dropout 的精髓可以概括为八个字:推理开灯,多次平均。这不是什么复杂的数学魔法,而是把 Dropout 从“训练期的正则化工具”升级为“推理期的不确定性度量工具”——你什么都不用额外训练,只是改变了使用方式。
- 独立采样掩码每次前向传播都独立采样一个 Dropout 掩码,模拟从模型分布中抽一个样本
- 单次预测把当前掩码作用于网络,得到一个预测结果
- 平均聚合将所有 \(T\) 次预测取平均,得到最终预测——这近似于贝叶斯推断中的后验期望
不确定性估计:模型知道自己不知道
摸象队伍摸了十次,如果十次得出的腿围几乎一模一样(比如都在 1.2 米 ± 2 厘米),你会非常有信心地说“这头大象的腿很粗”;但如果十次结果差异巨大——有人摸到柱子、有人摸到扇子、有人摸到绳子——你就该意识到:我的判断不太靠谱,需要再摸几次,或者换个角度。
这就是不确定性的直觉定义:多次尝试结果的一致程度。在机器学习中,不确定性分为两类。偶然不确定性(Aleatoric Uncertainty) 来自数据本身的噪声——比如照片太模糊、传感器有干扰,这种不确定性即使模型完美也无法消除;认知不确定性(Epistemic Uncertainty) 来自模型知识的不足——比如训练数据里没有出现过类似样本,这种不确定性可以通过增加数据或改进模型来降低。
MC Dropout 的方差主要度量的是认知不确定性,因为它源于“随机熄灯”后不同网络子结构给出的分歧——分歧越大,说明模型对当前输入越“没把握”。
有了这个不确定性分数,你的模型就像装了一个“信心仪表盘”:分数低,大胆用模型的预测;分数高,转而求助人类专家或触发兜底策略。这对医疗辅助诊断、自动驾驶感知、金融风控等场景极其宝贵。
- 计算均值先对所有采样预测求平均,作为“最可能答案”
- 逐样本偏差每个采样预测与均值相减,得到偏差
- 平方平均将偏差平方后平均,得到方差——这就是不确定性分数
多次前向传播:从“一次定论”到“百家争鸣”
在古代,帝王决策讲究“兼听则明”。如果皇帝只问一位大臣的意见,很容易被误导;但如果同时问十位大臣,大家独立给出判断,皇帝就能从共识中看出确定的部分、从分歧中看出风险。MC Dropout 的多次前向传播,正是“百家争鸣”的机器版本。
每次前向传播时,Dropout 掩码决定了哪些神经元“出席”、哪些“请假”。由于掩码是随机采样的,每次出席的神经元组合都不同——这相当于你每次召集一个不同的“专家委员会”。把委员会所有成员的答案汇总,你既得到了更稳健的集体智慧(平均),也得到了分歧程度的度量(方差)。
当然,这个过程的计算成本是单次推理的 \(T\) 倍。如果 \(T=20\),就相当于模型运行了 20 次才给出一个答案。在实时性要求高的场景(如自动驾驶每 100 毫秒需做出决策),你需要权衡采样次数与延迟预算。
在工程实践中,你通常不需要一次性把所有 T 个结果都算完再聚合——可以流式处理,每算完一个就更新均值和方差的累加器(Welford 算法),这样内存占用是常数级的。
- 重复采样重复 \(T\) 次“采样掩码 + 前向传播”,得到 \(T\) 个预测
- 聚合均值将 \(T\) 个预测取平均,得到最终预测——这比任何单次预测更稳定
- 聚合方差计算预测之间的离散程度,作为不确定性度量
采样次数经验:摸几次才够?
你可能会问:摸象到底要摸几次才能放心?是 5 次、50 次还是 500 次?答案是:取决于你对“放心”的定义。如果只是想得到一个大致靠谱的均值,10 次可能就够;但如果要精确估计方差、画出稳定的置信区间,通常建议 30~50 次。
从统计学的角度看,MC Dropout 的均值估计误差以 \(1/\sqrt{T}\) 的速度衰减——想多降低一倍的误差,需要多采集 4 倍样本。幸运的是,均值往往在 10~20 次后就已经相当稳定,方差则需要更多样本才能收敛。
实践中的经验法则是:回归任务 20 次够用,分类任务 30 次稳妥,高安全场景 50 次封顶——超过 50 次,收益微乎其微,而延迟成本直线上升。如果你的模型单次推理只需 1 毫秒,50 次也才 50 毫秒,完全可接受。
- 标准误定义均值的标准差等于原始方差除以采样次数的平方根
- 误差衰减要误差减半,即 \( \frac{\sigma}{\sqrt{T_{\text{new}}}} = \frac{1}{2} \cdot \frac{\sigma}{\sqrt{T_{\text{old}}}} \),解出 \(T_{\text{new}} = 4 \times T_{\text{old}}\)
精度提升效果:平均比单次更好?
摸着象腿的十个人,如果最后把各自的“腿围估计值”取平均,得到的数字会不会比任何单个人的估计都更准?直觉上是的——因为每个人的估计都有随机误差,而误差在平均过程中会部分抵消。这被称为“群体的智慧”(Wisdom of the Crowd)。
MC Dropout 也有类似效果。多次随机“熄灯”的预测取平均后,精度通常优于任意单次预测——其实这等效于训练了多个共享权重的子网络并对它们做集成(Ensemble),只是这些子网络之间高度相关。在某些数据集上,MC Dropout 能将准确率提升 0.5%~2%,并显著降低预测的“离谱程度”(即大误差出现的频率)。
不过要注意,MC Dropout 的集成并不是完全独立的子模型集成——所有子网络共享大部分权重,所以它们之间的相关性很高,方差缩减的效果远不如训练 \(T\) 个独立模型。但它的好处也正在于此:零额外训练成本。
- 方差分解将预测误差分解为偏差与方差之和,平均操作主要减小方差项
- 平均降方差多个不完全相关的预测取平均后,方差项按比例缩小
对比其他方法:为什么选择 MC Dropout?
既然 MC Dropout 的集成效果不如独立模型集成,那为什么还要用它?答案是:性价比。想象你是一家餐厅的老板,想知道自己招牌菜的品质是否稳定。方案 A 是聘请 10 位厨师每人做一道菜来品尝(深度集成 → 要训练 10 个模型,成本高);方案 B 是让同一位厨师反复做同一道菜 10 次来品尝(MC Dropout → 只有 1 个模型,但每次随机调整配料)。
方案 B 当然不如方案 A 的“多样性”丰富,但它的成本几乎为零——你只需要在推理时多跑几次同一个模型。相比之下,深度集成需要训练 \(M\) 个独立的模型,训练成本是原来的 \(M\) 倍,部署时还需要存储 \(M\) 份权重;贝叶斯神经网络(BNN)需要对权重进行变分推断,计算复杂度极高,在大规模模型上几乎不可行。
| 方法 | 额外训练成本 | 额外推理成本 | 部署复杂度 | 不确定性质量 |
|------|------------|------------|-----------|------------|
| 普通网络 + Softmax | 无 | 无 | 低 | 差(过度自信) |
| 深度集成 | \(M\) 倍训练 | \(M\) 倍推理 | 高(存 M 份权重) | 好 |
| 贝叶斯神经网络 | 高(变分推断) | 高 | 高 | 好 |
| MC Dropout | 零 | T 倍推理 | 低(一份权重) | 良好 |
上表清晰展示了 MC Dropout 的定位:它用“多跑几次”换来了“零训练成本”和“低部署复杂度”,是实践中性价比最高的不确定性估计方案之一。
Python 实践应用:动手实现 MC Dropout
理解了原理,下面用 PyTorch 实现一个完整的 MC Dropout 推理流程。假设我们有一个在 CIFAR-10 上训练好的带 Dropout 的 CNN 模型,现在要对一张图片做预测并估计不确定性。
代码用途:这段代码演示了 MC Dropout 的标准推理流程——将模型切换到 train 模式(保持 Dropout 开启),重复 30 次前向传播收集预测分布,然后计算均值(最终预测)、方差(不确定性)和置信度。
model.train()— 关键一步!切换到训练模式让 Dropout 层生效。这是 MC Dropout 与普通推理最核心的差异
for _ in range(T)— 循环 T=30 次前向传播,每次都走不同的随机 Dropout 掩码
F.softmax(logits, dim=1)— 把 logits 转为概率分布,便于后续平均和计算方差
preds.mean(dim=0)— 对 30 次预测取平均,得到稳定的最终预测概率
preds.var(dim=0)— 计算逐类的方差,方差大 = 模型对该类不确定
uncertainty = variance.mean().item()— 把所有类别的方差取平均,得到一个标量的不确定性分数
import torchimport torch.nn.functional as F def mc_dropout_predict(model, x, T=30, num_classes=10): """MC Dropout 推理:返回平均预测、方差、不确定性分数""" model.train() # 关键:切换到 train 模式,让 Dropout 生效 with torch.no_grad(): predictions = [] for _ in range(T): logits = model(x.unsqueeze(0)) # 单样本前向 probs = F.softmax(logits, dim=1) # 转成概率分布 predictions.append(probs) # 堆叠 T 个预测: [T, 1, num_classes] preds = torch.cat(predictions, dim=0) # [T, num_classes] # 1. 均值预测(概率平均) mean_prob = preds.mean(dim=0) # [num_classes] # 2. 预测方差(逐类计算) variance = preds.var(dim=0) # [num_classes] # 3. 总不确定性:各类方差的均值 uncertainty = variance.mean().item() # 4. 预测类别与置信度 pred_class = mean_prob.argmax().item() confidence = mean_prob[pred_class].item() return { 'pred_class': pred_class, 'confidence': confidence, 'mean_prob': mean_prob, 'variance': variance, 'uncertainty': uncertainty, } # 使用示例if __name__ == '__main__': model = torch.hub.load('pytorch/vision', 'resnet18', pretrained=True) model.fc = torch.nn.Linear(model.fc.in_features, 10) model.train() # 确保 fc 层之后的 Dropout(若有)生效 dummy_input = torch.randn(3, 32, 32) result = mc_dropout_predict(model, dummy_input, T=30) print(f"预测类别: {result['pred_class']}, 置信度: {result['confidence']:.4f}") print(f"不确定性分数: {result['uncertainty']:.4f}")
AI 应用场景
场景 1:医疗影像辅助诊断的“拒诊”机制
阶段:推理部署与可信度评估
解决的问题:传统 CNN 模型在 X 光片分类中即使面对训练分布之外的异常影像,也会自信地输出一个诊断结果——这种“过度自信”在医疗场景可能造成严重误诊。MC Dropout 让模型在推理时输出预测方差,方差过高的样本被自动标记为“需人工复核”。
具体案例:某三甲医院部署肺炎 X 光分类模型。输入一张带有金属植入物的胸片(训练数据中极少出现),模型单次预测给出“肺炎概率 0.9”的高置信;使用 MC Dropout 采样 40 次后,预测均值仅 0.55,方差高达 0.32——系统自动将该样本转给放射科医生复核,避免了误诊。
场景 2:自动驾驶感知的“安全兜底”
阶段:融合感知与风险决策
解决的问题:自动驾驶感知模型遇到训练分布外的场景(如极端天气、非常规车辆)时,需要快速判断“我是否真的看清楚了”。MC Dropout 的方差可以作为传感器置信度的代理指标,驱动车辆进入保守驾驶模式。
具体案例:某自动驾驶公司在其目标检测模型(YOLO 架构 + Dropout)中嵌入 MC Dropout 推理。当车辆遇到浓雾导致传感器噪声增大时,MC Dropout 检测框的不确定性分数从 0.05 飙升至 0.4,决策模块据此降低车速、增大跟车距离,直到不确定性回落后恢复正常巡航。
场景 3:金融风控的“待审核”队列
阶段:信用评估与反欺诈决策
解决的问题:信贷审批模型对“模糊样本”(如新用户缺乏历史数据)的评分不可靠,传统模型无法表达“我不确定”。MC Dropout 输出置信区间,让风控系统区分“明确拒绝”“明确通过”和“人工审核”三档。
具体案例:某金融科技公司的信用评分模型应用 MC Dropout 后,将评分不确定性最高的 5% 样本自动转入人工审核队列。运行 3 个月数据显示:这批“高不确定性”样本的人工复核发现率(违约识别率)是普通样本的 2.3 倍,同时误拒率下降了 18%。
常见误区
误区我需要在模型里额外加一些层或者改 loss 函数,才能用 MC Dropout 做不确定性估计,感觉好复杂。
正解MC Dropout 最迷人之处就是“零改造”——只要模型在训练时用了 Dropout,你根本不需要动任何网络结构。推理时做三件事:切换到 train() 模式、循环跑多次 forward()、把结果收集起来算均值和方差。你的模型还是那个模型,只是“使用方式”变了,就像同样的厨师从“只给一个答案”变成“反复备菜、给出菜品的稳定性报告”。
为何常见:很多人习惯了“要新能力就得加新模块”的思维定式,而 MC Dropout 恰恰是一个“行为层面的算法”,不需要结构性配合,这容易让人产生误解。
误区我把 Dropout 概率设成 0.9,让大多数神经元都随机丢弃,这样每次前向传播差异更大、不确定性估计就更靠谱。
正解不是这样。Dropout 概率在训练时已经作为正则化超参数确定了——模型是在这个特定的“随机熄灯”节奏下学会协作的。推理时使用的 Dropout 概率应该与训练时一致,否则就偏离了模型熟悉的“工作模式”:好比训练时队伍习惯了“十抽二”的玩法,结果正式评估时你改成“十抽八”,整个队伍的手感全乱套了。不确定性估计的质量取决于 Dropout 的随机性是否与训练分布一致。
为何常见:人们直觉上认为“越随机 = 越能暴露不确定性”,忽略了模型是在特定随机水平下训练的,改变 Dropout 概率会破坏模型学到的条件分布。
误区MC Dropout 给出的方差很大,就说明这个样本很难、模型训练数据里没有类似样本。
正解方差大是模型对当前输入“缺乏稳定共识”的信号,但引起分歧的原因多种多样:样本确实在训练分布之外(认知不确定性高)、样本本身存在标注噪声(数据不确定性干扰)、或者模型在某个区域还没有收敛好。大方差是一个“红色警报”,告诉你“要小心”,但不能自动得出“数据是 OOD”的结论。就像摸象队伍意见严重不一致,可能是因为大象太大、也可能是因为队员经验不足——需要进一步诊断原因。
为何常见:人们容易把“不确定性”当作一个黑盒指标,只关注数值高低,而忽略它背后可能对应着多种上游原因。
误区论文说了 MC Dropout 是贝叶斯推断的近似,那直接用 MC Dropout 就行,贝叶斯神经网络可以完全被淘汰。
正解MC Dropout 只是对深度网络后验的一种特定近似,它假设神经元子集的采样能代表权重的不确定性。这种近似有两个固有限制:一是只能表达“哪些神经元被激活”的不确定性,不能表达权重连续取值的不确定性;二是 Dropout 的 Bernoulli 先验与实际权重的后验分布可能相去甚远。在需要精确定量不确定性(如贝叶斯优化、强化学习中的置信界)的场景,真正的 BNN 或深度集成仍然不可替代。
为何常见:学术表述中的“近似等价”很容易被过度解读为“完全等价”,忽略了近似的边界条件。
误区既然 MC Dropout 采样是“免费的”,我把 T 设成 500 次甚至 1000 次,得到的不确定性估计一定更准确。
正解T 次采样的收益是边际递减的(误差按 \(1/\sqrt{T}\) 衰减),而计算成本是线性增长。T=20 到 T=100 效果差异甚微,但推理时间却多了 5 倍。更重要的是,当 T 增大到一定程度后,方差估计会趋近于“模型分布本身的固有方差”——再增加样本也无法减少模型自己的不确定性。实践中应根据延迟预算选择 T(通常 10~50),并用“方差是否已稳定”来判断是否足够。
为何常见:人们混淆了“估计精度”(采样越多越准)和“可降低的不确定性”(模型自身固有)。数据量不能弥补模型知识的缺口。
面试题
Q1. MC Dropout 与普通 Dropout 的核心区别是什么?
- A.训练时开启 Dropout,推理时关闭
- B.推理时也保持 Dropout 开启并多次采样← 正确答案
- C.MC Dropout 不适用于 CNN 模型
- D.MC Dropout 需要修改损失函数
答案:B。普通 Dropout 只在训练时开启,推理时关闭以获得确定输出;MC Dropout 在推理时故意保持 Dropout 开启,通过多次前向传播得到预测分布,进而估计不确定性。选项 B 准确描述了这个核心区别。
Q2. MC Dropout 的多次预测取平均,主要降低的是什么?
- A.模型的偏差(Bias)
- B.模型的方差(Variance)← 正确答案
- C.数据的噪声
- D.训练的时长
答案:B。平均操作通过“群体智慧”效应降低预测的方差项(Variance),因多次预测的随机误差在平均中部分抵消。偏差(Bias)是模型本身的系统性误差,取平均无法消除。数据噪声属于偶然不确定性,也不由平均操作决定。
Q3. MC Dropout 估计出的不确定性主要属于哪一类?
- A.偶然不确定性(Aleatoric)
- B.认知不确定性(Epistemic)← 正确答案
- C.数据标注噪声
- D.传感器测量误差
答案:B。MC Dropout 的方差源于不同 Dropout 掩码下网络子结构的分歧——这反映的是模型对参数和预测的“知识不足”,属于认知不确定性(Epistemic Uncertainty)。传感器误差、标注噪声等属于偶然不确定性,即使增加采样也无法消除。
Q4. 若 T=100 时 MC Dropout 的均值标准误为 0.03,要将标准误降为 0.015,需要将 T 增加至大约多少?
- A.200
- B.300
- C.400← 正确答案
- D.1000
答案:C。标准误与 \(1/\sqrt{T}\) 成正比。误差减半需要样本量变为 4 倍:100 × 4 = 400。这体现了 MC Dropout 采样收益的边际递减——从 100 增到 400,成本翻两番,精度只提升一倍。
Q5. 在 Python 中实现 MC Dropout 推理,最关键的一步是什么?
- A.调用 model.eval() 关闭 Dropout
- B.调用 model.train() 让 Dropout 生效← 正确答案
- C.使用更高的学习率重新训练模型
- D.删除所有 Dropout 层
答案:B。MC Dropout 的核心就是在推理时保持 Dropout 开启,对应代码就是调用 model.train()(而非 model.eval())。这个动作让前向传播每次都走随机掩码,从而产生预测分布。C 和 D 都与 MC Dropout 无关。
Q6. 关于 MC Dropout 与深度集成的对比,以下说法正确的是?
- A.MC Dropout 的不确定性质量优于深度集成
- B.MC Dropout 的集成多样性低于深度集成← 正确答案
- C.MC Dropout 需要训练多个独立模型
- D.深度集成的推理成本与 MC Dropout 相同
答案:B。MC Dropout 的所有子网络共享大部分权重,因此彼此高度相关、集成多样性显著低于独立训练的深度集成模型。但 MC Dropout 的优点是零额外训练成本、只需保存一份权重。A 说反了,C、D 也不符合事实。
Q7. MC Dropout 的方差估计在什么情况下会失效?
- A.训练数据量足够大时
- B.模型使用了 BatchNorm 层时
- C.训练时未使用 Dropout 层← 正确答案
- D.推理时设置了 torch.no_grad()
答案:C。如果模型训练时根本没有 Dropout 层,推理时自然没有“随机熄灯”机制——所有前向传播输出完全相同,方差恒为零,不确定性估计完全失效。BatchNorm(在 train 模式下)和 no_grad() 不影响 MC Dropout 的方差计算,选项 A 也不构成失效条件。
Q8. MC Dropout 可以提供哪些有价值的信息?
- A.预测概率的均值← 正确答案
- B.预测分布的方差← 正确答案
- C.模型的训练损失曲线
- D.逐样本的置信度分数← 正确答案
答案:ABD。MC Dropout 对多次前向传播的结果做聚合,可以同时获得均值(最终预测)、方差(不确定性)和置信度(最高概率类的概率值)。训练损失曲线是训练过程的可视化信息,与 MC Dropout 无关,故 C 正确。A、B、D 都是 MC Dropout 的输出。
Q9. 以下哪些做法符合 MC Dropout 的正确使用方式?
- A.推理时用与训练时相同的 Dropout 概率← 正确答案
- B.采样次数设为 10~50 次之间← 正确答案
- C.每次前向传播使用相同的 Dropout 掩码
- D.对多次预测取平均作为最终结果← 正确答案
答案:ABD。MC Dropout 要求推理时的 Dropout 概率与训练时一致(A 对),采样 10~50 次是折中实践(B 对),最终对多次预测取平均(D 对)。C 是错误的——每次前向必须独立采样不同的掩码,否则结果完全相同、方差为零。
Q10. 关于 MC Dropout 的理论基础与工程实践,以下哪些说法正确?
- A.它在理论上被证明是深度高斯过程的贝叶斯近似← 正确答案
- B.它需要修改网络结构才能生效
- C.它可以用 Welford 算法实现常数内存的在线方差计算← 正确答案
- D.它对所有类型的不确定性都能精确度量
答案:AC。Gal & Ghahramani 证明 MC Dropout 等价于深度高斯过程的变分推断(A 对)。工程上可用 Welford 在线算法每算一个样本就更新均值与方差,内存占用 O(1)(C 对)。B 错误——它不修改结构。D 错误——它只能近似度量认知不确定性,对偶然不确定性的刻画能力有限。