zoukankan      html  css  js  c++  java
  • 一文读懂:防止过拟合的所有方法

    什么是过拟合

    过拟合就是在训练集上表现得非常好,在测试集上表现得不好。也就是我们俗称的泛化能力弱

    过拟合无法避免,只能缓解,那么如何缓解呢?方法太多了。这篇文章一一介绍。

    数据集增强Augmentation

    图像上,翻转,平移,缩放,旋转,镜像,增强对比度,增强亮度等诸多方式。
    我在下面的内容中介绍了图像处理的图像增强的方法:
    【预处理库函数】albumentations库的简单了解和使用

    Early Stopping

    训练模型的时候,训练误差往往是不断下降的,但是验证数据集的误差,是先下降后上升。 两个数据集的误差出现分歧的时候,说明模型开始过拟合了。所以Early Stopping就是当验证数据集的误差不在下降的时候,结束训练,保存模型参数。

    正则化regularization

    L1正则:模型中只有少部分特征对模型的泛化能力有贡献,所以L1就是限制模型中非零参数的数量。让大部分的模型参数都是0,只有真正对泛化能力其作用的参数才是非零的。

    L2正则:我们希望模型找到的极小值是平坦的,为什么呢?

    图中表示的意思,就是平坦的极小值,可以有更多的容忍,容忍什么呢?容忍训练数据集和测试数据集之前的分布偏差。现在,如果模型的某些参数特别大,那么就算输入的样本只有很小的区别,但是经过特别大的参数之后,模型给出的结果很可能是非常不同的。这就是太陡峭。所以L2正则就是限制模型参数的大小。参数的平方的和作为损失的一部分,当参数数值越大,那么梯度下降的损失越大,就会强迫参数变小。

    这里有两幅图:

    这一幅图体现的是假设只有两个参数的情况下,增加L1正则的情况。圆圈圈体现的是损失等值线,方框是L1正则的损失。假设没有L1正则,那么参数应该收敛到最小的那个圆圈中的。但是因为增加了L1正则,所以需要权衡两个部分的损失,然后找到接触的交点位置。因为圆形和矩形在矩形的顶点相交的可能性大,而矩形的顶点就是某一个参数为0的情况。所以L1正则会让模型参数有更大的可能性为0.
    【在更多参数的模型中,会有更多的顶点。不过二维图像就画不出来了】



    这个是L2正则的示意图。L2正则式一个原型因为是参数的平方和。相比L1的(0,1)这样的交点,L2更希望每一个参数都普遍较小,不希望某一个参数特别大。

    Dropout

    这个就是神经网络中,在全连接网络中经常用到的。

    在每一个Batch数据训练的时候,Dropout层按照概率P随机让一些神经元失活,然后保留下来的神经元的参数被更新。dropout是只有在训练的时候才使用的,在测试的时候并不适用。

    我个人理解的dropout其实就相当于一个多模型融合的过程。因为每一次都会失活一部分的神经元,所以每一次的模型都是不那么一样的,相当于不同的模型吧。

    增加噪音

    输入中增加噪音

    输入中有噪音(epsilon),那么输出中就会有一个类似于(epsilon omega),这样的损失项。 从而限制权值的大小。

    当然这样也可以增加模型对输入的容忍度,我觉得也可以理解为一种数据增强。 去噪自编码器DAE就是利用这样的方法的。

    权值中加噪音

    这个用的不多,在初始化网络的时候,用0均值的高斯分布作为参数的初始化。

    集成

    集成主要是bagging,boosting,之前说的dropout我觉得也可以算作集成的方法

    bagging

    将数据集抽取一部分,比如抽取70%的样本,然后用这些样本去训练一个模型。然后再从数据集中抽取70%的样本,再训练一个新的。典型的就是随机森林。
    【神经网络因为训练速度的问题,所以一般不用这样的方法。决策树lgb啥的可以用】

    boosting

    训练复杂神经网络比较慢,所以可以通过训练多个简单的分类器,然后加权平均每一个分类器的输出。这就是Boost的思想。【这句话给我背下来!】

    之后整理一下Adaboost和XGBoost的这些算法。

    其他

    • 限制网络的层数和复杂度

    **END**

    喜欢的话加个微信公众号支持一下吧~目前主要再整理针对机器学习算法岗位的面试可能遇到的知识点。

    公众号回复【下载】有精选的免费机器学习学习资料。 公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~

    • 【机器学习的基础数学(PDF)】
    • 【竞赛中的大数据处理流程(PDF)】
    • 【如何做大数据的基础特征工程(PDF)】
    • 【自然语言处理NLP的应用实践大合集(PDF)】
    • 【python入门级教材(400页PDF)】

    公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~

    在这里插入图片描述

  • 相关阅读:
    Centos7安装go.10.1环境
    centos7安装PHP5
    Linux 无文件攻击memfd_create()具体操作步骤
    centos7 '/mnt/hgfs'下共享文件夹不显示问题
    fiddler连接代理手机无法上网问题解决办法
    centos 镜像软件安装包版本低,手动安装过程
    0 upgraded, 0 newly installed, 0 to remove and 112 not upgraded解决方法
    JavaScript高级程序设计(第3版)第七章读书笔记
    JavaScript高级程序设计(第3版)第六章读书笔记
    JavaScript高级程序设计(第3版)第五章读书笔记
  • 原文地址:https://www.cnblogs.com/PythonLearner/p/13167288.html
Copyright © 2011-2022 走看看