降低过拟合的方法介绍

过拟合和欠拟合   

          机器学习的根本问题是优化和泛化的对立,优化:是指调节模型以在训练数据上得到最佳性能(也就是机器学习中的学习)而泛化是指训练好的模型在前所未有的数据上的性能的好坏。机器学习的目的当然是得到良好的泛化,但你无法控制泛化,只能基于训练数据调节模型。

        训练开始时,优化和泛化是相关的;训练数据上的损失越小,测试数据上的损失也就越小。这时的模型是欠拟合的,即仍有改进的空间,网络还没有对训练数据中所有相关模式建模。但在训练数据上的迭代一定次数之后,泛化不在提高,验证指标先是不变然后开始变差,即模型开始拟合。这时模型开始学习仅和训练数据有关的模式,但这种模式对新数据来说是错误的或无关紧要的。

         为了防止模型从训练数据中学到错误或无关的模式,最优解决方法是获取更多的训练数据。模型的训练数据越多,泛化能力自然也就好。如果无法获取更多数据,次优解决方法是调节模型允许存储的信息量,或对模型允许存储的信息加以约束。如果一个网络只能记住几个模式,那么优化过程会迫使模型集中学习最重要的模式,这样可能得到良好的泛化。这种降低拟合的方法叫做正则化。

降低过拟合的方法

        一、减小网络大小

                防止模型过拟合的最简单的方法就是减小模型大小,即减少模型中可学习参数的个数(这有层数和每层的单元个数决定)。在深度学习中,模型中可以学习参数的个数通常称为容量。显而易见,参数更多的模型拥有更大的记忆容量,可以完成训练样本和目标之间的字典映射,这种映射是不存在任何泛化能力的。我们写出的深度学习模型大多都很擅长拟合我们的训练数据,但真正的挑战是在于泛化,而不是拟合!当然,如果网络的记忆资源有限,则无法轻松学会这种映射,这就需要我们在容量过大和容量不足之间取一个折中;这也需要我们必须评估一系列不同网络构架,以便为数据找出最佳的模型大小。在这个过程中:开始时选择相对较小的层和参数,然后逐渐增加层的大小或增加新层数,直到这种增加对验证损失的影响变得很小。

        二、添加权重正则化

                我们应该了解多奥卡姆剃刀的原理:一件事情有两种解释,那么最可能正确的解释就是最简单的那个,也就是假设最少的那个。这个原理应用于神经网络学到的模型:给定一些训练数据和一种网络构架,很多组权重值(多模型)都可以解释这些数据。简单的模型比复杂的模型更不容易过拟合。

        这里的简单模型是指参数值分布的熵更小的模型,通过降低过拟合的方法就是强制让模型权重只能取较小值从而限制模型的复杂度,这就使得到的权重值分布更加规则。这种方法就叫做权重正则化,他的实现方法就是向网络损失函数中添加与较大权重相关的成本:

        L1正则化  :添加的成本与权重系数的绝对值成正比

        L2正则化 : 添加成本与权重系数的平方成正比,神经网络的L2正则化也叫权重衰弱。

from keras import regularizers 
 
regularizers.l1(0.001)     #L1正则化

regularizers.l2(0.001)   

regularizers.l1_l2(0.001,0.001)#同时做L1、L2正则化

        三、添加droupout正则化

        droupout是神经网络最有效也是最常用的正则化方法之一,对某一层使用droupout,就是在训练过程中随机将该层的一些输出特征舍弃。droupout比率是被设为零特征所占的比例,通常在0.2-0.5的范围内,如若测试时没有单元被舍弃,而该层的输出值需要按droupout比率缩小,这是因为这时比训练时有更多的单元被激活,需要加以平衡。在每个样本中随即删除不同部分神经元可以阻止他们过拟合,他的核心思想是在层的输出值中引入噪声,打破不显著的偶然模式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值