过拟合、欠拟合、正则化

过拟合和欠拟合

  1. 产生原因
    • 欠拟合:模型学习能力不足(太简单),无法学习到数据的真实分布,即模型的期望输出和真实输出之间有很大的差异,高偏差。
    • 过拟合:模型学习能力过分(太复杂),因噪声干扰等因素导致数据的分布有轻微的波动,但是模型也学习到了,导致模型的训练结果得到的数据分布过分依赖于所输入的数据,高方差。
    • 从模型泛化程度上理解,欠拟合的模型在训练集和测试集上表现不足,而过拟合的模型尽管在训练集上有良好的表现,模型泛化程度较差导致在测试集上差强人意。
    • 过拟合的原因是算法的学习能力过强,对数据分布而言,一些假设条件(如样本独立同分布)可能是不成立的;训练样本过少不能对整个空间进行分布估计。
  2. 缓解方法
    合适的数据分布+合理的模型复杂性
    合理的组合应该是:复杂的数据分布+简单的模型 或者 简单的数据分布+复杂的模型
    这里写图片描述

  3. 神经网络中的过拟合

    • 早停策略。本质上是交叉验证策略,选择合适的训练次数,避免训练的网络过度拟合训练数据。
    • 集成学习策略。而DNN可以用Bagging的思路来正则化。首先我们要对原始的m个训练样本进行有放回随机采样,构建N组m个样本的数据集,然后分别用这N组数据集去训练我们的DNN。即采用我们的前向传播算法和反向传播算法得到N个DNN模型的W,b参数组合,最后对N个DNN模型的输出用加权平均法或者投票法决定最终输出。不过用集成学习Bagging的方法有一个问题,就是我们的DNN模型本来就比较复杂,参数很多。现在又变成了N个DNN模型,这样参数又增加了N倍,从而导致训练这样的网络要花更加多的时间和空间。因此一般N的个数不能太多,比如5-10个就可以了。
    • DropOut策略。所谓的Dropout指的是在用前向传播算法和反向传播算法训练DNN模型时,一批数据迭代时,随机的从全连接DNN网络中去掉一部分隐藏层的神经元。 在对训练集中的一批数据进行训练时,我们随机去掉一部分隐藏层的神经元,并用去掉隐藏层的神经元的网络来拟合我们的一批训练数据。使用基于dropout的正则化比基于bagging的正则化简单,这显而易见,当然天下没有免费的午餐,由于dropout会将原始数据分批迭代,因此原始数据集最好较大,否则模型可能会欠拟合。
    • Batch Normalization。在神经网络中存在covariate internal shift现象(就是输入x服从一定的分布,通过神经网络层映射之后,对应的输出的分布发生了改变,产生了偏移)。后面的网络总要调整参数去补偿这种改变,致使整个网络复杂化,也容易过拟合。为了解决这个问题,Batch Normalization方法,总的来说就是对层间的数据做均值和方差的修正,把输出重新映射为一个高斯分布,最终它让一些饱和非线性的激活函数可以被使用。

正则化

  1. 原理(或者说思考):
    从贝叶斯的角度来说,代价函数可以表示为P(y|w,x)的形式,而正则项则是对参数w做了一个先验分布的假设,使得代价函数变成P(y|w,x)P(w)
    考虑两个分布:0均值的高斯分布和0均值的拉普拉斯分布

Laplace:12bexp|w|b L a p l a c e : 1 2 b e x p − | w | b

Gaussian:12παexp
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值