共计 1604 个字符,预计需要花费 5 分钟才能阅读完成。
文章转自【机器学习炼丹术】
1 什么是过拟合
过拟合就是在训练集上体现得十分好,在测试集上体现得不好。也就是咱们俗称的 泛化能力弱。
过拟合无奈防止,只能缓解,那么如何缓解呢?办法太多了。这篇文章一一介绍。
2 数据集加强 Augmentation
图像上,翻转,平移,缩放,旋转,镜像,加强对比度,加强亮度等诸多形式。
我在上面的内容中介绍了图像处理的图像增强的办法:
【预处理库函数】albumentations 库的简略理解和应用
3 Early Stopping
训练模型的时候,训练误差往往是一直降落的,然而验证数据集的误差,是先降落后回升。两个数据集的误差出现分歧的时候,阐明模型开始过拟合了。所以 Early Stopping 就是当验证数据集的误差不在降落的时候,完结训练,保留模型参数。
4 正则化
- regularization
L1 正则:模型中只有少部分特色对模型的泛化能力有奉献,所以 L1 就是限度模型中非零参数的数量。让大部分的模型参数都是 0,只有真正对泛化能力其作用的参数才是非零的。
L2 正则 :咱们心愿模型找到的极小值是平坦的,为什么呢?
图中示意的意思,就是平坦的极小值,能够有更多的容忍,容忍什么呢?容忍训练数据集和测试数据集之前的散布偏差。当初,如果模型的某些参数特地大,那么就算输出的样本只有很小的区别,然而通过特地大的参数之后,模型给出的后果很可能是十分不同的。这就是太平缓。所以 L2 正则就是限度模型参数的大小。参数的平方的和作为损失的一部分,当参数数值越大,那么梯度降落的损失越大,就会强制参数变小。
这里有两幅图:
这一幅图体现的是假如只有两个参数的状况下,减少 L1 正则的状况。圆圈圈体现的是损失等值线,方框是 L1 正则的损失。假如没有 L1 正则,那么参数应该收敛到最小的那个圆圈中的。然而因为减少了 L1 正则,所以须要衡量两个局部的损失,而后找到接触的交点地位。因为 圆形和矩形在矩形的顶点 相交的可能性大,而矩形的顶点就是某一个参数为 0 的状况。所以 L1 正则会让模型参数有更大的可能性为 0.
【在更多参数的模型中,会有更多的顶点。不过二维图像就画不进去了】
这个是 L2 正则的示意图。L2 正则式一个原型因为是参数的平方和。相比 L1 的(0,1)这样的交点,L2 更心愿每一个参数都广泛较小,不心愿某一个参数特地大。
5 Dropout
这个就是神经网络中,在全连贯网络中常常用到的。
在每一个 Batch 数据训练的时候,Dropout 层依照概率 P 随机让一些神经元失活,而后保留下来的神经元的参数被更新。dropout是只有在训练的时候才应用的,在测试的时候并不实用。
我集体了解的 dropout 其实就相当于一个多模型交融的过程。因为每一次都会失活一部分的神经元,所以每一次的模型都是不那么一样的,相当于不同的模型吧。
6 减少乐音
6.1 输出中减少乐音
输出中有乐音 $\epsilon$,那么输入中就会有一个相似于 $\epsilon \omega$, 这样的损失项。从而限度权值的大小。
当然这样也能够减少模型对输出的容忍度,我感觉也能够了解为一种数据加强。去噪自编码器 DAE 就是利用这样的办法的。
6.2 权值中加乐音
这个用的不多,在初始化网络的时候,用 0 均值的高斯分布作为参数的初始化。
7 集成
集成次要是 bagging,boosting,之前说的 dropout 我感觉也能够算作集成的办法
7.1 bagging
将数据集抽取一部分,比方抽取 70% 的样本,而后用这些样本去训练一个模型。而后再从数据集中抽取 70% 的样本,再训练一个新的。典型的就是随机森林。
【神经网络因为训练速度的问题,所以个别不必这样的办法。决策树 lgb 啥的能够用】
7.2 boosting
训练简单神经网络比较慢,所以 能够通过训练多个简略的分类器,而后加权均匀每一个分类器的输入。这就是 Boost 的思维。【这句话给我背下来!】
之后整顿一下 Adaboost 和 XGBoost 的这些算法。
8 其余
- 限度网络的层数和复杂度