你经营着一家准备冲刺米其林评星的小餐厅。评审团会不定期匿名到访,就像 Kaggle 竞赛里那个最终决定名次的“私有排行榜”。你研发了一道招牌菜,却有个烦恼:让同一位厨师反复做这道菜,每次味道都有细微差别——今天盐多了一克,明天火候差了几秒。单独端出任何一次出品,都可能被苛刻的评审打出不稳定分数。 于是你做了一个决定:让后厨五位手法各有特点的厨师分别做一遍这道菜,再让评委综合感受整体风味。结果出乎意料——没有人会记住某位厨师手抖的那一下,整体的印象反而稳定、饱满、无懈可击。 这就是“种子平均(Seed Averaging)”。在机器学习里,同一种模型用不同的随机种子训练,就像同一位厨师在不同手感下做出的菜,预测结果会上下波动。我们把多个种子模型的预测取平均,那些各自独立的“手抖”就会相互抵消,最终预测变得平稳可靠。这是一个几乎零成本、却常常能让排行榜名次稳步上升的实战技巧。

岗位关联

掌握种子平均,你就能用最少的工程成本换取排行榜上肉眼可见的稳定性——这是从单模型走向系统提分的第一级台阶。

目录
  1. 可视化演示
  2. 种子平均概述
  3. 随机种子机制
  4. 方差消除原理
  5. 均值策略选择
  6. 种子数量规划
  7. 实践流程落地
  8. 常见陷阱规避
  9. 工程化扩展
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

演示多随机种子训练取均值平滑预测方差,理解种子多样性、均值策略与资源约束下的种子数量规划。

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

种子平均:去噪稳定 多种子预测 均值平滑 Σx/n 方差降低稳定性提升

种子平均概述

米其林评审前夜,你决定搞一次“后厨盲测”。五位厨师分别做一遍招牌菜,每个人的出品都够水准,但细节各有偏差:有人偏咸,有人偏甜,有人火候略大。如果只挑一位厨师的菜端给评审,胜负全凭“那天的手气”。

机器学习里的单次训练,也一样看手气。同一份数据、同一个模型结构,换一个随机种子重跑,验证集分数可能上下浮动几个千分点——在榜单位次寸土必争的竞赛里,这个浮动足以决定你是金牌还是银牌。种子平均的思路,就是不再赌单次运气,而是让模型在多种随机初始化的“平行世界”里各跑一遍,把结果揉在一起。

做法极其朴素:用 S 个不同的随机种子各训练一遍模型,推理时把 S 个预测概率取算术平均作为最终输出。它不需要设计新的模型结构,也不需要额外的训练技巧,只是把同一套训练流程重复运行几次:

就像评审团不会只凭一位厨师的一次出品打分,种子平均让模型不再依赖“单次手气”,而是呈现多种随机初始化下的稳定风味。这是竞赛提分性价比最高的第一板斧。

pavg=1S∑s=1Sps\displaystyle p_{\mathrm{avg}} = \frac{1}{S}\sum_{s=1}^{S} p_s
平均数把 S 次随机“手抖”揉在一起,任何单次的抖动都被冲淡。
  1. 种子预测序列对同一条样本,S 个种子模型各给出一个预测值,排成一列等待合并。
    p1,p2,…,pSp_1, p_2, \ldots, p_S
  2. 累加求和把所有预测值累加,得到它们的总和。
    ∑s=1Sps\sum_{s=1}^{S} p_s
  3. 取平均值总和除以种子数 S,得到平滑后的综合预测,每个样本都独立执行此操作。
    pavg=1S∑s=1Spsp_{\mathrm{avg}} = \frac{1}{S}\sum_{s=1}^{S} p_s

随机种子机制

要让五位厨师真正做到“各有特点”,关键在于他们的“手感差异”从哪来。有人习惯先放盐,有人喜欢大火快炒,有人偏爱低温慢炖——这些手法差异,对应到模型训练中就是随机性的来源。

在深度学习训练里,“手感”来自随机数生成器控制的几个环节:模型权重初始化、样本洗牌顺序、dropout 的丢弃图案,以及数据增强的随机裁剪位置。固定一个随机种子,整条随机链就完全确定了;换一个种子,每一次随机抽取都会走向另一条路径。

种子不是训练数据的属性,而是随机数生成器的“起点”。第 s 个种子模型的权重,从一次独立的高斯分布采样出发:

明白了“手感”来源,你才能确保五位厨师确实在用不同手法做菜,而不是“同一个人戴了五个不同围裙”——否则后面方差消除的数学基础就失效了。种子选择,讲究的是让随机链尽量分叉。

θ0(s)∼N(0,σ2I)\displaystyle \theta_0^{(s)} \sim \mathcal{N}(0, \sigma^2 I)
第 s 个模型只是随机长跑的另一个起点,起点不同,途中看到的风景也不同。
  1. 随机初始参数每个种子的权重从零均值高斯分布采样,作为训练的起点,起点不同则轨迹不同。
    θ0(s)∼N(0,σ2I)\theta_0^{(s)} \sim \mathcal{N}(0, \sigma^2 I)
  2. 数据顺序洗牌第 s 个种子对训练集应用不同的排列,让每个 mini-batch 的构成各不相同。
    πs(D)\pi_s(\mathcal{D})
  3. 完整训练轨迹从第 s 个起点出发、沿第 s 个数据顺序迭代,最终收敛到不同的参数状态。
    θ(s)=Train(θ0(s),πs(D))\theta^{(s)} = \mathrm{Train}(\theta_0^{(s)}, \pi_s(\mathcal{D}))

方差消除原理

为什么综合五位厨师的菜,整体就稳了?想象每位厨师都有“手抖”的瞬间——多抖一下盐勺,那份菜就偏咸。但这些抖动是彼此独立的:这位厨师手抖时,那位厨师可能正稳如泰山。

数学上,种子平均的核心假设是:不同种子模型围绕真实预测的偏差是独立的噪声。既然是独立噪声,正负误差就有机会互相抵消,而不是同方向叠加。这里的“方差”你可以简单理解为预测结果的波动幅度——波动越小,模型越可靠。

设每个种子预测的方差为 σ²,即每个模型预测时上下波动的平均水平。那么 S 个独立预测取平均后的方差为:

预测标准差随种子数按 √S 的速度收缩。从 1 个种子到 4 个种子,方差降为 1/4,标准差降为 1/2。这就是集成学习里“三个臭皮匠顶个诸葛亮”的朴素原理,也是种子平均稳定输出的根基。

Var(1S∑s=1Sps)=σ2S\displaystyle \mathrm{Var}\left(\frac{1}{S}\sum_{s=1}^{S} p_s\right) = \frac{\sigma^2}{S}
独立性越好,平均后越稳;完全独立时,方差被线性压缩到原来的 1/S。
  1. 单模型预测方差每个种子模型的预测在真实值附近波动,波动的平均平方幅度记为 σ²。
    Var(ps)=σ2\mathrm{Var}(p_s) = \sigma^2
  2. 均值方差展开独立变量线性组合的方差,等于各项系数平方乘以方差后的求和,平均预测的系数是 1/S。
    Var(1S∑s=1Sps)=1S2∑s=1SVar(ps)\mathrm{Var}\left(\frac{1}{S}\sum_{s=1}^{S} p_s\right) = \frac{1}{S^2}\sum_{s=1}^{S} \mathrm{Var}(p_s)
  3. 化简结论S 个方差相同的独立噪声相加后取平均,总方差被压缩为原来的 1/S。
    1S2×Sσ2=σ2S\frac{1}{S^2} \times S \sigma^2 = \frac{\sigma^2}{S}

均值策略选择

综合五位厨师时,是不是一定要平均用力?你可能会想:那位连续三年拿到“后厨之星”的厨师,是不是该多听他的意见?这便引出了简单平均与加权平均的选择。

简单平均给了每个种子相同的信任;加权平均则按“口碑”分配权重——通常用验证集分数或 OOF(袋外,Out-of-Fold)预测的指标来决定谁的分量更重。OOF 指的是在交叉验证中,每个样本由“没训练过它的那个模型”给出的预测,用来诚实评估模型表现。

加权平均的数学形式如下:

实践中,当各种子模型分数非常接近时,简单平均几乎就是最优解;只有当某个种子明显优于其他种子时,适度加权才有意义——而且权重必须在验证集上确定,绝不能拿到榜单上去调。

pˉ=∑s=1Swsps,∑s=1Sws=1\displaystyle \bar{p} = \sum_{s=1}^{S} w_s p_s, \quad \sum_{s=1}^{S} w_s = 1
权重是每位厨师在团队中的“话语权”,但所有话语权加起来保持 100%。
  1. 权重非负每个种子的权重取非负值,避免负权重破坏预测概率的尺度。
    ws≥0w_s \geq 0
  2. 加权求和各种子预测按权重混合,权重越大,该种子对最终预测的影响越大。
    pˉ=∑s=1Swsps\bar{p} = \sum_{s=1}^{S} w_s p_s
  3. 归一化约束所有权重之和为 1,保证预测概率仍然落在 0 到 1 的有效范围。
    ∑s=1Sws=1\sum_{s=1}^{S} w_s = 1

种子数量规划

既然种子越多越稳,那是不是把后厨扩大到五十位厨师?你摸了摸钱包——后厨租金、食材、工资,每一项都在报警。这就是计算资源约束:每多一个种子,就要多训练一遍完整模型。

方差降低的收益是递减的。从标准差公式可以看出,误差下降速度是“S 的平方根”——计算量翻四倍,误差才缩一半。前几个种子带来的收益最猛,后面的种子越来越“不过如此”:

在 Kaggle 实践中,种子数量通常取 3 到 10 个。如果训练很贵,取 3 到 5 个即可获得大部分收益;如果训练便宜或有多卡并行,可以取 8 到 10 个。关键指标是单种子重跑两次的分数差异:若差异是 1e-3 量级,说明方差明显,需要种子平均;若差异只有 1e-5,加种子的意义就不大了。

σpˉ=σS\displaystyle \sigma_{\bar{p}} = \frac{\sigma}{\sqrt{S}}
想再稳一点,代价是平方级的:种子数翻 4 倍,误差才缩一半。
  1. 标准差导出对方差 σ²/S 开平方根,得到平均预测的标准差。
    σpˉ=σ2S\sigma_{\bar{p}} = \sqrt{\frac{\sigma^2}{S}}
  2. 化简表达式方差开方后,σ 与 √S 分离,方便观察缩放关系。
    σpˉ=σS\sigma_{\bar{p}} = \frac{\sigma}{\sqrt{S}}
  3. 收益递减描述要使标准差再降一半,种子数必须变为原来的 4 倍,算力成本随之翻倍。
    4S=2S\sqrt{4S} = 2\sqrt{S}

实践流程落地

理论说通了,回到后厨:招牌菜研发的流水线怎么排?关键是把“每位厨师做菜→装盘”变成标准动作,让五道菜的出品能方便地拼到一个盘子里。

落地时,训练阶段就是一个循环:遍历种子列表,每个种子训练一次,保存验证集预测和测试集预测。随后,把多个种子的预测文件按样本索引对齐,取平均,一次提交即可。第 i 条样本的最终预测为:

工程上有两条贴士:第一,所有种子必须共享同一个数据划分,否则不同种子的验证集样本对不上,无法正确平均;第二,预测结果用压缩格式存盘(如 16 位浮点或 npz 文件),否则几十个种子会撑爆磁盘。流水线跑通后,你就掌握了一种“可量产”的稳定手艺。

pfinal,i=1S∑s=1Sp^i(s)\displaystyle p_{\mathrm{final},i} = \frac{1}{S}\sum_{s=1}^{S} \hat{p}^{(s)}_{i}
落地时逐个样本执行平均,形成完整的预测文件,然后一次性提交。
  1. 单样本单种子预测第 s 个种子模型对第 i 条样本给出的预测概率。
    p^i(s)\hat{p}^{(s)}_{i}
  2. 跨种子求和固定样本 i,把 S 个种子的预测累加。
    ∑s=1Sp^i(s)\sum_{s=1}^{S} \hat{p}^{(s)}_{i}
  3. 最终平均预测除以 S 得到该样本的最终预测,循环处理全部样本。
    pfinal,i=1S∑s=1Sp^i(s)p_{\mathrm{final},i} = \frac{1}{S}\sum_{s=1}^{S} \hat{p}^{(s)}_{i}

常见陷阱规避

后厨也会出事故。最隐蔽的一种是:你以为请了五位厨师,其实他们师出同门,菜谱、手法、甚至犯错的习惯都一模一样——他们的“独立抖动”根本不独立。

技术上讲,这就是种子相关性问题。如果多个种子共享同一批数据顺序、同一个预训练权重、或同一次特征选择结果,它们的预测误差就会高度相关。相关性越高,平均带来的方差消除效果越差。当种子间存在相关系数 ρ 时,方差公式修正为:

另一个常见“事故”是数据泄露——如果验证集本身被污染,平均后的分数再高也只是自欺欺人。还有人为了“榜单好看”用公开榜反复试权重,这等于把随机噪声当成了信号,俗称“过度调榜”。规避之道只有一条:让每位厨师真正拥有自己的做法——独立初始化、独立数据顺序、独立验证集,并且只在验证集上做决策,绝不偷看评审的口味。

Var(pˉ)=σ2S+S−1Sρσ2\displaystyle \mathrm{Var}(\bar{p}) = \frac{\sigma^2}{S} + \frac{S-1}{S}\rho\sigma^2
种子若近亲繁殖,平均带来的稳定就打了折扣;完全相关时平均完全失效。
  1. 相关性度量用相关系数 ρ 刻画两个种子预测之间的线性依赖程度。
    ρ=Corr(pa,pb)\rho = \mathrm{Corr}(p_a, p_b)
  2. 相关修正方差误差不完全独立时,均值方差在独立项之外多出一项与 ρ 相关的贡献。
    Var(pˉ)=σ2S+S−1Sρσ2\mathrm{Var}(\bar{p}) = \frac{\sigma^2}{S} + \frac{S-1}{S}\rho\sigma^2
  3. 完全相关极限ρ 趋近 1 时方差回到 σ²,说明各种子已退化为同一个模型。
    lim⁡ρ→1Var(pˉ)=σ2\lim_{\rho \to 1} \mathrm{Var}(\bar{p}) = \sigma^2

工程化扩展

一家私房菜馆,和一百家连锁店的后厨管理法,完全不同。种子平均从 Kaggle 比赛走向生产环境,也要经历一次“标准化”改造。

第一个扩展是与 K 折交叉验证结合:每个种子不仅训练一次,还要在 K 个折上各训练一次,共训练 S×K 个模型。第 s 个种子在第 k 折上训练出的模型对样本的预测记为 p_{s,k},最终预测先在折内平均、再在种子间平均:

第二个扩展是区分“种子平均”和“多模型集成”:种子平均是同一架构不同初始化的平凡融合;多模型集成则是不同架构、不同特征、不同训练技巧的“异才组合”,上限更高但成本也更高。生产部署时,种子平均适合作为基线系统的低成本稳定器——把 S 个模型的平均预测封装成一个推理服务,允许并行就并行推理,不允许就做成离线批量预测。从研发招牌菜到开连锁店,种子平均始终是那位从不失误的行政总厨:用制度的确定性,对冲每一次随机的手抖。

pfinal=1S∑s=1S(1K∑k=1Kps,k)\displaystyle p_{\mathrm{final}} = \frac{1}{S}\sum_{s=1}^{S}\left(\frac{1}{K}\sum_{k=1}^{K} p_{s,k}\right)
种子和折两把筛子同时过滤噪声,方差被压得更低。
  1. 种子与折的二维预测第 s 个种子在第 k 折上训练出的模型,对某个样本的预测值。
    ps,kp_{s,k}
  2. 折内平均K 折的预测先取平均,得到该种子对每个样本的稳定预测。
    1K∑k=1Kps,k\frac{1}{K}\sum_{k=1}^{K} p_{s,k}
  3. 种子间再平均对所有种子再做一次平均,得到最终双重平滑的预测。
    pfinal=1S∑s=1S(1K∑k=1Kps,k)p_{\mathrm{final}} = \frac{1}{S}\sum_{s=1}^{S}\left(\frac{1}{K}\sum_{k=1}^{K} p_{s,k}\right)

AI 应用场景

Kaggle 表格竞赛提分

阶段:模型训练与验证

解决的问题:单种子模型在私有榜上经常“翻车”——验证集涨分但私有榜掉分,本质是单次随机抽样的运气在作祟。种子平均降低预测方差,让公开榜和私有榜的差距收缩,成绩更接近模型的真实水平。

具体案例:在一场房价预测竞赛中,选手使用 LightGBM 以相同超参数跑 5 个种子(seed=0/7/21/42/2024),将 5 份预测取平均后提交。公开榜分数从单种子最优的 0.32114 稳定到平均后的 0.32096,并在私有榜上取得了比任何单种子都好的名次——单种子的最优排名是 37 名,种子平均后的最终排名是 21 名。

金融风控模型稳定性建设

阶段:模型监控与生产部署

解决的问题:信贷审批模型每次全量重训后,评分分布会因随机种子产生微小变化,导致客诉和监管质疑。种子平均让评分分布在多次重训间保持稳定,降低模型治理成本。

具体案例:某银行信用卡申请评分模型,单种子重训时评分的人群稳定性指标(PSI)经常超过 0.1 的警戒线;采用 3 个种子平均预测后,PSI 稳定在 0.05 以下,模型通过监管审计时提供了可复现的稳定性报告。

推荐系统离线评估基线

阶段:离线实验评估

解决的问题:推荐排序模型离线 Auc 提升千分之一,但换个随机种子可能变成下降千分之一,团队无法判断算法改进是否真实有效。种子平均提供了一条稳定的评估基线,把“算法效果”和“随机噪声”分开。

具体案例:某视频推荐团队在评估新特征组合时,统一使用 5 个种子各训练一次、平均 OOF 指标来对比实验组与对照组。原本单种子评估结论是“新特征无提升”,改为种子平均后,稳定观察到 0.0008 的 Auc 提升,最终该特征成功上线。

Python 演示

python38 行
import numpy as npfrom sklearn.datasets import make_classificationfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import roc_auc_score X, y = make_classification(    n_samples=800, n_features=12, n_informative=7,    n_redundant=3, random_state=42)X_train, X_val, y_train, y_val = train_test_split(    X, y, test_size=0.25, random_state=42) SEEDS = [0, 3, 7, 21, 42, 99, 123, 2024]pred_matrix = []for s in SEEDS:    clf = LogisticRegression(max_iter=800, random_state=s)    clf.fit(X_train, y_train)    prob = clf.predict_proba(X_val)[:, 1]    pred_matrix.append(prob)    print("seed %4d  auc=%.4f" % (s, roc_auc_score(y_val, prob))) pred_matrix = np.vstack(pred_matrix)avg_probs = pred_matrix.mean(axis=0)avg_auc = roc_auc_score(y_val, avg_probs) per_seed_auc = [roc_auc_score(y_val, p) for p in pred_matrix]print("\n单种子最佳 AUC: %.4f" % max(per_seed_auc))print("单种子平均 AUC: %.4f" % np.mean(per_seed_auc))print("8种子平均后 AUC: %.4f" % avg_auc) w = np.ones(len(SEEDS)) / len(SEEDS)equal_weighted = pred_matrix.T @ wprint("等权加权(即简单平均): %.4f" % roc_auc_score(y_val, equal_weighted)) w2 = np.array([0.5, 0.5, 1.0, 1.5, 2.0, 1.0, 0.5, 0.5])w2 = w2 / w2.sum()weighted_probs = pred_matrix.T @ w2print("验证集调权重后 AUC: %.4f" % roc_auc_score(y_val, weighted_probs))
目的:用 8 个随机种子训练同一模型,对比单种子分数与种子平均后的分数,并演示等权平均与验证集加权平均的差异。
  1. SEEDS = [0, 3, 7, 21, 42, 99, 123, 2024]手工挑选一组分散的种子,尽量让随机链“分叉”,避免相关性过高的邻接种子。
  2. for s in SEEDS:遍历种子列表,每次训练都只有随机种子不同,模型结构、数据划分完全一致。
  3. LogisticRegression(max_iter=800, random_state=s)同一模型工厂,种子作为唯一变量,对应“同结构、不同手感”的厨师。
  4. pred_matrix.append(prob)把每个种子的验证集预测概率收集到列表,等待拼成矩阵。
  5. pred_matrix = np.vstack(pred_matrix)把 8 个长度为 200 的预测堆叠成 8×200 的矩阵,行是种子、列是样本。
  6. avg_probs = pred_matrix.mean(axis=0)沿着种子维度取平均,得到每个样本的集成预测,这就是核心操作。
  7. pred_matrix.T @ w用矩阵乘法实现加权平均,w 是归一化后的权重向量,等价于每个种子的预测乘以权重再求和。
  8. w2 = np.array([0.5, 0.5, 1.0, 1.5, 2.0, 1.0, 0.5, 0.5])给验证集上表现最好的种子更大权重,演示“口碑加权”;注意这是在有泄露风险的示范场景下使用。

常见误区

误区反正多训练一个模型也不贵,我直接上 50 个种子平均,分数一定最高。

正解方差削减按 √S 递减,从 50 个种子加到 100 个,标准差只缩到原来的 0.71 倍,但计算量翻倍。Kaggle 经验是 3 到 10 个种子回报率最高;当种子数翻倍后分数几乎不动,说明模型方差已经很小,再加种子没有意义。把算力花在特征工程或调参上往往收益更大。

为何常见:直觉上“人多力量大”,忽略了边际收益递减的数学规律和预算约束。

误区反正都是把多个模型的预测平均,种子平均和模型集成是一回事。

正解种子平均是同一个模型结构、同一套超参数,仅随机初始化不同的“平凡集成”,复杂度极低;多模型集成是不同架构、不同特征、不同损失函数的“异构集成”,偏差和方差都能降,但工程量和调参成本高得多。竞赛的正确顺序是先做种子平均打底,再用多模型集成冲顶。

为何常见:两者在“取平均”这一步看起来一模一样,容易忽略背后模型结构的本质差异。

误区我把 5 个种子的预测平均了,LB 分数必须比最好的单种子高。

正解种子平均降低的是方差而不是偏差。如果模型整体欠拟合,平均后依然差;如果种子间高度相关,提升很小甚至因引入弱种子而略微下降。它保证的是“更接近期望水平”,不是“必然超过最好的单次运气”——最好的单种子偶尔会赢,但不可复制。

为何常见:把“稳定性提升”误解为“绝对分数提升”,忽略了好运气与稳定性的区别。

误区既然加权平均更好,我用 LB 分数试不同权重组合,选出 LB 最高的那组权重不就行了?

正解公开榜只有几百条样本,噪声极大。在 LB 上调权重等于拟合一个极小的验证集,会导致私有榜上的“过拟合”,这是竞赛中俗称的“调榜”。正确做法是在内部分出的验证集或 OOF 上确定权重,LB 只做一次性最终验证。

为何常见:看到 LB 涨了的即时反馈让人兴奋,容易忘记样本量太小,把随机噪声当成了真实信号。

面试题

Q1. 种子平均(Seed Averaging)的核心思想是?

单选题 · easy

  • A.用多个不同结构的模型各自训练后投票
  • B.用不同随机种子训练同一模型再取平均← 正确答案
  • C.改变数据集划分来训练多个模型求平均
  • D.对训练数据重复采样多次再合并训练

答案:B。种子平均的关键是“同结构、同超参、不同随机种子”,预测取平均。A 是多模型集成,C 改变划分属于交叉验证技巧,D 是数据层面操作,都不是对种子做平均。

Q2. 种子平均主要降低的是预测中的哪一类误差?

单选题 · easy

  • A.偏差(bias),即模型系统性偏离真实值
  • B.方差(variance),即随机初始化造成的波动← 正确答案
  • C.噪声(noise),即数据本身不可消除的干扰
  • D.特征误差,即数据预处理引入的失真

答案:B。种子平均通过平均多个随机起点的预测来平滑波动,针对的是随机性导致的方差。偏差和不可约噪声无法通过多次重复平均来消除,特征误差与种子无关。

Q3. 若每个种子预测的方差为 σ²,S 个独立种子平均后的预测方差是?

单选题 · mid

  • A.σ²
  • B.σ²/S← 正确答案
  • C.σ²/√S
  • D.S·σ²

答案:B。独立变量和的方差等于方差之和,S 个方差为 σ² 的变量求平均后,方差变为 Sσ²/S²=σ²/S。选项 C 是标准差的形式,A 是完全相关时的值,D 是求和而非平均的方差。

Q4. 关于随机种子对模型训练的影响,下列说法正确的是?

单选题 · mid

  • A.种子只影响数据划分,不影响权重初始化
  • B.固定种子后训练过程依然完全不可复现
  • C.种子决定了初始化、洗牌等随机环节的走向← 正确答案
  • D.数值越大的种子训练出的模型一定越好

答案:C。随机种子是随机数生成器的起点,控制权重初始化、样本洗牌、dropout 等所有随机环节。固定种子即可复现实验,种子大小与模型质量没有单调关系。

Q5. 以下哪些做法有助于保证种子多样性?

多选题 · mid

  • A.每个种子使用不同的随机初始化参数← 正确答案
  • B.每个种子使用独立的样本洗牌顺序← 正确答案
  • C.所有种子共享同一个预训练权重起点
  • D.每个种子使用不同的随机数据增强方案← 正确答案

答案:ABD。不同的初始化、独立的洗牌顺序、不同的数据增强都是随机链分叉的表现,能降低种子间预测相关性。共享同一个预训练权重会让模型起点趋同,削弱多样性,反而降低种子平均的效果。

Q6. 加权平均中,各种子模型的权重通常依据什么确定?

单选题 · mid

  • A.在公开榜单上反复试探出最优权重
  • B.内部验证集或 OOF 预测上的表现← 正确答案
  • C.训练集上的损失函数大小排序
  • D.随机种子数值的奇偶与大小分布

答案:B。权重应在内部分出的验证集或 OOF 上确定,这些数据没有参与训练,评估诚实。公开榜样本太少,调权重会过拟合榜单;训练集损失有严重过拟合偏差;种子数值与模型质量无关。

Q7. 关于种子平均与多模型集成的区别,下列说法正确的有?

多选题 · hard

  • A.种子平均使用相同的模型结构和超参数← 正确答案
  • B.多模型集成可以融合不同的模型架构← 正确答案
  • C.种子平均能同时降低模型的偏差和方差
  • D.多模型集成的工程复杂度通常高于种子平均← 正确答案

答案:ABD。种子平均是同构模型的平凡集成,主要降低方差而非偏差;多模型集成通过异构模型的互补性,有机会同时改善偏差与方差,但工程和调参成本更高。

Q8. 已知单种子预测的标准差为 0.02,使用 4 个完全独立的种子平均后,标准差约为?

单选题 · easy

  • A.0.02
  • B.0.01← 正确答案
  • C.0.005
  • D.0.04

答案:B。标准差与种子数的平方根成反比,σ/√S = 0.02/√4 = 0.01。选项 A 是没有集成时的值,C 是 16 个种子的效果,D 是误差叠加的错误方向。

Q9. 种子平均效果变差,可能的原因有哪些?

多选题 · hard

  • A.各种子之间的预测高度相关← 正确答案
  • B.验证集存在数据泄露导致评估失真← 正确答案
  • C.模型整体处于严重欠拟合的状态← 正确答案
  • D.使用了加权平均而非简单平均

答案:ABC。高度相关让方差无法抵消,数据泄露让平均分数虚高且不可信,欠拟合让偏差主导误差、平均也无济于事。简单平均和加权平均只是策略差异,不是“变差”的必然原因。

Q10. 要使 S 个种子平均真正降低预测方差,最重要的前提是?

单选题 · mid

  • A.种子数 S 尽可能取到最大上限
  • B.种子模型间的误差相互独立且方差相近← 正确答案
  • C.每个种子使用不同的模型结构进行训练
  • D.每次训练前清理全部 GPU 缓存

答案:B。方差公式成立的核心假设是预测误差独立同分布。误差独立时相互抵消,方差随 1/S 下降;若相关性高则抵消效果大打折扣。种子数不是越大越好,不同结构属于多模型集成,清理缓存与方差无关。