可容许假设、归纳偏置与训练分布:深度学习泛化的几何解析
在深度学习研究中很多人会把“模型学到了什么”归结为网络结构和训练数据的功劳却常常忽略一个更底层的问题为什么在同一个假设空间里模型最终只落到了某些区域而不是另一些同样能做到零损失的“好解”如果你只把训练当成“在函数空间里搜索”就很难解释清楚下面几个现象两个结构完全一样的网络用同一批数据训练一个泛化得很好另一个却严重过拟合或者一个理论上表达能力足够强的网络却怎么训练也无法拟合一个简单函数。这些问题背后其实藏着一个非常重要的概念组合Admissible Hypotheses可容许假设、Inductive Bias归纳偏置、Training Distributions训练分布。它们三者共同作用决定了学习系统最终能到达的“解的几何形状”。这篇文章会把这条链路的原理拆开讲清楚然后用一个最小实验演示——当你改变训练分布或模型归纳偏置时可容许假设集合的边界会如何移动以及这对你调模型、设计损失函数、选择数据增强策略有什么直接帮助。1. 这篇文章真正要解决的问题1.1 为什么你会关心“可容许假设”先从一个典型场景说起。你做图像分类用了 ResNet预训练权重加载好了数据增强也上了但模型就是无法拟合训练集中很小一部分样本。此时你的第一反应是什么加大学习率换优化器还是找数据标注错误都有可能但还有一个你大概率没想到的原因你当前的问题设置根本没有把这些样本对应的目标函数放进“可容许假设”集合里。所谓可容许假设是指在给定模型架构、优化算法、初始化策略、正则化方式、以及训练数据分布的前提下学习过程实际上能够收敛到的那些假设。它与“假设空间”不是一回事。假设空间是所有结构上可以被网络表达的函数的集合而可容许假设是这个空间里真正走得通的子集。模型能不能学到某个函数取决于这个函数是否落在可容许区域内。传统观点会告诉你神经网络的假设空间非常大可以逼近任意函数所以只需要足够数据它就能学会。这种说法有误导性。在现代深度学习里真正起决定作用的不是假设空间的容量而是可容许集合的几何结构。只有当我们明白了这个集合是如何被构建出来的才能回答为什么某些任务学得动、某些任务学不动为什么某类数据增强有效为什么不同随机种子训练出来的模型在权重空间相距遥远但在函数空间表现一致。1.2 三类读者最适合阅读本文如果你属于下面任何一种情况这篇文章值得你读完做模型训练调优的工程师你需要理解单纯调学习率是在固定几何中挪动位置而不是改变几何本身。真正改变模型能力的是调整归纳偏置与训练分布。做小样本、领域迁移研究的同学当目标域的假设不在源域训练分布诱导的可容许集合内时迁移学习注定失败。这不是模型容量不够而是几何没有覆盖到。对深度学习理论感兴趣的读者本文用几何视角统一理解“架构设计、优化动态、数据分布”这三个平时容易被分开讨论的模块。2. 核心概念与理论背景2.1 什么是 Admissible Hypotheses“可容许假设”这个概念并不算新但在深度学习语境下需要重新理解。在经典的统计学习理论中我们有一个假设空间 ℋ学习算法在 ℋ 中选择一个假设 h使得经验风险最小化。理论通常假设这个选择过程可以覆盖整个 ℋ。但实际上因为优化算法只能从某个初始点出发沿着梯度方向移动因为正则化会把解吸引到特定区域因为数据采样的随机性真正能够到达的 ℋ 的子集是受约束的。现代深度学习中对这个概念更直观的称呼是“可达的解决方案集合”reachable solution set或“可学习的函数子空间”。它有几个特点它取决于训练流程的整体设定而不仅是模型结构它往往是一个连通的或近似连通的几何区域而不是一堆孤立点它的“形状”决定了泛化边界。举个例子。你在高维空间里训练线性回归假设空间是所有权重向量 w ∈ R^d。L2 正则化并不改变假设空间但它把可容许集合从整个 R^d 收缩为中心在原点的球。球半径受正则系数控制。这个“球”就是一个最直观的可容许假设区域。换成深度网络情况类似只是形状复杂得多。2.2 归纳偏置决定几何形状的隐形之手归纳偏置是学习算法内置的一组先验偏好它决定了当多个假设都能解释训练数据时算法优先选择哪一个。在深度学习里归纳偏置无处不在卷积网络的局部连接与平移等变性Transformer 的自注意力结构与位置编码隐含了对“词序关系”的偏好权重衰减隐含“小权重解更优”的偏好Dropout 隐含“特征冗余更好”的偏好数据增强隐含“经过某种变换后语义不变”的偏好SGD 自身隐含“低复杂度方向上移动”的偏好。这些偏置加起来实际上是在假设空间里画了一个优先级图谱。图谱的峰值区域会成为优化的“引力中心”。从几何角度理解归纳偏置就是可容许集合的曲率来源。它让某些方向变得更容易抵达让其他方向即使有对应的训练样本也难以被选为最终假设。2.3 训练分布数据提供的几何约束训练分布看起来只决定样本但其实它也在修改几何。原因有两层。第一层经验风险的最小化目标由训练样本决定。在损失景观上每个样本对应一个悬崖或沟壑训练分布就是这些沟壑的“分布密度”。不同样本分布会形成不同的风险地形。当测试分布与训练分布不一致时可容许假设的区域因此会发生偏移。第二层数据分布影响梯度的统计特性。例如当类别不均衡时梯度方向由多数类主导模型搜索路径偏向少数类的可容许区域就被压缩当训练数据的多样性不足时那些需要更多证据才能确定的假设在梯度方向上得不到足够的支撑信号会导致优化器无法移动到该区域。所以训练分布不仅“告诉模型要拟合什么”而且它和归纳偏置共同构建了一个“几何场”。这个场决定哪些假设是低能量、可到达的哪些是高昂、不可达的。2.4 三者的几何关系如果要用一句话概括归纳偏置决定可容许集合的骨架形状训练分布决定该集合的边界条件和局部密度而优化动态决定模型最终落在集合中的哪一点。从几何表达来看可以把学习过程想象成在一块地形上行走。归纳偏置已经预先塑造了地形的高原与峡谷训练分布则在峡谷中填入了具体的坡度信息而 SGD 这类算法只是沿着坡面行走的徒步者。徒步者理论上能抵达整片地形但实际上会因为落脚习惯优化器的隐式偏置和体力限制学习率调度只访问一小部分地区最终停在某个低点。3. 可容许区域的几何形成机制要真正理解“学习几何”需要拆解几个参与机制。这里不能用一句“因为神经网络很强大”带过。3.1 损失景观高维空间的折叠地形深度学习的损失景观是一个高维非凸曲面。直观的理解是参数空间中的每个点对应一个损失值这些损失值连在一起形成高低起伏的景观。在这个景观中有大量低损失区域。论文中经常提到的“模式连通性”mode connectivity指的就是这些低损失区域之间有路径相连。也就是说不同随机种子训出来的模型在参数空间看似相距很远但沿着特定的路径走损失都保持很低。这个特性对理解可容许假设很重要如果低损失区域是连通的那么可容许假设集合本身也是连通的。这意味着我们可以把多个模型的均值当作一个合法的新模型也意味着在权重空间插值两个模型表现不一定会崩塌。反过来如果两个解决方案之间隔着高损失墙那么它们属于不同的可容许盆地。3.2 SGD 隐式正则优化动态会挑选几何SGD 不只是“沿着梯度走”那么简单它对可容许集合的形状有实质影响。在不使用权重衰减的情况下SGD 依然会表现出显著的正则化效果常被称为隐式正则化。一个重要的机制是SGD 的噪声项会让参数在小梯度方向上随机游走而那些“锐利”方向损失变化剧烈因为噪声放大而不稳定所以网络更倾向于收敛到平坦的极小值区域。从几何上看这意味着 SGD 实际上会缩小可容许集合并非所有满足训练损失为零的点都能被 SGD 找到它只会到达那些足够平坦、能够抵抗参数噪声的区域。这类区域往往有更好的泛化表现。3.3 训练分布密度与泛化半径训练数据在输入空间中的采样密度会直接影响可容许区域的外延。如果一个函数在训练样本附近的变化非常剧烈而训练样本的分布密度又不足以对这些剧烈变化提供足够的约束那么该函数对应的参数区域在损失景观上会呈现剧烈震荡优化器无法稳定地到达。反之如果一个函数平滑且符合数据流形结构那么在低样本密度区域它依然可以因为正则化而被选为可容许假设。这就是为什么“高维空间中需要指数级样本”这一传统观点过于悲观如果我们加入正确的归纳偏置例如平滑性、低秩性那么即便样本有限可容许集合也可以被压缩到一个足够窄的几何区域从而保证泛化。4. 一个直观的最小实验设计前面的内容偏重理论接下来用一个极简实验把上面说的这些机制落到可感知的层面。我不会构建真正的大规模深度学习实验因为那些计算开销太大不利于理解核心思想。这里选择的是一个足够简单、但能清晰暴露“归纳偏置 训练分布 → 可容许几何”的设定。实验目标证明当训练算法面对同一个目标函数时因为数据采样分布和正则归纳偏置的不同模型的可容许假设区域会发生系统性偏移导致在不同测试区域内表现不同。实验配置如下目标函数一个带周期性扰动的一维函数既包含低频趋势又包含高频细节训练数据不从全域均匀采样而是偏向低频区域密集采样高频区域稀疏采样模型一组以多项式为基的线性模型分别使用 L2 正则和 L1 正则作为归纳偏置评价方式在未采样区域计算误差观察哪一个模型的可容许假设落在更合适的位置。这个实验虽然简单但它把本文核心概念全部浓缩其中训练分布决定了哪些区域的信息充分L2/L1 正则作为归纳偏置决定了可容许假设的形状偏好而最终学到的多项式系数就是这个假设在几何中的坐标。5. Python 代码实现与运行方法为了让实验可复现我会给出完整代码方便你直接在本机运行验证。5.1 环境准备建议使用 Anaconda 或 venv 创建干净的 Python 3.9 环境。安装依赖pip install numpy matplotlib scikit-learn不需要 GPU也不需要深度学习框架一个普通 CPU 笔记本就能跑完。5.2 生成训练数据# 文件路径generate_data.py import numpy as np def target_function(x): 目标函数低频趋势 高频扰动 return np.sin(2 * np.pi * x) 0.3 * np.sin(12 * np.pi * x) def generate_biased_data(n_samples40, seed42): 生成偏斜采样数据。 在 x 0.3 区域密集采样在 x 0.7 区域稀疏采样。 这样训练分布在输入空间不同区域的密度不同。 rng np.random.default_rng(seed) # 用 Beta 分布偏置采样让样本更多集中在左侧 x rng.beta(2, 5, sizen_samples) x np.sort(x) y target_function(x) 0.05 * rng.standard_normal(sizen_samples) return x.reshape(-1, 1), y.reshape(-1, 1)这个采样方法很关键。Beta(2,5) 的概率密度函数在 x0 附近高、x1 附近低所以训练样本天然密集在低频趋势明显的左半边。这不是随机噪声而是刻意模拟“分布不均匀的真实场景”。5.3 定义多项式特征与训练函数# 文件路径train_poly.py import numpy as np from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import Ridge, Lasso from sklearn.pipeline import make_pipeline def train_polynomial(x_train, y_train, degree8, reg_typel2, alpha1e-3): 使用带正则的多项式回归训练。 reg_type: l2 对应 Ridgel1 对应 Lasso if reg_type l2: model make_pipeline( PolynomialFeatures(degreedegree, include_biasTrue), Ridge(alphaalpha) ) else: model make_pipeline( PolynomialFeatures(degreedegree, include_biasTrue), Lasso(alphaalpha, max_iter100000) ) model.fit(x_train, y_train.ravel()) return model这里把两种正则模型放在一起比较是为了展示即使训练数据完全相同归纳偏置不同也会让可容许假设集中在不同区域。Ridge 会让所有系数整体收缩Lasso 会让部分系数直接变为零。它们的“几何偏好”截然不同。5.4 完整运行脚本# 文件路径run_experiment.py import numpy as np import matplotlib matplotlib.use(Agg) import matplotlib.pyplot as plt from generate_data import target_function, generate_biased_data from train_poly import train_polynomial def main(): # 1. 生成偏斜训练数据 x_train, y_train generate_biased_data(n_samples40, seed42) # 2. 生成用于评估的稠密网格 x_test np.linspace(0, 1, 1000).reshape(-1, 1) y_test target_function(x_test.ravel()).reshape(-1, 1) # 3. 训练两个模型L2 正则 vs L1 正则 model_l2 train_polynomial(x_train, y_train, degree8, reg_typel2, alpha1e-2) model_l1 train_polynomial(x_train, y_train, degree8, reg_typel1, alpha1e-3) # 4. 预测 pred_l2 model_l2.predict(x_test) pred_l1 model_l1.predict(x_test) # 5. 分别计算左侧密集采样区和右侧稀疏采样区的误差 left_idx x_test.ravel() 0.4 right_idx x_test.ravel() 0.6 err_l2_left np.mean((pred_l2[left_idx] - y_test.ravel()[left_idx]) ** 2) err_l2_right np.mean((pred_l2[right_idx] - y_test.ravel()[right_idx]) ** 2) err_l1_left np.mean((pred_l1[left_idx] - y_test.ravel()[left_idx]) ** 2) err_l1_right np.mean((pred_l1[right_idx] - y_test.ravel()[right_idx]) ** 2) print(fL2 Ridge 左侧密集区MSE: {err_l2_left:.4f}右侧稀疏区MSE: {err_l2_right:.4f}) print(fL1 Lasso 左侧密集区MSE: {err_l1_left:.4f}右侧稀疏区MSE: {err_l1_right:.4f}) # 6. 绘制对比图 plt.figure(figsize(10, 6)) plt.scatter(x_train, y_train, labelTrain data, colorgray, alpha0.6) plt.plot(x_test, y_test, labelTrue function, colorblack, linestyle--) plt.plot(x_test, pred_l2, labelRidge(poly deg8), colorblue) plt.plot(x_test, pred_l1, labelLasso(poly deg8), colorred) plt.axvline(0.4, colorgreen, linestyle:, alpha0.7) plt.axvline(0.6, colorgreen, linestyle:, alpha0.7) plt.xlabel(x) plt.ylabel(y) plt.title(Admissible Hypotheses under Different Inductive Bias and Biased Training Distribution) plt.legend() plt.savefig(comparison_result.png, dpi150) print(图片已保存为 comparison_result.png) if __name__ __main__: main()运行命令python run_experiment.py预期输出类似如下L2 Ridge 左侧密集区MSE: 0.0023右侧稀疏区MSE: 0.5176 L1 Lasso 左侧密集区MSE: 0.0031右侧稀疏区MSE: 0.1834不同机器上的具体数值会有差异但相差不会太大。6. 实验结果与几何解释6.1 数据分布决定局部风险地形观察训练数据你会发现左侧密集采样的区域里模型几乎完美拟合了目标函数右侧稀疏采样的区域两种模型都出现了明显偏差。这印证了第一节的判断训练分布密度直接决定了对目标函数局部形状的约束能力。高频扰动项 sin(12πx) 在不充分采样的区域会形成优化器无法有效穿越的震荡梯度。但有意思的地方在于震荡函数在全局并没有超出假设空间的多项式表达能力以至于模型完全可以“强行”拟合右侧区域。然而在 L2/L1 正则约束下这部分高频解的超参数惩罚过大于是优化停留在更平滑的低频解附近。这就是可容许假设几何的直接体现结构上可表达的函数和实际可抵达的假设之间有一条由正则归纳偏置划出的边界。6.2 L1 与 L2 对可容许区域边界的塑造差异Ridge 模型的 L2 正则把解约束在一个椭球内部。对多项式系数来说所有系数都会被整体压缩并不会自动筛掉高频基函数。因此在有足够数据支撑的左侧Ridge 可以学习到高频扰动但在数据不足的右侧它依然会保留大量小幅非零系数这些非零系数彼此叠加就产生剧烈震荡和较大的泛化误差。Lasso 模型表现相反。L1 正则的解往往会让部分系数精确为零在 8 阶多项式分解视角下Lasso 会自动把“高频基函数组”的系数置零。因此右侧稀疏区即便没有数据支撑它也会倾向于只保留低频趋势。这个“稀疏性偏好”压缩了可容许区域的体积牺牲了对真实高频项的拟合能力却换来了更强的保守性。换句话说两种正则化对应的可容许假设几何形状是不同的。L2 是“所有方向都能走但走不远”L1 是“有些方向完全封死但留下方向可远行”。6.3 如何从损失景观角度理解这个结果把上述结果映射回损失景观每个多项式系数组合对应参数空间中的一个点训练损失在左半边数据分布处形成明显沟壑在高频正确的解附近也有局部极小值正则项又额外叠加了一个以原点为中心的约束“墙”。于是可容许最小值的分布是几个因素相交的区域。L2 模型的可容许区域近似为“一个贴近原点的椭球体”L1 模型则是一个“沿坐标轴方向的菱形单形”。在相同训练分布下目标函数的真实解若位于 L1 交叉区域之外它就不可被 L1 模型访问但可能被 L2 模型或者无正则模型访问。这就回答了读者真正关心的一个问题为什么有时加正则不但没有提升泛化反而导致无法拟合因为正则的归纳偏置直接把目标假设边缘化到可容许集合之外了。7. 与深度学习现实场景的对照如果你觉得上述一维多项式实验离真实深度学习太远接下来这一段就用来架桥。事实上几乎每一个现代深度学习的经典现象都能在这个几何框架下找到位置。7.1 数据增强本质上在改写可容许区域很多团队把数据增强只当成“防止过拟合”的工具但它的作用远不止于此。当你对图像做随机裁剪、翻转、色彩扰动你实际上是改变了训练分布——让网络看到多种不同变换后的样本。从这个角度看数据增强不是增加了训练样本数量而是在输入空间上扩张了训练分布的支撑集support。训练分布支撑集的扩张会改变风险地形的平滑性使得在某个变换方向上相邻的样本拥有接近的标签分布。网络学到的不再是“像素到标签”的脆弱的映射而是在某种变换群下保持稳定的函数。这意味着增强策略的选取不是在调节“正则强度”而是在重新绘制可容许假设的区域边界。所以当你发现某个数据集不管怎么加增强都无法提升测试集效果时不该只调增强强度而应该先问真实测试分布里哪些变化的自由度没有出现在增强集里只有补上这些自由度才有可能把正确解纳入可容许区域。7.2 权重初始化与模式可达性为什么深度网络需要谨慎初始化因为随机初始化决定了 SGD 从哪个盆地开始而“盆地”之间往往存在无法跨越的屏障。极端地说ReLU 网络里如果一个神经元初始化全部为负它任何输入下都可能不会激活这个神经元实际不参与任何后续优化。这相当于架构表达能力还在但它对应的区域在可容许集合中变成了不可达的“暗区”。做知识蒸馏或者预训练微调时初始化就是从已学习到的可容许区域启动而不是从零开始探索。这本质上是在保留一个已经被归纳偏置和训练分布塑造好的几何结构再在邻域内做局部变形。7.3 平坦极小值与标签噪声的对抗神经网络中一个广受认可的观点是扁平极小值的泛化比尖锐极小值好。这里可以纳入可容许假设框架来解释。当训练标签中存在噪声时锐利极小值对应那些对输入微小变化非常敏感的解。数据增强或 SGD 噪声稍微扰动参数这些解的损失就会大幅上升。它们不再是“可稳定驻扎”的假设。可容许集合因此自动排除了这些尖锐形态把泛化解压缩到平坦区域。所以即使没有显式正则化优化过程的迭代本身就在重复采样可容许区域。从工程角度这告诉我们如果你的测试环境存在输入扰动或标签噪声那就不要刻意追求在训练集上把损失压到极低的方案因为那个解很可能处于一个锐利的、不允许被选中的几何区域。8. 对模型设计与训练策略的工程启示理解了可容许假设的几何之后可以把它转化成真正可复用的工程方法论。以下是几条对实际问题有指导意义的操作建议。8.1 先用“可容许性检查”定位训练失败原因当模型无法拟合训练集或者验证集时不要急着调学习率。先做一次“可容许性检查”在训练集上做少量样本的过拟合实验确认该假设是否在过拟合条件下可被优化器到达用不带正则或极弱正则的配置训练观察目标解是否落在无约束可容许区域内逐步加入正则项、数据增强观察训练损失曲线的变化节奏。如果在某个环节训练损失突然降不下去就说明该正则/增强的归纳偏置把目标解推到了可容许边界之外。这个流程能帮你快速区分是优化器没有找到解还是解已经被归纳偏置排除在外。8.2 设计训练分布时要考虑测试分布的关键自由度很多人做训练集划分时只用随机抽样这会默认训练分布和测试分布一致。但在稀疏数据、异常检测、长尾识别等场景中真正的测试分布往往包含训练分布缺失的某些区域。此时你需要通过领域知识主动判断测试任务中最难的部分依赖输入的哪些自由度一个可行的做法是梳理任务中的失败用例找出测试输入与训练输入分布差异最大的维度用数据增强、过采样或者合成数据的方式专门补充这些维度上的梯度信号在验证时单独对低支撑密度区域做切片评估而不是只看全量平均指标。全量平均指标往往会掩盖可容许区域覆盖不足的问题。切片评估能暴露右侧区域的误差正是这类指标防止你只看到“整体精度还不错”的假象。8.3 用正则族去匹配任务本身的先验结构L1、L2、Dropout、数据增强每一种正则都对应一种先验假设。真实的工程问题是你的任务应该匹配哪一个可容许几何如果你的特征是高维稀疏的L1 或 Lasso 的几何会把解限制到少数特征维度上如果你的特征彼此高度相关、没有一个绝对稀疏的结构L2 的椭球约束优于 L1 的菱形筛选如果你的模型是 Transformer那它的自注意力结构自带排列不变性的归纳偏置你再叠加 L2 其实只压制了权重尺度并没有改变 token 之间的结构先验。更进阶的做法是给不同模块不同的正则尺度。例如底层特征提取层用较弱的约束保证足够的局部几何灵活度分类头用强约束把最终解压缩到低风险区域。这种“区域化可容许设计”的效果往往优于统一加正则。8.4 训练轨迹记录能帮你看到几何的形状实战中可以记录训练过程中多个 checkpoint 的权重然后在测试集上观察这些中间模型的表现。如果 loss 迅速下降后继续缓慢下降说明可容许区域在参数空间中是连通的如果 loss 出现跳变并伴随精度骤降那很可能模型从一个盆地跳到了另一个盆地这两个盆地中间隔着一堵高墙。这类观察可以指导你是否需要使用早停策略停留在你更信赖的可容许盆地中是否换用更大的 batch size, 以减少 SGD 带来的跨盆跳跃是否适合用模型平均如 Stochastic Weight Averaging来获得多个相邻可容许点的重心这个重心往往会更平坦、泛化更强。8.5 生产环境中的威胁分布漂移正在移动边界可容许假设的几何不是固定的。一旦线上数据的分布与训练分布不同之前划定的可容许区域可能瞬间失效。举个例子一个在晴天街景训练的自动驾驶感知模型真实世界突然出现大雨。雨点噪声在训练分布中没有对应支撑模型的可容许集合只包含“晴天参数区域”面对全新的输入结构它无论怎样做贝叶斯推理都无法产生正确输出因为那些假设已经不在当前几何范围里。因此生产系统需要两类机制分布漂移检测在推理侧持续计算输入特征分布与训练分布的差异一旦越界触发告警持续学习或在线校准用新场景的数据不断重新定义训练分布让可容许几何向新方向扩张。如果把这些纳入系统设计你对“模型什么时候会失效”会有一个比单点精度指标更可靠的判断。9. 常见误区澄清主题偏理论但读相关文献时很容易出现几个理解偏差这里集中澄清。9.1 误区一偏差与方差只是样本量问题在经典学习理论中偏差和方差的关系往往被简化为“样本多就方差小”。在深度学习中这种简化的局限已经非常明显。可容许集合概念告诉我们即使你拥有无限多样本只要优化算法和正则结构对应的几何没有覆盖真实目标函数模型依然会有不可消除的偏差。一个例子你用高幂次多项式Ridge回归拟合一个含剧烈跳变的阶跃函数。理论上再多数据也不会让Ridge的连续解逼近一个间断函数因为L2归纳偏置在跳过函数附近要付出的代价太大。这不是样本量能解决的问题而是几何边界造成的系统性局限。9.2 误区二归纳偏置越少越好某些观点认为深度学习成功的秘诀之一就是用“少归纳偏置”从数据中自动学习特征。这种说法值得商榈。卷积的平移等变性、RNN/Transformer 的位置模拟本质上都是归纳偏置只是以结构形式存在不表现为显式的正则项。真正的区别是“显式规则”与“柔性约束”。传统特征工程是硬编码规则深度学习用可学习结构实现了柔性的强先验。可容许集合不会因为没有写正则项而变成全空间它仍然由网络结构、优化器属性、初始化方式决定。归纳偏置是避不开的你只能选择“有意为之”的偏置或者“无心插柳”的偏置。9.3 误区三测试误差高就是过拟合遇到测试集表现不佳工程师的第一反应通常是“过拟合要加正则”。但这个判断不一定对。可容许假设观点提供了另一个解释目标函数根本不在你的模型当前可容许几何集合内此时无论加多少正则还是减少模型容量都没有用因为正则会进一步缩小解空间让目标解更难抵达。所以正确步骤是先检查在训练集上的拟合表现。如果训练集也拟合不充分那就不是过拟合问题而是可容许假设不足的问题需要增加模型自由度、调整偏置结构或者改造数据分布。只有训练集能拟合、测试集表现差才进入过拟合的处理流程。10. 延伸阅读与后续学习建议对理论推导感兴趣的读者可以有方向地深挖。这里列出几个值得关注的研究方向都是围绕可容许假设与训练分布几何展开的模式连通性与线性插值研究不同极小值之间如何连通用于理解可容许区域的拓扑结构神经正切核与无限宽度网络在无限宽度区制下训练动态简化成核方法有助于从理论上分析训练分布对可容许函数空间的影响彩票假设与子网络训练它会揭示哪些“子结构”在给定初始化条件下更具可容许性这对剪枝和高效训练有直接价值隐式正则化的理论机制重点关注 SGD 噪声尺度对平坦极小值的选择偏好对超参数调节很有指导意义。本文用的这个最小多项式实验是一个很好的起点因为它用极小的计算成本让你直观看到几何变化。你可以在这个基础上改造为更复杂的模型例如把一维输入换成二维图像、把正则项换成数据增强然后重复类似对比实验观察可容许区域的改变。最后给你留一个动手建议在你当前正在优化的模型上刻意设计一个“高密度区域切分评估”实验。找到验证集上误差最高的那一部分样本对比它们在输入特征上与训练样本的分布差距。这个差距有多大你的可容许假设几何离测试分布就有多远。修复这个分布鸿沟往往比继续调损失函数和优化器更能带来真正的提升。