正则化的概念

Posted 混沌战神阿瑞斯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则化的概念相关的知识,希望对你有一定的参考价值。

摘要:

  今天在看李航的《统计学习方法》的决策树剪枝过程中,又一次发现了正则化这个概念。故百度并记录如下。

知识总结:

  我的理解就是平衡训练误差与模型复杂度的一种方式,通过加入正则项来避免过拟合。

  正则化的目的:避免出现过拟合(over-fitting)

  经验风险最小化 + 正则化项 = 结构风险最小化
  经验风险最小化(ERM),是为了让拟合的误差足够小,即:对训练数据的预测误差很小。
  但是,我们学习得到的模型,当然是希望对未知数据有很好的预测能力(泛化能力),这样才更有意义。
  当拟合的误差足够小的时候,可能是模型参数较多,模型比较复杂,此时模型的泛化能力一般。于是,我们增加一个正则化项,它是一个正的常数乘以模型复杂度的函数,         aJ(f),a>=0 用于调整ERM与模型复杂度的关系。
  结构风险最小化(SRM),相当于是要求拟合的误差足够小,同时模型不要太复杂(正则化项的极小化),这样得到的模型具有较强的泛化能力。
  
  
  常见的正则化方法:
  
  • L2正则化,这个我们之前就提到过,非常常见。实现起来也很简单,我们在损失函数里,加入对每个参数的惩罚度。也就是说,对于每个权重w,我们在损失函数里加入一项12λw2,其中λ是我们可调整的正则化强度。顺便说一句,这里在前面加上1/2的原因是,求导/梯度的时候,刚好变成λw而不是2λw。L2正则化理解起来也很简单,它对于特别大的权重有很高的惩罚度,以求让权重的分配均匀一些,而不是集中在某一小部分的维度上。我们再想想,加入L2正则化项,其实意味着,在梯度下降参数更新的时候,每个权重以W += -lambda*W的程度被拉向0。

  • L1正则化,这也是一种很常见的正则化形式。在L1正则化中,我们对于每个权重w的惩罚项为λ|w|。有时候,你甚至可以看到大神们混着L1和L2正则化用,也就是说加入惩罚项λ1w+λ2w2,L1正则化有其独特的特性,它会让模型训练过程中,权重特征向量逐渐地稀疏化,这意味着到最后,我们只留下了对结果影响最大的一部分权重,而其他不相关的输入(例如『噪声』)因为得不到权重被抑制。所以通常L2正则化后的特征向量是一组很分散的小值,而L1正则化只留下影响较大的权重。在实际应用中,如果你不是特别要求只保留部分特征,那么L2正则化通常能得到比L1正则化更好的效果

  • 最大范数约束,另外一种正则化叫做最大范数约束,它直接限制了一个上行的权重边界,然后约束每个神经元上的权重都要满足这个约束。实际应用中是这样实现的,我们不添加任何的惩罚项,就按照正常的损失函数计算,只不过在得到每个神经元的权重向量w之后约束它满足w2<c。有些人提到这种正则化方式帮助他们提高最后的模型效果。另外,这种正则化方式倒是有一点很吸引人:在神经网络训练学习率设定很高的时候,它也能很好地约束住权重更新变化,不至于直接挂掉。

  • Dropout,亲,这个是我们实际神经网络训练中,用的非常多的一种正则化手段,同时也相当有效。Srivastava等人的论文Dropout: A Simple Way to Prevent Neural Networks from Overfitting最早提到用dropout这种方式作为正则化手段。一句话概括它,就是:在训练过程中,我们对每个神经元,都以概率p保持它是激活状态,1-p的概率直接关闭它。

参考链接:
  http://blog.csdn.net/vbskj/article/details/52702399
  作者:张旗
  链接:https://www.zhihu.com/question/20924039/answer/29338527
  来源:知乎
  著作权归作者所有,转载请联系作者获得授权。

以上是关于正则化的概念的主要内容,如果未能解决你的问题,请参考以下文章

浅析L2参数正则化的数学含义

对于正则化的理解

L1正则化和L2正则化的区别

带有正则化的 Numpy 线性回归

损失函数或者代价函数,正则化的作用

正则化的其他方法