解决过拟合现象的六种姿势

前面一文讲述的了过拟合现象产生的原因,现在讲述过拟合现象如何解决:

1 增加训练数据

这是解决过拟合现象的根本办法,若没有过多的训练数据,我们可以自己增加一些假数据来在增加数据的数量,从而让模型的泛化能力增强。

2 控制模型的复杂度

过于复杂的模型容易造成过拟合现象。对于模型的设计而言,我们应该选择简单、合适的模型解决复杂的问题。

3 降低特征的数量

对于一些特征工程而言,可以降低特征的数量——删除冗余特征,人工选择保留哪些特征。这种方法也可以解决过拟合问题。

4 L1 / L2 正则化

L1 正则化

在原始的损失函数后面加上一个L1正则化项,即全部权重|w|的绝对值的和,再乘以λ/n。则损失函数变为:
在这里插入图片描述
对应的梯度(导数):
在这里插入图片描述
其中 sgn(w)只是简单地取 w各个元素地正负号。
在这里插入图片描述
梯度下降时权重 w更新变为:
在这里插入图片描述
当 w=0时,|w|是不可导的。所以我们仅仅能依照原始的未经正则化的方法去更新w。
当 w>0时,sgn( w )>0, 则梯度下降时更新后的 w变小。
当w<0 时,sgn( w)>0, 则梯度下降时更新后的 w 变大。
从这里的式子可以看出的是 ,添加L1正则后,w的值总是向着0靠近,这也就是说,使得网络中的权重变为0,也就是相当于减轻了网络的复杂度
这也就是L1正则化会产生更稀疏(sparse)的解的原因。此处稀疏性指的是最优值中的一些参数为0。L1正则化的稀疏性质已经被广泛地应用于特征选择机制,从可用的特征子集中选择出有意义的特征。

L2 正则化

L2正则化通常被称为权重衰减
在这里插入图片描述
对应的梯度(导数):
在这里插入图片描述
能够发现L2正则化项对偏置 b 的更新没有影响,可是对于权重 w的更新有影响:
在这里插入图片描述
在这里插入图片描述
这个式子是小于1 的
因此在梯度下降过程中,权重 w将逐渐减小,趋向于0但不等于0。这也就是权重衰减的由来
L2正则化起到使得权重参数 w 变小的效果,为什么能防止过拟合呢?因为更小的权重参数 w 意味着模型的复杂度更低,对训练数据的拟合刚刚好,不会过分拟合训练数据,从而提高模型的泛化能力。

5 dropout机制

Dropout是在训练网络时用的一种技巧(trike),相当于在隐藏单元增加了噪声。Dropout 指的是在训练过程中每次按一定的概率(比如50%)随机地“删除”一部分隐藏单元(神经元)。所谓的“删除”不是真正意义上的删除,其实就是将该部分神经元的激活函数设为0(激活函数的输出为0),让这些神经元不计算而已。
如下图是基础网络:
在这里插入图片描述
下面所述的式子是使用dropout后的网络
在这里插入图片描述

Dropout为什么有助于防止过拟合呢?

(a)在训练过程中会产生不同的训练模型,不同的训练模型也会产生不同的的计算结果。随着训练的不断进行,计算结果会在一个范围内波动,但是均值却不会有很大变化,因此可以把最终的训练结果看作是不同模型的平均输出。

(b)它消除或者减弱了神经元节点间的联合,降低了网络对单个神经元的依赖,从而增强了泛化能力。

6 Early stopping

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

为了获得性能良好的神经网络,训练过程中可能会经过很多次epoch(遍历整个数据集的次数,一次为一个epoch)。如果epoch数量太少,网络有可能发生欠拟合;如果epoch数量太多,则有可能发生过拟合。Early stopping旨在解决epoch数量需要手动设置的问题。具体做法:每个epoch(或每N个epoch)结束后,在验证集上获取测试结果,随着epoch的增加,如果在验证集上发现测试误差上升,则停止训练,将停止之后的权重作为网络的最终参数。

为什么能防止过拟合?当还未在神经网络运行太多迭代过程的时候,w参数接近于0,因为随机初始化w值的时候,它的值是较小的随机值。当你开始迭代过程,w的值会变得越来越大。到后面时,w的值已经变得十分大了。所以early stopping要做的就是在中间点停止迭代过程。我们将会得到一个中等大小的w参数,会得到与L2正则化相似的结果,选择了w参数较小的神经网络。

Early Stopping缺点:没有采取不同的方式来解决优化损失函数和过拟合这两个问题,而是用一种方法同时解决两个问题 ,结果就是要考虑的东西变得更复杂。之所以不能独立地处理,因为如果你停止了优化损失函数,你可能会发现损失函数的值不够小,同时你又不希望过拟合。

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值