过拟合、欠拟合、正则化

过拟合和欠拟合

  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

Gaussian:12παexpw22α

代价函数的对数形式可以写成

logP(y|w,x)P(w)=logP(y|w,x)+logP(w)

右边第一项是原来的对数似然,第二项则可以化成

Laplace:1b|w|+=λ||w||1+

Gaussian:12αw2+=λ||w||2+

因为最大化logP(y|w,x)P(w) 最后都会转成最小化形式,所以代价函数最后会变成J=+λ||w||p 的形式。
2. 对于L1而言,假设参数服从拉普拉斯分布;而对于L2而言,假设参数服从高斯分布,两个都是0均值
3. 正则效果和原因
效果:L1范数可以使权值稀疏,方便特征提取。
L2范数可以防止过拟合,提升模型的泛化能力,使w趋于0(或者说约束在一个很小的范围内)
为什么正则会达到这个效果呢?过拟合可以说明用了复杂的模型。复杂模型在参数上的表现可以分为:参数w全不为0,说明所有特征都用到了即数据处于一个复杂的特征空间中;参数的波动范围大,考虑极端一点的例子,某个模型把异常点也拟合进来,使得数据样本在较小的区间值发生了很大的波动,即该区间内的导数非常大(w非常大),所以一个好的模型的参数波动范围不会很大。
从参数的角度来说,解决过拟合有两种思路:参数存在部分0值(稀疏权值,L1),参数约束在很小的范围内(接近于0,L2)
然后在实际中,w不一定服从高斯分布或者拉普拉斯分布(也有种说法是不加正则项的化w服从的是均匀分布),而正则项的引入就是要我们强行让我们预想的w去服从高斯分布或者拉普拉斯分布。
对于高斯分布来说,其均值为0,那么随着惩罚项λ 而言,λ 是和方差α 成反比
随着λ 变大,w都接近于0,这就是L2范数可以防止过拟合,提升模型的泛化能力,使w趋于0的原因
而对于L1而言,有个结论:任何的规则化算子,如果他在w_i=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。
然后Lasso的稀疏性解释在于,我们求解w的过程实际上是计算min(L+...lambda||w||p) 的形式
也就是每步迭代中计算对w求偏导,
两种 regularization 能不能把最优的 w 变成 0,取决于原先的L在 0 点处的导数。如果本来导数不为 0,那么施加 L2 regularization 后导数依然不为 0,最优的 x 也不会变成 0。而施加 L1 regularization 时,只要 regularization 项的系数 lambda 大于原先费用函数在 0 点处的导数的绝对值,w = 0 就会变成一个极小值点。
w<0 时 L+λ|w| 的导数要小于0(函数减),同理w>0时导数>0 (函数增)
w从左边趋近于0 时,λ|w| 的导数是λ ,假设此时 L 的导数为 La ,必须有 Laλ<0λ>La ,同理w从右边趋近于0时,必须有 Lb+λ>0 ,即λ>Lb ,即当λ 大于L在0点附近的绝对值,那么对应的w就必须为0,起到一个稀疏的作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章