沐神-动手学习深度学习-习题答案4.4模型选择,欠拟合,过拟合

####习题答案

这一节深入探讨了机器学习中最核心的挑战之一:模型泛化(Generalization)。它解释了为什么一个在训练集上表现完美的模型,在实际应用(测试集)中可能会表现得很差。

  1. 核心内容总结
    该页面主要围绕如何平衡模型的复杂性与数据集大小展开:
  • 训练误差 vs. 泛化误差:
    • 训练误差:模型在训练数据集上的误差。
    • 泛化误差:模型应用在同样分布的无限多新样本上的误差期望值。我们的目标是降低泛化误差。
  • 模型选择:
    • 为了评估模型,我们需要将数据分成训练集和测试集。
    • 验证集 (Validation Set):由于不能根据测试集来调整超参数,通常会从训练数据中预留一部分作为验证集,用于模型选择。
    • K折交叉验证 (K-Fold Cross-Validation):当数据稀缺时,将数据分成 K 份,轮流用 K-1 份训练,1 份验证,最后取平均结果。
  • 欠拟合 (Underfitting):
    • 模型过于简单,甚至无法降低训练误差。
    • 表现:训练误差和验证误差都很高。
  • 过拟合 (Overfitting):
    • 模型过于复杂,把训练集里的"噪声"也学进去了。
    • 表现:训练误差极低,但验证误差很高。
  1. 习题答案解析
    以下是基于本节理论对练习题的解答建议:
    Q1: 这个多项式回归问题可以准确解出吗?
  • 答案:可以。多项式回归本质上仍然是关于参数的线性回归(只要将 x^2, x^3 等视为新的特征变量)。因此,它具有解析解,可以通过正规方程(Normal Equation)直接计算出最优权重。
    Q2: 绘制训练损失 vs. 模型复杂度(多项式的阶数)的曲线,你观察到了什么?
  • 解析:
    • 随着阶数增加,训练损失会单调下降,因为模型变得越来越能"死记硬背"训练数据。
    • 然而,验证损失会呈现 U形曲线:先下降(改善),到达最优点后开始剧烈上升(过拟合)。
      Q3: 如果你减少训练样本的数量,会发生什么?
  • 答案:
    • 模型会更容易发生过拟合。
    • 直觉上,数据越少,模型越容易找到某种"巧合"规律来解释这些样本,而这种规律并不适用于新数据。
    • 泛化误差会显著增大。
      Q4: 如果你增加训练数据的噪声,会发生什么?
  • 答案:
    • 模型更难收敛,训练误差会上升。
    • 模型可能会试图拟合这些噪声,导致严重的过拟合。
    • 为了应对噪声,我们需要更强的正则化(如本章后续提到的权重衰减或 Dropout)。
      Q5: 为什么通常我们要增加训练数据量?
  • 答案:
    • 更多的数据能覆盖更真实的数据分布。
    • 大样本量可以抑制噪声的影响,减少模型"误入歧途"的概率,从而降低泛化误差。
    • 根据统计学习理论,对于给定的模型复杂性,随着样本量 n \to \infty,泛化误差会趋近于训练误差。
      下一步建议:
      既然了解了过拟合,那么如何"对抗"它呢?下一节 4.5 节"权重衰减 (Weight Decay)" 将介绍第一种武器:通过惩罚过大的参数值来限制模型复杂度。
      你想看看如何通过代码给模型添加 L2 范数惩罚 吗?

针对《动手学深度学习》4.4 节关于"模型选择、欠拟合和过拟合"的练习题,以下是基于线性代数和机器学习理论的详细解答:

  1. 这个多项式回归问题可以准确地解出吗?
    可以。
  • 线性代数解释:虽然多项式函数在变量 x 上是非线性的,但它关于参数 \mathbf{w} 是线性的。
  • 我们可以将多项式特征 x, x^2, \dots, x^d 视为独立的特征变量,构建一个范德蒙德矩阵(Vandermonde matrix) \mathbf{X}。
  • 只要矩阵 \mathbf{X}^\top \mathbf{X} 是满秩且可逆的,我们就可以通过正规方程 \mathbf{w} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y} 直接求得解析解。
  1. 绘制训练损失与模型复杂度的关系图
  • 观察结果:随着模型复杂度(多项式阶数)的增加,训练损失会单调下降。
  • 减小到 0 的条件:根据线性代数原理,当多项式的阶数 d 等于样本数量 n 减去 1 时(即 d = n - 1),模型拥有足够的自由度可以经过每一个数据点(插值),此时训练损失可以减少到 0。
  1. 在这种情况下绘制测试损失图
  • 观察结果:测试损失图通常呈 U 形。
  • 当阶数较低时,由于模型无法拟合数据的真实规律,测试损失较高(欠拟合)。
  • 当阶数适中(接近生成数据的真实阶数)时,测试损失达到最低点。
  • 当阶数继续增加时,虽然训练损失在下降,但由于模型开始拟合随机噪声,测试损失会剧烈上升(过拟合)。
  1. 生成同样的图,作为数据量的函数
  • 训练损失:通常随数据量增加而上升。因为数据越多,模型"死记硬背"所有点变得越困难。
  • 测试损失(泛化误差):随数据量增加而下降。更多的数据提供了关于真实分布的更清晰信号,减少了过拟合的风险。
  • 结论:当数据量趋于无穷大时,训练损失和测试损失会收敛到同一个值(即数据的固有噪声)。
  1. 如果不对多项式特征进行标准化会发生什么?
  • 数值不稳定性:高阶多项式的项(如 x^{20})会产生极大或极小的值,导致输入特征在量级上相差悬殊。
  • 优化困难:这会导致损失函数的等高线变得极其扁平,梯度下降算法会变得非常缓慢,甚至出现数值溢出(NaN)导致训练失败。
  • 解决方法:除了显式的标准化(如除以 n!),还可以使用 QR 分解 或 正交多项式(如切比雪夫多项式)来构建特征,从而在数学上避免数值不稳定性。
  1. 泛化误差可能为零吗?
    理论上几乎不可能。
  • 不可约误差:现实数据中通常包含"噪声"或"贝叶斯误差",这是由于观察不全或系统本身的随机性造成的。即使模型完美捕捉了真实规律,这部分误差依然存在。
  • 样本限制:除非模型完全掌握了生成数据的底层物理规律,并且测试集与训练集没有任何噪声干扰,否则泛化误差总会大于零。
    下一步建议:
    既然了解了如何识别过拟合,下一节 4.5 权重衰减 (Weight Decay) 将教你如何通过数学手段(L2 正则化)在不改变模型深度的情况下,强制模型变得"简单"以抑制过拟合。你想看看如何通过代码实现这一惩罚项吗?
相关推荐
YM52e40 分钟前
鸿蒙 ArkTS 实战|万能绿茶通用词汇库:20 词六大类 + 搜索筛选 + 潜台词解析
学习·华为·harmonyos
Zane199441 分钟前
threading、multiprocessing、asyncio 到底怎么选?一张图 + 三组实测数据说清楚
后端·python
ReleaseU42 分钟前
Kimi K3 登陆阿里云:2.8T 参数的开源模型,离闭源天花板还有多远?
人工智能·大模型
晓天衡宇•评测社区42 分钟前
FSR-Bench 榜单更新:Qwen3.8-Max 开工具配置位列第 5,双配置均进入前十
人工智能·语言模型
CIO_Alliance44 分钟前
AI深度系列(2)| CNN卷积池化感受野原理:从局部感知到全局视野
人工智能·深度学习·线性代数·算法·计算机视觉·企业ai转型·企业cio联盟
CodeStats1 小时前
【Java进程通信】Java进程通信系统完全指南:从ProcessBuilder底层原理到多语言实战
java·前端·python·进程·ai编程·processbuilder
是Yu欸1 小时前
openPangu-2.0 技术报告全文翻译(1):摘要、引言与混合注意力架构
人工智能·华为·架构·aigc·交互·agent
树獭哥1 小时前
从选题到立项:电商高价值客户流失干预 Agent 项目实战
大数据·人工智能·yibohere
数据智研1 小时前
【数据分享】阿庐风景名胜区(国家级地质公园)边界数据
人工智能·数据分析·数据可视化