本文聚焦AI研究员必备的实验设计(消融/Ablation Study),系统讲解研究方法、工具使用与学术规范。你将学习到实验设计(消融/Ablation Study)的核心方法论、文献调研技巧以及实验设计原则,建立扎实的科研基本功。适用于AI研究员、博士生以及希望转型学术研究的工程师。通过本文学习,你将获得系统化的知识框架与实战经验。

岗位关联

做 AI 实验就像管理一家后厨:好味道不是某一种神秘香料,而是所有配方步骤的合力。学会“消融实验”,就是学会一道道撤掉配菜、最终找出那道主心骨味道的科学方法。 对 AI 从业者而言,掌握消融研究等于拿到“证明模型改进有效”的通行证。无论你是准备发论文的研究员、还是想用实验说服老板的工程师,这套方法都会让你的结论经得起推敲,职业发展更有底气。

目录
  1. 可视化演示
  2. 实验设计基础
  3. 消融研究要点
  4. 文献调研技巧
  5. 变量控制方法
  6. 评估指标体系
  7. 结果分析呈现
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示实验设计详解与实战指南的核心机制,通过总览/传输/转换/输出四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

实验设计详解与实战指南:消融实验 消融实验的基本原理与目的 消融维度设计与组件拆解 核心机制可视化 实验设计详解与实战指南整体架构与关键组件

实验设计基础

还记得开面馆的故事吗?你不可能同时“换面条、换汤底、换辣油”然后评价新配方,因为一旦客人说不好吃,你根本不知道是哪个环节出了问题。实验设计的第一课,就是学会一次只动一个变量,让结论有据可循。

对照实验思想是这一切的基石。AI 实验中的“对照组”就是你的基线模型,“实验组”就是加了新模块的模型。两者必须只在你想验证的那个环节上有差异,其余训练数据、超参数、随机种子全部保持一致。这就像两碗面,面条和汤底完全相同,只有一碗多了辣油——这时客人给出的评价差异,才能归因于辣油。

假设驱动设计让你不盲目试菜。你提出“加入注意力机制能提升对话模型的连贯性”这个假设,然后设计实验去验证或推翻它。实验记录规范则要求你把“今天放了几克盐、煮了几分钟”全部写进日志,对应到深度学习中就是记录超参数、数据版本、代码 commit 号。

所以,别再一股脑把所有 trick 堆进模型然后自我感动了。要像面馆老板一样,端出两碗面,让数据告诉你哪一味料真正值钱。

贡献度=完整模型验证精度−消融模型验证精度\text{贡献度} = \text{完整模型验证精度} - \text{消融模型验证精度}
这个公式是消融研究的“味觉差”:完整模型比撤掉某模块后的模型高出的精度,就是该模块对最终性能的贡献。
  1. 完整模型验证精度指包含所有组件(如注意力、特征金字塔、数据增强)的模型在验证集上的精度。
    Accfull\text{Acc}_{\text{full}}
  2. 消融模型验证精度指仅移除目标组件、其余完全不变的模型在同一验证集上的精度。
    Accabl\text{Acc}_{\text{abl}}
  3. 做差两者相减,得到的正值越大,说明该组件越不可或缺;接近零则说明它可能是“可有可无的装饰”。
    Contribution=Accfull−Accabl\text{Contribution} = \text{Acc}_{\text{full}} - \text{Acc}_{\text{abl}}

消融研究要点

消融研究(Ablation Study)这个词听起来高级,做法却非常朴素。它的名字源自拉丁语 ablatio,意为“移除”。就像拆解一道菜:把红烧肉里的八角挑出来再做一锅,比较味道差异。在 AI 模型里,这个“八角”可以是一个注意力头、一层特征金字塔、或者一项数据增强策略。

逐模块移除是核心操作。你要从完整模型出发,每次只移除一个模块,得到一个变体模型。假设你的模型有三个组件:特征提取器 $F$、注意力模块 $A$、分类头 $C$。完整模型的预测概率可以写成:

移除注意力模块后,模型变成 $P_{\text{abl}} = \text{softmax}(C(F(x)))$,两者在验证集上的性能差距就是注意力模块的贡献。

对照基线比较强调的是“跟谁比”:所有消融变体都要和同一个完整模型比较,而不是两个变体互相比较。单变量原则则提醒你:永远不要同时移除两个模块,否则结果无法归因。这就像做菜时既不放盐又不放酱油,最后说“味道不对”——你怪谁呢?

记住:消融研究的精髓不是把模型删得千疮百孔,而是精准地撤掉一味料,然后诚实地记录味道变化。

P(y∣x)=softmax(C(A(F(x))))P(y \mid x) = \text{softmax}(C(A(F(x))))
softmax(zi)=ezi∑jezj\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j} e^{z_j}}
softmax 把模型的原始分数变成“这道菜属于哪一类”的概率分布,是分类模型的决策层。
  1. 分子 $e^{z_i}$对第 $i$ 类的原始分数做指数变换,保证非负且放大差异。
    ezie^{z_i}
  2. 分母 $\sum_{j} e^{z_j}$对所有类别的指数分数求和,起到归一化作用。
    ∑jezj\sum_{j} e^{z_j}
  3. 整体比值每个类别的指数分数占总体的比例,输出总和为 1 的概率向量。
    ezi∑jezj\frac{e^{z_i}}{\sum_{j} e^{z_j}}

文献调研技巧

做消融实验之前,别急着开火。先看看别人家面馆怎么做面——这正是文献调研的价值。你总不能重复发明辣油,或者把别人已经证伪的配方再踩一遍坑。

检索相关消融是第一步。在 Google Scholar、arXiv 上搜索 ablation study 加你的任务关键词(如 machine translation、object detection),看看前人拆过哪些模块。方法性能对比则是把不同论文报告的指标整理成一张表,注意每篇论文的数据集和设置可能不同,不能只看数字就下结论。这就像看菜谱时要注意“勺”是汤勺还是茶勺。

引用关系分析帮你找到领域里的关键工作。如果多篇论文都在对比某个基线模型(比如 BERT),说明这个基线就是“面馆的标杆味道”。分析相关工作的消融结果,你还能发现哪些模块在多个研究中都被证明有效,哪些只是特定场景下的“偶发调味”。

文献调研做扎实了,你的实验设计就有了“邻家菜谱”作为参照。别闭门造车,好研究从来都是站在别人灶台前学来的。

AvgAcc=1N∑i=1NAcci\text{AvgAcc} = \frac{1}{N}\sum_{i=1}^{N} \text{Acc}_i
当多篇论文的指标无法直接对比时,可以取同一任务上多个模型的平均精度作为参考基准。
  1. 累加各论文精度把检索到的同任务论文报告的精度逐一相加。
    ∑i=1NAcci\sum_{i=1}^{N} \text{Acc}_i
  2. 除以论文数除以 $N$ 得到平均精度,作为该任务的参考水位线。
    1N∑i=1NAcci\frac{1}{N}\sum_{i=1}^{N} \text{Acc}_i

变量控制方法

回到面馆:如果今天做实验用了高筋面粉,明天用了低筋面粉,还说“辣油不重要”——客人只会觉得你手艺不稳定。AI 实验同理,变量失控是最常见的翻车原因。

固定随机种子是第一道保险。深度学习中,权重初始化、数据打乱都涉及随机性。不固定种子,你跑两次实验的结果可能差好几个点,消融差异全被噪声淹没。PyTorch 里设置 torch.manual_seed(42) 就像把厨房的电子秤校准归零。

训练配置一致要求所有对比模型使用相同的 batch size、学习率、训练轮数、优化器。你觉得多加了一个模块让模型更好?如果同时把学习率也调了,那功劳算谁的?重复实验取均值则是为了对抗“一次手抖”的偶然性。同一配置跑 3-5 个种子,取均值和标准差,你的结论才有统计意义。

变量控制的意义在于:让实验结论来自你改的那个变量,而不是来自运气和噪声。固定一切能固定的,你才配得上“严谨”二字。

xˉ=1n∑i=1nxi,s=1n−1∑i=1n(xi−xˉ)2\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i, \quad s = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2}
$n$ 次重复实验的性能均值 $\bar{x}$ 和标准差 $s$,让你看清“辣油的稳定贡献”而不是“某一次的好运气”。
  1. 均值 $\bar{x}$把 $n$ 次重复实验的指标求和后取平均,代表模型的典型表现。
    xˉ=1n∑i=1nxi\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i
  2. 标准差 $s$衡量每次实验与均值的偏离程度,数值小说明实验稳定、可复现。
    s=1n−1∑i=1n(xi−xˉ)2s = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2}

评估指标体系

面馆怎么评判一碗面好不好吃?光你自己说好吃不算数,得有统一标准:面条筋道度、汤底鲜度、辣油香气。AI 模型也一样,需要一套评估指标体系来当“裁判”。

数据三集划分是所有评估的地基。训练集用来学习参数,验证集用来调超参和做消融对比,测试集只在最终报告时用一次。绝不能用测试集做消融决策,否则就像考试前先看到答案,成绩再好也是假的。

评估指标选择要贴合任务:分类用 Accuracy、F1,检测用 mAP,生成用 BLEU。选定后,所有模型变体都用同一指标说话。数据泄露防范则是底线:数据增强不能混入验证集,训练集的统计信息不能用来归一化测试集。否则,你的实验结果就像用了过期食材的菜——表面光鲜,实则有毒。

记住:评估体系的公正性,决定了你实验结论的含金量。一个标准混乱的评估,比不做实验更危险。

D=Dtrain∪Dval∪Dtest\mathcal{D} = \mathcal{D}_{\text{train}} \cup \mathcal{D}_{\text{val}} \cup \mathcal{D}_{\text{test}}
  1. 训练集 $\mathcal{D}_{\text{train}}$模型学习的“练习题库”,通过反向传播更新参数。
    Dtrain\mathcal{D}_{\text{train}}
  2. 验证集 $\mathcal{D}_{\text{val}}$模型调参和消融对比的“模拟考”,用于选配方但不直接学习。
    Dval\mathcal{D}_{\text{val}}
  3. 测试集 $\mathcal{D}_{\text{test}}$最终验收的“高考”,只能碰一次,保证报告成绩真实可信。
    Dtest\mathcal{D}_{\text{test}}

结果分析呈现

实验做完了,数据摆了一桌,下一步是把结果讲成故事。这就像面馆要写招牌:不能只说“好吃”,要说清楚“辣油让回头客多了 30%”。

结果表对比是论文的标配:第一列是模型名称(完整模型和各消融变体),第二列起是各指标数值。完整模型放第一行,消融变体按移除的模块分组排列,好让读者一眼看出谁贡献大。

可视化呈现能放大洞察。训练曲线图展示完整模型与消融模型在训练过程中的精度走势,让读者看到差距是何时拉开的。但这不意味着绘图可以随心所欲——坐标轴范围、曲线平滑方式都要诚实标注。

可复现报告是实验的最后尊严。你的报告应当写清楚:数据版本、代码版本、随机种子、硬件环境、每个超参数的具体值。别人照着你的报告能端出同一碗面,你的实验才算真正完成。

最后,把整套实验装订成一份“可复现菜谱”,交给同行评审。结果清晰、过程透明、结论诚实——这就是实验设计的满分答卷。

相对提升=Accfull−AccablAccabl×100%\text{相对提升} = \frac{\text{Acc}_{\text{full}} - \text{Acc}_{\text{abl}}}{\text{Acc}_{\text{abl}}} \times 100\%
相对提升量化了模块的增益幅度,让你在汇报时说“提升了 3.2%”而不是含糊的“有一定提升”。
  1. 绝对差距完整模型与消融模型的精度差,即模块的绝对贡献。
    Accfull−Accabl\text{Acc}_{\text{full}} - \text{Acc}_{\text{abl}}
  2. 除以消融模型精度把差距标准化到消融模型的水平上,得到相对增益。
    Accfull−AccablAccabl\frac{\text{Acc}_{\text{full}} - \text{Acc}_{\text{abl}}}{\text{Acc}_{\text{abl}}}
  3. 乘以 100%转换为百分比,让提升幅度更直观,便于汇报和比较。
    ×100%\times 100\%

AI 应用场景

场景一:CV 研究员的模块归因

阶段:模型设计验证

解决的问题:你设计了一个新的目标检测器,包含特征金字塔、注意力模块和新的损失函数。传统做法是直接端到端训练然后报指标,但 reviewer 一句“你怎么证明每个模块都有用?”就把你问住了。消融研究通过对每个模块单独移除,定量回答“这个模块贡献了多少 mAP”。

具体案例:一篇目标检测论文的消融表展示:完整模型 mAP 42.1%;移除注意力模块后降至 39.4%;移除特征金字塔后降至 37.8%;移除新损失后降至 41.0%。由此证明注意力模块和特征金字塔是核心贡献项,新损失锦上添花。

场景二:NLP 工程师的预训练模型选型

阶段:模型对比评估

解决的问题:在某垂直领域做文本分类,你想知道应该基于 BERT 还是轻量级模型。用消融思路,你可以固定下游任务的所有超参数,只替换骨干编码器,对比两者的 Accuracy 和推理延迟。

具体案例:某金融风控团队在意图识别任务上,固定训练轮数、学习率、数据划分,对比 BERT-base 和 TinyBERT:BERT 准确率 94.2%、延迟 18ms;TinyBERT 准确率 92.8%、延迟 3ms。团队据此决定:对延迟敏感的线上风控用 TinyBERT,离线分析用 BERT。

场景三:研究型科学家的论文复现实验

阶段:实验报告与学术规范

解决的问题:论文复现时,作者报告了多个模块的消融实验,但没写随机种子。复现者需要自行固定多个种子跑重复实验,用均值±标准差来判断模块贡献是否稳定。

具体案例:某博士生复现一篇对比学习论文时,发现单次实验的模块增益只有 0.3%,但作者声称 2.1%。通过 5 个种子的重复实验,他发现该模块在部分种子上甚至降点,最终判定该模块的贡献不稳健——这一发现避免了一次失败的后续研究。

Python 演示

python63 行
import random  class SimpleModel:    """带多个可关闭组件的虚拟模型"""     def __init__(self, components):        self.components = components  # 组件分数字典     def forward(self, x):        score = 0.0        for name, weight in self.components.items():            if weight > 0:                score += weight * x        return score  def evaluate(model, x, y_true):    pred = model.forward(x)    acc = 1.0 - abs(pred - y_true) / y_true    return max(0.0, min(1.0, acc))  def ablation_study(base_model, components, x, y_true):    results = {}    for name in components:        variants = {k: (0 if k == name else v) for k, v in base_model.components.items()}        variant_model = SimpleModel(variants)        results[name] = evaluate(variant_model, x, y_true)    return results  def main():    x = 1.0    y_true = 1.0    best_components = {        "feature_extractor": 0.4,        "attention": 0.3,        "augmentation": 0.2,        "loss_trick": 0.1,    }    full_model = SimpleModel(best_components)    full_acc = evaluate(full_model, x, y_true)    print("完整模型精度: %.4f" % full_acc)     ablation_results = ablation_study(full_model, best_components, x, y_true)    print("\n消融实验 (逐一撤掉组件):")    for name, acc in ablation_results.items():        contribution = full_acc - acc        print("移除 %-15s 精度=%.4f 贡献度=%.4f" % (name, acc, contribution))     print("\n贡献度排名 (从高到低):")    sorted_contrib = sorted(        ablation_results.items(),        key=lambda kv: full_acc - kv[1],        reverse=True,    )    for rank, (name, _) in enumerate(sorted_contrib, 1):        print("第%d名: %s" % (rank, name))  if __name__ == "__main__":    main()
目的:用微型虚拟模型演示消融研究的完整流程——评估完整模型后逐一移除组件、记录清晰、按贡献度排名,可直接修改为自定义模块的调用逻辑。
  1. class SimpleModel定义一个带多个可开关组件的虚拟模型,每个组件有固定权重。
  2. self.components字典存储各组件权重,权重为正表示启用,置 0 表示被消融移除。
  3. def ablation_study(...)核心消融函数:复制基线权重,将目标组件权重置 0,生成变体模型。
  4. variants = {k: (0 if k == name else v) ...}单变量原则的代码体现:一次只移除一个组件。
  5. sorted_contrib = sorted(...)按贡献度降序排列,方便汇报“哪些模块是主心骨”。

常见误区

误区“消融实验就是把所有模块都拆一遍,拆得越细越显严谨,reviewer 看了就点头。”

正解消融实验的目的是验证“每个设计都有必要”,不是集邮。如果你的模块本身设计就没有可解释的动机,盲目拆解只会暴露实验的无目的性。更务实的做法是:围绕论文的核心贡献做 3-5 组关键消融,再补充 1-2 组交叉验证(如模块 A 和 B 是否互补)。就像做菜,你只需要证明盐和辣油各自有贡献,而不用把每一粒花椒都单独试一遍。

为何常见:初学者常以为“数字多 = 工作量足 = 论文强”,忽略了实验设计的问题意识。

误区“要公平对比,消融模型必须从零开始重新训练,不能使用完整模型的预训练权重。”

正解消融研究的比较基准是完整模型的训练流程。正确做法是:使用相同的数据、相同的初始化种子从头训练消融模型,唯一变量是“有没有那个模块”。但如果你用的是预训练模型 + 下游微调范式,那么消融也应在同一预训练权重的基础上进行,否则你同时改变了两件事,结果无法归因。

为何常见:混淆了“实验公平”与“变量控制”。公平不等于从零开始,而是只动目标变量。

误区“测试集精度最高就能证明模型最好,消融实验直接看测试集差距就行。”

正解测试集是“高考卷”,只能考一次。反复用测试集做消融决策,会导致模型间接在测试集上过拟合——这在文献中叫“隐藏的测试集泄露”。正确流程是:在验证集上完成所有消融与调参,最终选定模型后,只在测试集上跑一次作为最终成绩。

为何常见:验证集精度和测试集精度往往接近,让初学者误以为测试集可以随便用。

误区“我跑了两个种子,完整模型比消融模型高 0.5%,这个模块肯定有效。”

正解单次或少数几次实验的差异可能是随机噪声。深度学习的训练过程受随机种子、数据顺序影响,0.5% 的差距完全可能来自运气。正确做法是跑 3-5 个种子,报告均值 ± 标准差,用 t 检验或置信区间辅助判断。如果两个分布的误差棒重叠,就不能断言模块有效。

为何常见:统计学意识薄弱,急于从少量实验里得出“漂亮结论”。

误区“我的消融实验显示每个模块都有正贡献,所以我的模型肯定比基线好。”

正解消融实验回答的是“每个模块是否有贡献”,而不是“我的模型是否 SOTA”。模型整体是否更好,还需要与更强基线对比、在多个数据集上验证、做显著性检验。就像你的辣油确实让面条更好吃,但这不意味着你的面馆就能胜过街口米其林。

为何常见:把内部组件验证与外部竞争力混为一谈,是研究新人最常见的认知偏差。

面试题

Q1. 消融研究(Ablation Study)的核心做法是什么?

单选题 · easy

  • A.同时移除多个模块观察性能变化
  • B.每次只移除一个组件并评估其影响← 正确答案
  • C.随机调整超参数找到最优组合
  • D.用更多数据训练模型提升精度

答案:B。消融研究的灵魂是“单变量原则”:每次只移除一个组件,保持其余设置不变,才能将该组件的贡献从噪声中分离出来。A 同时移除多个模块无法归因;C 是超参搜索;D 是数据策略,都不属于消融研究。

Q2. 关于消融实验的评估数据,下列哪项做法正确?

单选题 · easy

  • A.在测试集上反复做消融对比直到满意
  • B.用验证集做消融,测试集只用于最终验收← 正确答案
  • C.训练集精度更高就优先选消融配置
  • D.验证集和测试集可以混用不区分

答案:B。测试集相当于“高考卷”,只能最终使用一次。消融实验属于模型选择与调参环节,应在验证集上进行;选完最终模型后再用测试集报告成绩。A 会导致测试集信息泄露,C 只看训练集是过拟合信号,D 混淆了评估边界。

Q3. 某模块消融后精度从 80.0% 降到 78.0%,该模块对完整模型的相对提升是多少?

单选题 · mid

  • A.2.00%
  • B.2.56%← 正确答案
  • C.1.96%
  • D.0.20%

答案:B。相对提升公式为 (完整 - 消融) / 消融 × 100% = (80 - 78) / 78 × 100% ≈ 2.56%。A 直接用绝对差 2% 而非除以消融值的相对比例,C 是除以完整模型,D 是百分比点换算错误。

Q4. 做消融实验时,下列哪个变量应当保持固定?

单选题 · mid

  • A.被移除的目标模块
  • B.随机种子、训练轮数、优化器配置← 正确答案
  • C.评估指标的定义
  • D.验证集的数据分布

答案:B。消融研究要求只改变目标组件,其余尽可能不变。固定随机种子、训练轮数、优化器等配置是为了排除干扰因素。A 是被改变的对象,C 和 D 属于评估规范而非可调变量,但题目问的是“应当固定”的实验设置,B 最准确。

Q5. 关于深度学习实验的可复现性,以下哪些做法是正确的?

多选题 · mid

  • A.固定所有随机种子并记录代码版本← 正确答案
  • B.记录硬件环境与依赖库版本← 正确答案
  • C.多次重复实验并报告均值±标准差← 正确答案
  • D.只报告效果最好的一次实验

答案:ABC。可复现性要求事无巨细地记录影响训练的因素:随机种子、代码版本(A)、硬件与依赖环境(B)、多次重复统计(C)。D 只报最好一次是典型的“幸存者偏差”,会让结论被运气左右。

Q6. 文献调研中,发现多篇论文都对某基线模型做了消融,这说明什么?

单选题 · easy

  • A.该基线模型肯定是最佳模型
  • B.该基线是领域内公认的对比参照← 正确答案
  • C.该基线模型的论文有严重错误
  • D.该基线模型可以忽略不计

答案:B。多个工作围绕同一基线做消融,说明它是该任务公认的“比较基准”,类似面馆的招牌味道。B 正确。A 过于绝对,基线不一定最好但一定是标准参照;C 和 D 是对参照系作用的误解。

Q7. 关于训练集、验证集、测试集的表述,正确的是?

单选题 · mid

  • A.三者可以任意重复使用以节省数据
  • B.训练集用于学习参数,验证集用于选模型,测试集用于最终评估← 正确答案
  • C.验证集应该参与模型参数的梯度更新
  • D.测试集精度应该用于早停决策

答案:B。三集各有分工:训练集学参数、验证集做模型选择(含消融)、测试集只做最终评估。A 违反评估隔离原则,C 用验证集更新参数相当于把验证集并入训练集,D 用测试集早停会导致数据泄露。

Q8. 消融实验报告中,为了支撑“模块 A 显著有效”的结论,需要提供哪些信息?

多选题 · hard

  • A.多组随机种子下的均值与标准差← 正确答案
  • B.完整的训练配置与数据版本信息← 正确答案
  • C.显著性检验或置信区间← 正确答案
  • D.仅报告消融后精度的最大值

答案:ABC。严谨结论需要统计证据:多种子均值±标准差(A)、可复现的训练和数据信息(B)、显著性检验或置信区间(C)。D 只报最大值无法反映稳定性和偶然性,是错误示范。用面馆比喻:你要用 5 位熟客的平均评分而非最高分来说服食评家。

Q9. 消融实验中,若完整模型精度 82.0%,移除模块 A 后 80.5%,移除模块 B 后 81.2%,同时移除 A 和 B 后 78.9%,下列说法正确的是?

单选题 · extreme

  • A.A 和 B 的贡献可以简单相加为 2.3%
  • B.A 和 B 存在明显的正交互作用← 正确答案
  • C.A 比 B 更重要,因为单独移除 A 下降更多
  • D.B 对模型没有贡献,因为下降不到 1%

答案:B。单独移除 A 下降 1.5%,B 下降 0.8%,简单相加为 2.3%;同时移除两者下降 3.1%,大于 2.3%,说明 A 和 B 存在正交互(协同)作用。C 在无交互时可成立,但本题交互显著;D 忽略协同作用,0.8% 并不等于没贡献。

Q10. 关于防止数据泄露,以下哪些措施是必要的?

多选题 · hard

  • A.数据增强只应用于训练集← 正确答案
  • B.验证集和测试集不参与任何训练统计← 正确答案
  • C.特征归一化的均值和方差只从训练集计算← 正确答案
  • D.测试集可以在消融实验中使用多次筛选模型

答案:ABC。防止数据泄露的核心是确保验证/测试集信息不进入训练过程。数据增强仅用于训练集(A),验证/测试集不做统计(B),归一化参数仅从训练集估计(C)。D 允许测试集参与多次筛选,是标准的数据泄露行为。