训练机器学习模型的目的,不是让它记住已经见过的样本,而是希望它面对新的输入时,仍然能够给出可靠预测。
这种能力称为泛化能力。
一个模型在训练数据上误差很小,并不能证明它真正有效。它可能只是记住了训练样本,也可能只在一个非常狭窄的参数范围内表现良好。工程应用真正关心的是:
当模型面对没有参与训练的新样本时,它还能否保持性能?
这就是泛化问题。
一、训练准确不等于模型有效
假设使用一万个天线样本训练神经网络,输入是结构参数,输出是谐振频率。
模型在训练集上的平均误差只有0.1%。这个结果看起来很好,但仍然不能回答以下问题:
- 新天线结构上的误差是多少;
- 参数接近训练范围边界时是否可靠;
- 出现训练中没有覆盖的结构时会怎样;
- 少数极端样本是否会严重失效;
- 实际工程数据与训练数据是否属于同一分布。
因此,训练误差反映的是模型对已有样本的适应程度,不是对未来样本的能力保证。
泛化能力必须通过模型没有参与训练的数据进行检验。
二、泛化不是“预测任何新数据”
“模型能够预测新数据”这句话容易产生误解。
机器学习模型通常只能对与训练任务和训练数据具有合理联系的新样本进行可靠预测。新样本虽然没有出现过,但不能与训练数据毫无关系。
例如,训练数据覆盖:
天线长度:20—40 mm
介电常数:2—4
工作频率:1—5 GHz
预测长度30 mm、介电常数3、工作频率3 GHz的样本,属于训练范围内部的新组合,通常更接近插值问题。
如果直接预测:
长度:100 mm
介电常数:12
工作频率:40 GHz
模型已经远离训练分布。这不是一般意义上的新样本,而是强外推。
因此,泛化不能理解为:
模型在任何未知问题上都能有效。
更准确的说法是:
模型能否在预期应用范围内,对未参与训练但与训练数据具有合理关联的样本保持性能。
三、决定泛化的两个关键条件:覆盖性与相关性
判断数据是否支持泛化,不能只看样本数量。更重要的是两个条件。
1. 覆盖性
覆盖性回答:
训练数据是否覆盖了实际应用中可能出现的重要变化?
对于电磁问题,需要考虑:
- 几何尺寸范围;
- 材料参数范围;
- 工作频段;
- 激励和边界条件;
- 典型结构与极端结构;
- 谐振点、突变区域和困难样本。
一万个集中在很窄参数区域的样本,可能不如一千个合理覆盖整个设计空间的样本。
所以,数据多不等于覆盖充分。
2. 相关性
相关性回答:
训练数据是否真正对应未来要解决的任务?
即使数据很多,如果物理条件、输入定义、输出定义或任务目标不同,也未必有用。
例如,用天线辐射数据训练出的模型,不能因为散射问题同样服从Maxwell方程,就直接用于预测雷达散射截面。两者的激励方式、输入输出关系和数据分布都发生了变化。
因此,有价值的数据需要同时满足:
对目标问题有覆盖,并且与目标任务相关。
四、插值通常比外推可靠
机器学习模型在训练数据覆盖范围内部预测,通常属于插值;超出训练范围预测,则属于外推。
插值并不一定简单。高维参数空间中,即使每个变量都处于训练范围内,变量组合也可能落在样本稀疏区域。但总体而言,插值比远距离外推更可靠。
外推困难的原因是,训练数据没有告诉模型范围之外的规律如何变化。模型只能延续训练范围内形成的趋势,而这种延续未必符合真实物理规律。
例如,模型在某一频段内学到平滑变化关系,不意味着跨越新的谐振点后仍然有效。
因此,工程报告不能只说“模型可以预测未见样本”,还应说明:
- 新样本是否位于训练参数范围内;
- 距离训练样本有多远;
- 是否进入新的物理工作区间;
- 是否发生结构、材料或边界条件变化。
五、数据分布变化会破坏泛化
训练阶段的数据通常来自某个确定过程,例如参数化仿真。但模型投入应用后,真实输入可能发生变化。
常见变化包括:
- 几何制造误差;
- 材料参数漂移;
- 测量噪声;
- 仿真数据与实验数据差异;
- 新结构类型;
- 新的频率范围;
- 不同设备或实验环境。
这种训练数据与应用数据之间的差异,通常称为分布变化。
模型可能在仿真测试集上表现很好,但面对真实测量数据时明显下降。原因未必是神经网络结构不够复杂,而可能是训练数据没有代表真实应用环境。
因此,泛化评价不能只在“随机拆分的同一批数据”上进行。还需要设计更严格的测试,例如:
- 留出整类结构;
- 留出参数边界区域;
- 使用不同数据来源;
- 使用实验数据测试;
- 单独评估困难样本。
六、泛化能力不能由一个平均误差证明
模型的平均误差较小,只能说明整体表现,不能保证所有样本可靠。
例如,一百个测试样本中,九十五个误差很小,五个误差极大,平均值仍可能看起来不错。但在工程应用中,这五个失败样本可能恰好对应关键设计点。
因此,泛化评价至少应同时关注:
- 平均误差;
- 最大误差;
- 误差分布;
- 边界样本表现;
- 典型失败案例。
对于安全性或可靠性要求高的任务,还应判断模型什么时候可能失效,而不是只给出一个总体准确率。
七、学习者认识的进一步修正
初步认识: 只要训练样本数量足够多,模型就能获得较好的泛化能力。
这个判断不完整。
增加数据通常有帮助,但前提是新增数据真正扩展了有效覆盖范围,并与目标任务相关。如果只是重复采集相似样本,数据规模变大,信息增量却很有限。
更准确的认识是:
泛化能力不仅取决于数据数量,更取决于数据覆盖性、任务相关性、模型复杂度和评价方式。
对于工程问题,数据设计本身往往比盲目扩大模型更重要。
八、本节小结
泛化是指模型对未参与训练的新样本保持性能的能力。
需要记住五点:
- 训练误差小,不等于模型具有泛化能力;
- 泛化只在合理的任务和数据范围内成立;
- 数据质量的核心是覆盖性与相关性;
- 插值通常比外推可靠;
- 泛化评价不能只看平均误差,还应检查边界和失败样本。
下一节将进一步讨论:
怎样划分训练集、验证集和测试集,才能真正检验模型的泛化能力,而不是得到一个虚假的好结果?