机器学习中防止过拟合的方法总结

来自机器学习成长之路公众号

在对模型进行训练时,有可能遇到训练数据不够,即训练数据无法对整个数据的分布进行估计的时候,或者在对模型进行过度训练(overtraining)时,常常会导致模型的过拟合(overfitting)。如下图所示:

通过上图可以看出,随着模型训练的进行,模型的复杂度会增加,此时模型在训练数据集上的训练误差会逐渐减小,但是在模型的复杂度达到一定程度时,模型在验证集上的误差反而随着模型的复杂度增加而增大。此时便发生了过拟合,即模型的复杂度升高,但是该模型在除训练集之外的数据集上却不work。 
 

为了防止过拟合,我们需要用到一些方法,如:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)、Dropout

Early stopping:

对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。 

Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。这种做法很符合直观感受,因为accurary都不再提高了,在继续训练也是无益的,只会提高训练的时间。

那么该做法的一个重点便是怎样才认为validation accurary不再提高了呢?并不是说validation accuracy一降下来便认为不再提高了,因为可能经过这个Epoch后,accuracy降低了,但是随后的Epoch又让accuracy又上去了,所以不能根据一两次的连续降低就判断不再提高。

一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……

数据集扩增:

在数据挖掘领域流行着这样的一句话,“有时候往往拥有更多的数据胜过一个好的模型”。因为我们在使用训练数据训练模型,通过这个模型对将来的数据进行拟合,而在这之间又一个假设便是,训练数据与将来的数据是独立同分布的。即使用当前的训练数据来对将来的数据进行估计与模拟,而更多的数据往往估计与模拟地更准确。

因此,更多的数据有时候更优秀。但是往往条件有限,如人力物力财力的不足,而不能收集到更多的数据,如在进行分类的任务中,需要对数据进行打标,并且很多情况下都是人工得进行打标,因此一旦需要打标的数据量过多,就会导致效率低下以及可能出错的情况。所以,往往在这时候,需要采取一些计算的方式与策略在已有的数据集上进行手脚,以得到更多的数据。 

通俗得讲,数据机扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:

• 从数据源头采集更多数据

• 复制原有数据并加上随机噪声

• 重采样

• 根据当前数据集估计数据分布参数,使用 该分布产生更多数据等

正则化方法:

正则化方法是指在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。

 L1正则 
L1正则是基于L1范数,即在目标函数后面加上参数的L1范数和项,即参数绝对值和与参数的积项,即: 

其中C0代表原始的代价函数,n是样本的个数,λ就是正则项系数,权衡正则项与C0项的比重。后面那一项即为L1正则项。 
在计算梯度时,w的梯度变为: 

其中,sgn是符号函数,那么便使用下式对参数进行更新: 

对于有些模型,如线性回归中(L1正则线性回归即为Lasso回归),常数项b的更新方程不包括正则项,即: 

其中,梯度下降算法中,α<0,β<0α<0,β<0,而在梯度上升算法中则相反。 

从上式可以看出,当w为正时,更新后w会变小;当w为负时,更新后w会变大;因此L1正则项是为了使得那些原先处于零(即|w|≈0|w|≈0)附近的参数w往零移动,使得部分参数为零,从而降低模型的复杂度(模型的复杂度由参数决定),从而防止过拟合,提高模型的泛化能力。 

其中,L1正则中有个问题,便是L1范数在0处不可导,即|w||w|在0处不可导,因此在ww为0时,使用原来的未经正则化的更新方程来对ww进行更新,即令sgn(0)=0,这样即: 

L2正则 
L2正则是基于L2范数,即在目标函数后面加上参数的L2范数和项,即参数的平方和与参数的积项,即:

其中C0代表原始的代价函数,n是样本的个数,与L1正则化项前面的参数不同的是,L2项的参数乘了二分之一,是为了便于计算以及公式的美感性,因为平方项求导有个2,λ就是正则项系数,权衡正则项与C0项的比重。后面那一项即为L2正则项。 

L2正则化中则使用下式对模型参数进行更新: 

对于有些模型,如线性回归中(L2正则线性回归即为Ridge回归,岭回归),常数项b的更新方程不包括正则项,即:

其中,梯度下降算法中,α<0,β<0α<0,β<0,而在梯度上升算法中则相反。 

从上式可以看出,L2正则项起到使得参数w变小加剧的效果,但是为什么可以防止过拟合呢?一个通俗的理解便是:更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合,以提高模型的泛化能力。 

在这里需要提到的是,在对模型参数进行更新学习的时候,有两种更新方式,mini-batch (部分增量更新)与 full-batch(全增量更新),即在每一次更新学习的过程中(一次迭代,即一次epoch),在mini-batch中进行分批处理,先使用一部分样本进行更新,然后再使用一部分样本进行更新。直到所有样本都使用了,这次epoch的损失函数值则为所有mini batch的平均损失值。设每次mini batch中样本个数为m,那么参数的更新方程中的正则项要改成: 

而full-batch即每一次epoch中,使用全部的训练样本进行更新,那么每次的损失函数值即为全部样本的误差之和。更新方程不变。

总结 

正则项是为了降低模型的复杂度,从而避免模型区过分拟合训练数据,包括噪声与异常点(outliers)。从另一个角度上来讲,正则化即是假设模型参数服从先验概率,即为模型参数添加先验,只是不同的正则化方式的先验分布是不一样的。这样就规定了参数的分布,使得模型的复杂度降低(试想一下,限定条件多了,是不是模型的复杂度降低了呢),这样模型对于噪声与异常点的抗干扰性的能力增强,从而提高模型的泛化能力。

还有个解释便是,从贝叶斯学派来看:加了先验,在数据少的时候,先验知识可以防止过拟合;从频率学派来看:正则项限定了参数的取值,从而提高了模型的稳定性,而稳定性强的模型不会过拟合,即控制模型空间。 

另外一个角度,过拟合从直观上理解便是,在对训练数据进行拟合时,需要照顾到每个点,从而使得拟合函数波动性非常大,即方差大。在某些小区间里,函数值的变化性很剧烈,意味着函数在某些小区间里的导数值的绝对值非常大,由于自变量的值在给定的训练数据集中的一定的,因此只有系数足够大,才能保证导数的绝对值足够大。如下图(引用知乎):

另外一个解释,规则化项的引入,在训练(最小化cost)的过程中,当某一维的特征所对应的权重过大时,而此时模型的预测和真实数据之间距离很小,通过规则化项就可以使整体的cost取较大的值,从而,在训练的过程中避免了去选择那些某一维(或几维)特征的权重过大的情况,即过分依赖某一维(或几维)的特征(引用知乎)。 

L2与L1的区别在于,L1正则是拉普拉斯先验,而L2正则则是高斯先验。它们都是服从均值为0,协方差为λ分之一。当λ=0时,即没有先验)没有正则项,则相当于先验分布具有无穷大的协方差,那么这个先验约束则会非常弱,模型为了拟合所有的训练集数据, 参数w可以变得任意大从而使得模型不稳定,即方差大而偏差小。λλ越大,标明先验分布协方差越小,偏差越大,模型越稳定。即,加入正则项是在偏差bias与方差variance之间做平衡tradeoff(来自知乎)。

下图即为L2与L1正则的区别:

上图中的模型是线性回归,有两个特征,要优化的参数分别是w1和w2,左图的正则化是L2,右图是L1。蓝色线就是优化过程中遇到的等高线,一圈代表一个目标函数值,圆心就是样本观测值(假设一个样本),半径就是误差值,受限条件就是红色边界(就是正则化那部分),二者相交处,才是最优参数。可见右边的最优参数只可能在坐标轴上,所以就会出现0权重参数,使得模型稀疏。 

其实拉普拉斯分布与高斯分布是数学家从实验中误差服从什么分布研究中得来的。一般直观上的认识是服从应该服从均值为0的对称分布,并且误差大的频率低,误差小的频率高,因此拉普拉斯使用拉普拉斯分布对误差的分布进行拟合,如下图: 

而拉普拉斯在最高点,即自变量为0处不可导,因为不便于计算,于是高斯在这基础上使用高斯分布对其进行拟合,如下图: 

Dropout:

正则是通过在代价函数后面加上正则项来防止模型过拟合的。而在神经网络中,有一种方法是通过修改神经网络本身结构来实现的,其名为Dropout。该方法是在对网络进行训练时用一种技巧(trick),对于如下所示的三层人工神经网络:

对于上图所示的网络,在训练开始时,随机得删除一些(可以设定为一半,也可以为1/3,1/4等)隐藏层神经元,即认为这些神经元不存在,同时保持输入层与输出层神经元的个数不变,这样便得到如下的ANN: 

然后按照BP学习算法对ANN中的参数进行学习更新(虚线连接的单元不更新,因为认为这些神经元被临时删除了)。这样一次迭代更新便完成了。下一次迭代中,同样随机删除一些神经元,与上次不一样,做随机选择。这样一直进行瑕疵,直至训练结束。 

Dropout方法是通过修改ANN中隐藏层的神经元个数来防止ANN的过拟合。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

吴恩达《机器学习》学习笔记四——单变量线性回归&#xff08;梯度下降法&#xff09;代码一、问题介绍二、解决过程及代码讲解三、函数解释1. pandas.read_csv()函数2. DataFrame.head()函数3. Dataframe.insert()函数课程链接&#xff1a; https://www.bilibili.com/video/BV…

从IoT World 2019看全球IoT九大发展趋势

来源&#xff1a;全球物联网观察美国时间5月14日&#xff0c;IoT World2019在美国硅谷圣克拉拉会议中心举行&#xff0c;今年的主题是“工业与IOT的交互”&#xff0c;从大会主题演讲内容和现场产品展示来看&#xff0c;随着5G的商用和人工智能技术的大面积落地&#xff0c;IoT…

美国一箭投放60颗卫星 马斯克组互联网“星链”

来源&#xff1a;新华网美国太空探索公司当地时间23日晚在美国佛罗里达州一处空军基地发射火箭&#xff0c;将60颗小卫星送入近地轨道。这标志着企业家埃隆马斯克组建互联网卫星群的“星链”项目迈出实质性一步&#xff0c;抢在电子商务巨头亚马逊公司创始人杰夫贝索斯的“柯伊…

吴恩达《机器学习》学习笔记五——逻辑回归

吴恩达《机器学习》学习笔记五——逻辑回归一、 分类&#xff08;classification&#xff09;1.定义2.阈值二、 逻辑&#xff08;logistic&#xff09;回归假设函数1.假设的表达式2.假设表达式的意义3.决策界限三、 代价函数1.平方误差函数的问题2.logistic回归的代价函数四、梯…

协方差与相关系数

定义&#xff1a; 协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况&#xff0c;即当两个变量是相同的情况。 期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为&#xff1a; 如果两个变量的变化趋势一致&#xff0c;也就是说如果其中一…

吴恩达《机器学习》学习笔记六——过拟合与正则化

吴恩达《机器学习》学习笔记六——过拟合与正则化一、 过拟合问题1.线性回归过拟合问题2.逻辑回归过拟合问题3.过拟合的解决二、 正则化后的代价函数1.正则化思想2.实际使用的正则化三、 正则化的线性回归1.梯度下降的情况2.正规方程的情况四、 正则化的逻辑回归1.梯度下降的情…

5G时代,智能工厂迎来4大改变!

来源&#xff1a;亿欧网作为新一代移动通信技术&#xff0c;5G技术切合了传统制造企业智能制造转型对无线网络的应用需求&#xff0c;能满足工业环境下设备互联和远程交互应用需求。在物联网、工业自动化控制、物流追踪、工业AR、云化机器人等工业应用领域&#xff0c;5G技术起…

主成分分析PCA以及特征值和特征向量的意义

定义&#xff1a; 主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;&#xff0c; 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量&#xff0c;转换后的这组变量叫主成分。PCA的思想是将n维特征映射到k维上…

吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

吴恩达《机器学习》学习笔记七——逻辑回归&#xff08;二分类&#xff09;代码一、无正则项的逻辑回归1.问题描述2.导入模块3.准备数据4.假设函数5.代价函数6.梯度下降7.拟合参数8.用训练集预测和验证9.寻找决策边界二、正则化逻辑回归1.准备数据2.特征映射3.正则化代价函数4.…

从认知学到进化论,详述强化学习两大最新突破

来源&#xff1a;大数据文摘深层强化学习&#xff08;deep RL&#xff09;近年来在人工智能方面取得了令人瞩目的进步&#xff0c;在Atari游戏、围棋及无限制扑克等领域战胜了人类。通过将表征学习与奖励驱动行为相结合&#xff0c;深层强化学习又引发了心理学和神经科学领域的…

吴恩达《机器学习》学习笔记九——神经网络相关(1)

吴恩达《机器学习》学习笔记九——神经网络相关&#xff08;1&#xff09;一、 非线性假设的问题二、 神经网络相关知识1.神经网络的大致历史2.神经网络的表示3.前向传播&#xff1a;向量化表示三、 例子与直觉理解1.问题描述&#xff1a;异或XOR、同或XNOR2.单个神经元如何计算…

刚刚,科学家发现了一大堆解释人类进化的基因...

图片来源&#xff1a;《Nature Genetics》来源&#xff1a;中国生物技术网 5月27日发表在《Nature Genetics》上的一项新研究发现&#xff0c; 以前被认为在不同生物体中具有相似作用的数十种基因&#xff0c;实际上是人类独有的&#xff0c; 这或许有助于解释我们这个物种是如…

吴恩达《机器学习》学习笔记八——逻辑回归(多分类)代码

吴恩达《机器学习》笔记八——逻辑回归&#xff08;多分类&#xff09;代码导入模块及加载数据sigmoid函数与假设函数代价函数梯度下降一对多分类预测验证课程链接&#xff1a;https://www.bilibili.com/video/BV164411b7dx?fromsearch&seid5329376196520099118 之前笔记…

DeepMind 综述深度强化学习:智能体和人类相似度竟然如此高!

来源&#xff1a;AI科技评论近年来&#xff0c;深度强化学习&#xff08;Deep reinforcement learning&#xff09;方法在人工智能方面取得了瞩目的成就&#xff0c;从 Atari 游戏、到围棋、再到无限制扑克等领域&#xff0c;AI 的表现都大大超越了专业选手&#xff0c;这一进展…

吴恩达《机器学习》学习笔记十——神经网络相关(2)

吴恩达《机器学习》学习笔记十——神经网络相关&#xff08;2&#xff09;一、 代价函数二、 反向传播算法三、 理解反向传播算法四、 梯度检测五、 随机初始化1.全部初始化为0的问题2.随机初始化的思想六、 神经网络算法整体流程1.选择网络具体架构2.训练神经网络课程链接&…

吴恩达《机器学习》学习笔记十一——神经网络代码

吴恩达《机器学习》学习笔记十一——神经网络代码数据准备神经网络结构与代价函数初始化设置反向传播算法训练网络与验证课程链接&#xff1a;https://www.bilibili.com/video/BV164411b7dx?fromsearch&seid5329376196520099118 数据集链接&#xff1a;https://pan.baidu…

中国科研人员发明单晶体管逻辑结构新原理

▲随着晶体管不断缩小特征尺寸&#xff0c;集成电路的性能得以持续提升。然而在超小器件尺寸下&#xff0c;硅材料的物理极限导致了功耗的大幅提升&#xff0c;难以进一步持续减小晶体管的特征尺寸。来源&#xff1a;文汇网通过引入层状半导体&#xff0c;并依据其特性设计新型…

Java 内存模型

1、并发模型编程的分类 在并发模型编程中&#xff0c;我们需要解决两个关键问题&#xff1a;线程之间如何通信以及线程之间如何同步。线程之间的通信包括两种&#xff1a;共享内存和消息传递。 Java并发采用的是共享内存模型。 2、Java内存模型的抽象 Java内存模型的主要目标是…

PyTorch框架学习一——PyTorch的安装(CPU版本)

PyTorch框架学习一——PyTorch的安装&#xff08;CPU版本&#xff09;PyTorch简介PyTorch的安装&#xff08;CPU版&#xff09;机器学习/深度学习领域的学习都是需要理论和实践相结合的&#xff0c;而它们的实践都需要借助于一个框架来实现&#xff0c;PyTorch在学术界目前处于…

你的大脑在自动驾驶,而你一无所知

来源&#xff1a;果壳想象一下&#xff0c;你的大脑里有着两个小人&#xff0c;它们在不停地打架&#xff0c;试图夺取控制你行动的权力。当然&#xff0c;这两个小人并不是你善意和邪恶的念头。那它们是什么&#xff1f;在很多人看来&#xff0c;这两者就是我们的意识和无意识…