深度学习中的模型拟合概念与调整策略
深度学习中的模型拟合概念与调整策略
模型拟合概念和欠拟合模型、过拟合调整策略
一、模型拟合度概念介绍
1.测试集的“不可知悖论”
在深度学习中,模型的好坏通常通过其在测试集上的表现来判断。测试集相当于"高考",而模型训练过程中的数据集则相当于"练习"。这里存在一个悖论:练习的目的是为了高考,但在高考前我们永远不知道练习是否有效。在机器学习领域,严格意义上的测试集是不能参与建模的。这意味着在训练模型时不能使用测试集数据,即使在模型训练完成后,也不能根据测试集的结果来调整模型结构。这是因为任何基于测试集结果的模型调整都会影响模型的参数或超参数,从而破坏测试集的独立性。
为了解决这个问题,引入了验证集的概念。验证集在模型训练阶段不会被使用,但在模型训练完成后,可以用来评估模型的性能,并据此调整模型结构。验证集的使用类似于"模拟考试",通过模拟考试的结果来调整复习策略,从而更好地应对"高考"。
2.模型拟合度概念与实验
模型拟合度是模型优化的核心问题。模型拟合度主要受到两个因素的影响:
- 样本数据是否能很好地反映总体规律
- 模型是否能捕捉到样本数据中的规律
如果模型在训练集上的误差较大,说明模型可能存在欠拟合问题;如果模型在训练集上的误差较小,但在测试集上的误差较大,说明模型可能存在过拟合问题。
从图中可以看出,1阶多项式拟合时,蓝色拟合曲线无法很好地捕捉数据集的分布规律,而3阶多项式在数据集分布规律捕捉上表现良好,10阶多项式虽然在训练数据集上拟合度很高,但其捕捉到的无用规律无法推广到新的数据集上,因此该模型在测试数据集上执行过程将会有很大误差。
二、过拟合、欠拟合问题解决方案
1. 欠拟合解决方案
- 增加模型复杂度,通过增加模型参数来增加模型学习能力
- 对于原本的算法,可以通过增加模型深度的方法增大模型的复杂度
- 选择更加复杂的算法模型
- 增加特征数量:增加更多强表达能力的特征
- 调整模型参数或者超参
- 修改学习率、隐藏层数量等模型参数、优化算法中的训练参数,等超参增强训练过程中模型的学习能力
- 降低正则化
- 若之前有增加正则化,则需要考虑是否存在正则化过大导致的学习能力下降
2.过拟合解决方案
- 增加训练数据
- 采用更强的正则化约束
- 减少特征数量
- 降低模型复杂度
- 使用Dropout层
- 使用早停提前结束训练
三、神经网络结果选择策略
1. 参数和超参数
在机器学习中,参数分为两类:参数和超参数。参数是可以通过数学过程求解的变量,如线性回归中的自变量权重;超参数是无法通过数学过程求解的变量,如训练集和测试集划分比例、神经网络的层数等。超参数的调整往往依赖于经验,但也有辅助工具如网格搜索、AutoML等。
2. 神经网络模型结构选择策略
层数选择方面
三层以内:模型效果会随着层数增加而增加
三层至六层:随着层数的增加,模型的稳定性迭代的稳定性会受到影响,并且这种影响是随着层数增加"指数级"增加的,此时就需要采用一些优化方法对输入数据、激活函数、损失函数和迭代过程进行优化
六层以上:在模型超过六层之后,优化方法在一定程度上仍然能够辅助模型训练,但此时保障模型正常训练的更为核心的影响因素,就变成了数据量本身和算力
每一层神经元个数选择方面
输入层的神经元个数就是特征个数
输出层神经元个数,如果是回归类问题或者是逻辑回归解决二分类问题,输出层就只有一个神经元
隐藏层神经元个数,可以按照最多不超过输入特征的2-4倍进行设置
3. 激活函数使用的单一性
通常情况下,一个神经网络中不会使用多种激活函数。这是因为:
- 如果几种激活函数效果类似,那么交叉使用几种激活函数其实效果和使用一种激活函数区别不大
- 如果几种激活函数效果差异非常明显,那么这几种激活函数的堆加就会使得模型变得非常不可控
- 目前工业界所掌握的、针对激活函数的优化算法都是针对某一种激活函数来使用的,激活函数的交叉使用会令这些优化算法失效
因此,在基础理论没有进一步突破之前,不推荐在一个神经网络中使用多种激活函数。