机器学习(ML)深度学习(DL)基础知识记录(面试)
1.4 过拟合 & 解决方案
训练集的表现 | 测试集的表现 | 结论 |
---|---|---|
不好 | 不好 | 欠拟合 |
好 | 不好 | 过拟合 |
好 | 好 | 适当拟合 |
指模型在 训练集上表现很好,到了验证和测试阶段就很差,即模型的泛化能力很差。
简单的模型比复杂的泛化能力好。
( 注意: Adam 是梯度下降 参数优化,不是用来解决过拟合的。)
1.4.1 正则化
原理:
给 损失函数 加上一些限制,规范他们在接下来的 循环迭代中,不要自我膨胀。
loss 中的 高次项导致了过拟合。如果能让这些高次项的系数接近于0的话,就能更好拟合。
因此,修改 loss:
权重矩阵 W 就会被设置为接近于 0 的值,相当于消除了很多神经元的影响,减少作用参数。
L1 正则化
优势:稀疏化,作用更显著
随着海量数据处理的兴起,对于模型稀疏化的要求也随之出现。
L2 已不能满足稀疏化,它只使得模型的参数值趋近于0,而不是等于0。这样就无法丢掉模型里的任何一个特征。
L1 可以 使大部分模型参数的值等于0。这样一来,当模型训练好后,这些权值等于0的特征可以省去,从而达到稀疏化的目的,也节省了存储的空间,因为在计算时,值为0的特征都可以不用存储了。
L1 对于所有权重予以同样的惩罚,因此,较小的权重在被惩罚后,就会变成0,达到稀疏化,自带特征选择功能。
L2 正则化
优势:处处可导,方便计算
L2 对于绝对值较大的权重予以很重的惩罚,绝对值很小的权重予以很小的惩罚,当权重绝对值趋近于0时,基本不惩罚。
这个性质与L2的平方项有关系,即越大的数,其平方越大,越小的数,比如小于1的数,其平方反而越小。
L1 VS L2
L1 对于所有权重予以同样的惩罚。较小的权重在被惩罚后,就会变成0,达到稀疏化,自带特征选择功能。
L2 对于绝对值较大的权重予以很重的惩罚,绝对值很小的权重予以很小的惩罚。故只能趋近于 0,无法等于 0。
L1 在确实需要稀疏化模型的场景下,才能发挥很好的作用并且效果远胜于 L2。
L2 适合无稀疏化要求,方便计算的场景。
1.4.2 Drop-out
-
每次训练时随机沉默 部分神经元,达到剪枝的目的。本质也是一种正则化(类比 L1 正则化)。
-
相当于训练大量子网络,预测时关闭 drop - out 使用全部神经元,等同于集成学习,增加泛化能力。
-
降低模型复杂度和各神经元之间的依赖程度,降低模型对某一特征的过度依赖,从而降低过拟合。
1.4.3 BN & LN
尽可能让原始数据变为独立同分布的数据,避免 (ICS)内部变量偏移
-
可以简化模型的训练,加快训练速度。
-
提升模型的预测能力,提高模型性能。
把 越来越偏的输入值的分布强行拉回到正态分布。这样让梯度变大,避免梯度消失问题产生,学习收敛速度快,能大大加快训练速度。好的数据分布也可以让激活函数更好发挥作用,学习特征。
1.4.4 Early Stopping
当模型在 测试集的表现开始下降的时候,停止训练。
1.4.5 其它
降低模型复杂度 + 增加数据 + 数据增强 + 数据清洗
1.5 欠拟合 & 解决方案
指模型在训练集、验证集和测试集上均表现不佳 的情况。
-
模型复杂度过低
-
特征量过少
训练集的表现 | 测试集的表现 | 结论 |
---|---|---|
不好 | 不好 | 欠拟合 |
好 | 不好 | 过拟合 |
好 | 好 | 适当拟合 |
-
减少正则化;
-
下调 batch_size;
-
降低网络层数;
-
改变激活函数;
-
增加样本数量;
-
增加模型参数,提高模型复杂度;
-
增加循环次数;
-
查看是否是学习率过高导致模型无法收敛;