《动手学深度学习》笔记1.7——模型选择 + 过拟合-欠拟合
李沐老师:过拟合不一定是坏事,为了把泛化误差往下降,不得不承受一定程度的过拟合;首先是模型容量要足够(模型足够大)(伴随一定的过拟合);其次才是通过(缩减容量)调整模型容量,缩小误差(这是整个深度学习的核心)
·
目录
1. 模型选择
1.1 训练误差 vs. 泛化误差
1.2 验证数据集 vs. 测试数据集
- 验证数据集 (validation dataset) 不参加训练,用来调参 (调整模型结构),能够反映超参数的好坏
- 测试数据集 (test dataset) 只能使用一次,不能用来调超参数
李沐老师:
- 拿测试集来调参(当验证集使用)发论文,是很严重的事情
- 验证数据集相当于模拟考试
- 测试数据集相当于期末考试
李沐老师:
- 咱教材里的test dataset并不是真正的测试数据集,本质上是验证数据集
- 真正的测试集是新的数据集,甚至标号都未知
1.3 K-折交叉验证
- 这里的例子是把数据集分成三块,训练三个epoch,迭代三次(跑三遍数据)
- 每次拿一块出来作为验证集,最后拿到三个验证精度(或者误差)
- 把这三个精度做平均,便能得到K-则交叉验证的误差
- (例子里的方法又叫“留一法”)
- K=5 指的是迭代5次(跑5遍数据)
- K值的设定,需要权衡数据集的大小,数据集特别大,K可以设为2或3
- (K值设定得越大,越贵)
- K-折交叉验证是最常用的验证所设超参数效果的方法
1.4 总结
2. 过拟合与欠拟合(核心知识)
2.1 过拟合 vs. 欠拟合
模型容量:
- 低:比如简单线性模型
- 高:比如多层感知机
数据:
- 简单:如第三章简单线性回归的人工合成数据集
- 适中:如Fashion-MNIST
- 复杂:如ImageNet
2.2 模型容量
李沐老师:
- 过拟合不一定是坏事,为了把泛化误差往下降,不得不承受一定程度的过拟合
- 首先是模型容量要足够(模型足够大)(伴随一定的过拟合)
- 其次才是通过(缩减容量、正则化-权重衰退、早停等方法)调整模型容量,缩小误差
- (这是整个深度学习的核心)
2.3 估计模型容量
智谱AI:
1. d - 数据维度:
- 通常指的是输入数据的维度。在处理特征向量时,如果每个数据样本是一个向量,那么 d 就是该向量的长度
- 例如,如果每个样本是一个包含100个特征的数据点,那么 d = 100
- 在图像处理中,如果图像被展平成一个一维向量,d 代表这个向量的长度,这通常是图像的 高度 * 宽度 * 颜色通道数
2. m - 中间变量维度:
- m 经常用来表示神经网络中间层的大小,即隐藏层的神经元数量
- 神经元:在神经网络中,无论是隐藏层还是输出层,层的“单元”数通常就是指该层中神经元的数量
3. k - 输出结果维度:
- 通常指的是输出层的维度,即分类任务中的类别数量
- 在多类分类问题中,如果模型需要预测10个不同的类别,那么 k = 10
2.4 VC维 衡量模型容量
二维输入:
- 例如简单线性模
- 线性模型试图找到一条直线来分割数据
- 寻找一个输入和一个输出之间的关系
三维输入:
- 例如XOR
- XOR试图找到两条直线来分割数据
- 寻找两个输入和一个输出之间的异或关系
李沐老师:
- VC维只是理论拓展,能够一定程度解释模型
- VC维很少用到深度学习上
2.5 数据复杂度
李沐老师:
- 相比模型复杂度,数据复杂度更不好衡量啦!
- 判断复杂与否,更多的是靠 (调参) 经验,靠比较 (不同数据集) 的出来的
- 自动机器学习(AutoML包含自动调参)还在路上
3. 代码样例 (过拟合 vs. 欠拟合)

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)