评价与泛化

训练损失说明模型对训练目标的拟合情况。要判断它是否能完成任务,还要在保留数据上计算任务指标,并观察换一批对象、时间或环境后表现如何变化。原树中的“正确性”对应明确任务下的预测或决策结果,“泛化性”对应这些能力能否延续到未参与学习的数据。

泛化误差

给定数据分布 PP、模型 fθf_\theta 和损失 ℓ\ell,总体风险为

R(θ)=E(x,y)∼P[ℓ(fθ(x),y)].R(\theta)=\mathbb E_{(x,y)\sim P}[\ell(f_\theta(x),y)].

有限训练集只能计算经验风险 R^train=N−1∑iℓ(fθ(xi),yi)\hat R_{\mathrm{train}}=N^{-1}\sum_i\ell(f_\theta(x_i),y_i)。训练过程刻意降低它,所以同一训练集上的成绩会偏乐观。独立测试集的平均损失用于估计确定模型在相应分布上的风险。

这项解释依赖测试样本如何取得。若训练和测试来自同一群体、采用相同标注规则,可评价同分布泛化;若部署在新的医院、设备或季节,需要另外构造对应的分布外测试。测试准确率高不能回答一个从未被测量的环境问题。

划分单位也决定结论范围:把同一个人的不同照片随机分到两边,测到的主要是对已见身份的新照片表现;按身份隔离才更接近新身份任务。分组与时间切分的操作见数据划分。

分类与回归指标

二分类中,把关注的类别定义为正类。TP 是正类判对,FP 是负类被误报为正,FN 是正类被漏报,TN 是负类判对。常用指标为

Accuracy=TP+TNTP+TN+FP+FN,Precision=TPTP+FP,Recall=TPTP+FN,\begin{gathered} \mathrm{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN},\\ \mathrm{Precision}=\frac{TP}{TP+FP},\\ \mathrm{Recall}=\frac{TP}{TP+FN}, \end{gathered} F1=2 Precision RecallPrecision+Recall=2TP2TP+FP+FN.\begin{aligned} F_1&=\frac{2\,\mathrm{Precision}\,\mathrm{Recall}} {\mathrm{Precision}+\mathrm{Recall}}\\ &=\frac{2TP}{2TP+FP+FN}. \end{aligned}

例如 100 条记录中有 10 个正类,模型得到 TP=8,FP=12,FN=2,TN=78TP=8,FP=12,FN=2,TN=78。准确率为 0.86,precision 为 0.4,recall 为 0.8,F1 约 0.5333。始终预测负类的模型准确率为 0.90,却漏掉全部正类。若任务关注正类召回,两个准确率的大小无法代表目标是否实现。

改变分类阈值会改变混淆矩阵。应在验证集上按业务代价或目标 recall 选定阈值,再锁定到测试阶段。分母为零时需明确库的处理约定。多分类可以对每类分别计算:macro 给每类相同权重,weighted 按各类样本数加权,micro 先汇总计数。完整定义见 scikit-learn 指标文档。

AUROC 衡量正负样本的排序区分能力,绘制真阳性率相对假阳性率的曲线;PR 曲线直接呈现 precision 与 recall 的取舍。正类很少时,结合 PR 曲线和所选阈值的计数更容易判断误报负担。Average Precision 按 recall 的增量加权 precision,与任意梯形插值的“PR 面积”并非总是同一数值,报告时写清实现。

回归中,令 ei=y^i−yie_i=\hat y_i-y_i,测试样本数为 NN:

MAE=1N∑i∣ei∣,RMSE=1N∑iei2.\begin{gathered} \mathrm{MAE}=\frac1N\sum_i|e_i|,\\ \mathrm{RMSE}=\sqrt{\frac1N\sum_i e_i^2}. \end{gathered}

误差为 [1,2][1,2] 时,MAE 为 1.5,RMSE 为 2.5≈1.5811\sqrt{2.5}\approx1.5811。二者与标签同单位,但 RMSE 更强调较大误差。多输出回归还要明确每个维度是否归一化、怎样加权;报告温度误差时应恢复为摄氏度等实际单位。

概率校准

一个模型每次都给正确类 0.51,另一个给 0.99,它们可能有相同准确率,却有不同概率质量。若预测置信度约为 0.8 的样本确实约 80% 正确,称该范围内较为校准。可以分箱绘制可靠性图,并报告负对数似然或 Brier score。

二分类 Brier score 为 N−1∑i(pi−yi)2N^{-1}\sum_i(p_i-y_i)^2,同时评价概率和结果。分箱 ECE 把各箱准确率与平均置信度的差取绝对值,再按箱内样本比例加权;箱数、边界和样本量会改变估计,需一起报告。

温度缩放在验证集拟合一个正标量 TT,把 logits 改为 z/Tz/T 后计算 softmax。它保持类别分数排序,因而保持 argmax 分类,却可调整概率的尖锐程度。Guo 等,2017研究了现代神经网络的校准及这种后处理方法。TT 不能用最终测试标签拟合。

生成与决策指标

语言模型对固定测试语料的逐 token 平均负对数似然为 LL 时,困惑度 PPL=eL\mathrm{PPL}=e^L。例如 L=log⁡4L=\log4,PPL 为 4。比较要求分词器、上下文长度、有效位置与测试语料一致;同一句话被分成不同数量的 token 时,逐 token PPL 无法直接对齐。Hugging Face 的困惑度说明讨论了固定上下文窗口与分词的影响。

翻译或摘要可计算 BLEU、ROUGE 等与参考文本的重合指标,但参考答案的覆盖范围会影响分数。开放问答还要直接检查事实性、约束遵守和任务完成度。记录题目、提示模板、采样温度、生成长度、停止词和重试次数;同一题生成多次后挑最好结果,是另一种推理预算。

图像生成可使用 FID,比对真实与生成图像在指定特征提取器中的均值和协方差:

FID=∥μr−μg∥22+tr⁡(Σr+Σg)−2tr⁡((Σr1/2ΣgΣr1/2)1/2).\begin{aligned} \mathrm{FID}&=\|\mu_r-\mu_g\|_2^2\\ &\quad+\operatorname{tr}(\Sigma_r+\Sigma_g)\\ &\quad-2\operatorname{tr}\left((\Sigma_r^{1/2}\Sigma_g\Sigma_r^{1/2})^{1/2}\right). \end{aligned}

μr,μg∈Rd\mu_r,\mu_g\in\mathbb R^d 是两组特征均值,Σr,Σg∈Rd×d\Sigma_r,\Sigma_g\in\mathbb R^{d\times d} 是协方差,tr⁡\operatorname{tr} 为矩阵迹。平方根指半正定矩阵平方根。FID 越低表示这种特征统计量越接近;实现、样本数量、图像预处理与参考集都应固定。Heusel 等,2017引入了这一评价。条件生成还要单独检查与条件的匹配程度,分布距离没有逐条检查文字或布局约束。

强化学习常报告每回合回报、任务成功率、完成耗时和约束违反率。回报取决于奖励定义,奖励缩放后的数值无法直接与旧定义比较。应同时写出环境版本、回合上限、初始条件分布,以及评价时的策略是否随机采样。

欠拟合与过拟合

比较曲线前,应确保指标可比。带随机增强、Dropout 的训练损失可能高于固定预处理和评估模式下的验证损失。可以额外用评估模式在训练子集上计算同一指标,再判断差距。

观察 下一步应验证的原因 可做的操作
训练和验证都差 标签或输入错误、优化失败、模型表达不足 先拟合小样本,检查梯度,再比较容量或特征
训练持续改善,验证停滞或恶化 过拟合,或训练验证分布不一致 检查划分和样本差异,比较早停、正则化和数据量
验证不错,部署明显下降 环境、输入管线或类别比例变化 用部署数据分层评估,核对预处理与标签定义
结果随种子剧烈变化 数据太少、训练不稳定或选择噪声 重复完整训练,报告分布,检查失败运行

欠拟合表示模型还不能充分拟合训练任务,原因可以是容量、输入信息,也可以是优化没有完成。过拟合表示在训练样本上的改进未能转化为目标分布上的改进。二者需要结合数据、训练过程与评价指标判断,不能只看某个绝对损失阈值。

正则化、Dropout 与数据增强

L2 正则化把目标改为 L+λ∥θ∥22/2L+\lambda\|\theta\|_2^2/2,其额外梯度为 λθ\lambda\theta。它偏好较小的参数范数,λ\lambda 由验证集选择。对于 Adam,L2 惩罚与 AdamW 的独立权重衰减有不同更新效果,推导见优化器。

Dropout 原论文对照完整两隐藏层网络与随机移除部分神经元后的稀疏连接网络

图 1:Srivastava 等,2014,Dropout Figure 1,裁去周围正文。叉号表示该次训练中被丢弃的单元。

设隐藏激活为 hh,保留概率为 qq,独立掩码 mj∼Bernoulli⁡(q)m_j\sim\operatorname{Bernoulli}(q)。常用的 inverted dropout 在训练时计算

h~j=mjhjq.\tilde h_j=\frac{m_jh_j}{q}.

因此在给定 hh 时 E[h~j]=hj\mathbb E[\tilde h_j]=h_j;评估时直接使用 hh。如果 h=[2,4]h=[2,4]、q=0.5q=0.5,一次掩码为 [1,0][1,0],输出就是 [4,0][4,0]。参数本身仍保留,下个 batch 会重新抽掩码。它使网络在不同子网络上接受训练,减少对某些特定激活组合的依赖。

原论文也用“训练不缩放、测试乘保留概率”的记号解释期望匹配;这里采用 PyTorch 的训练时缩放约定。Dropout(p=0.2) 的 p 是丢弃概率,等于 1−q1-q。对经过后续非线性的整个网络,保持单个激活的期望并不意味着随机网络输出的期望严格相同。论文 §4与 PyTorch Dropout 文档可对照阅读。

数据增强通过构造额外输入表达希望模型保持的性质,如物体轻微位移后类别不变。其标签约束见数据增强。早停则根据验证表现限制继续拟合训练集的时间。加大正则、增强或缩短训练都可能导致训练不足,所以每项设置都要在相同验证协议下比较。

超参数选择与消融实验

超参数包括学习率、权重衰减、batch size、网络宽度、训练轮数和分类阈值。先规定主指标、搜索范围和训练预算,再在验证集上选择,最终测试只评价选定方案。小数据可采用交叉验证,每一折都重新拟合预处理;若还要估计整个调参程序的泛化表现,可用外层评价、内层选参的嵌套交叉验证。

消融实验回答某个设计在指定条件下贡献多少。例如研究增强是否有效,可以固定划分、模型、更新预算和评价代码,对比有无该增强,并用同一组随机种子重复。若去掉某模块同时减少参数量、训练计算和输入信息,应明确这些共同变化,不能把全部差值都归结为单一机制。

一种报告表可列出“配置、参数量、更新步数、验证主指标、多种子均值和标准差、训练耗时”。正式比较时提前固定所报检查点的选择规则。某配置调了很多次而另一个只试一次,会让搜索预算也参与结果。

置信区间与错误分析

若测试样本近似独立,二元正确性计数得到准确率 p^\hat p,其标准误差可粗略估计为 p^(1−p^)/N\sqrt{\hat p(1-\hat p)/N}。当 N=1000,p^=0.8N=1000,\hat p=0.8 时,标准误差约 0.01265,正态近似的 95% 区间约为 [0.775,0.825][0.775,0.825]。小样本或接近 0、1 时,应改用更合适的二项比例区间。

同一人的多张图片、同一场景的多个回合常有相关性,不能按每张图片都独立来缩小区间。bootstrap 可按用户或场景为单位有放回重采样,反复计算指标,再取分位数;比较两个模型时,用同一重采样索引计算差值,保留配对关系。

测试重采样衡量固定模型在有限测试数据上的不确定性;改变训练种子再完整训练,衡量训练过程的波动。两类波动来源不同。强化学习结果通常还跨任务变化,Agarwal 等,2021讨论了少量运行下的聚合指标与区间估计。

最后按类别、输入长度、对象来源或难度分组查看错误,再抽查原始样本。记录标签错误、输入缺失、边界样本与稳定失败模式,并回到训练集调整数据或模型。若根据测试错误做了改进,这组测试已经参与开发;下一次最终评价需要新的保留数据或明确标注为迭代后的开发集结果。