正则化

                                                正则化

一、前言

  在学习Dropout的时候提到正则化,正则化也是一种缓解过拟合的方法,网上很多说法是防止过拟合(包括我自己的Dropout),窃以为不太准确,不然为什么很多牛逼的网络基本都是多种方法联合使用。

  过拟合(Overfitting)发生于训练数据不足、模型过大(参数量巨大)、过度训练,从炼模型的角度可以知道,随着训练进行虽然loss曲线持续下降非常优美,然后在验证集上反而越来越差,错误率持续走高,如图

  从图中可以看到,也可以通过提早停止训练,但是事实上你很难找到那个你应该停止训练的点,只能训练完了在训练完的模型中寻寻觅觅。正则化也是一个经典的办法,值得搞明白,而不是仅仅知道它可以缓解过拟合。

二、正则化理论

1、基本概念复习

  机器学习算法中,训练模型的数据通常会分为:训练集(Training set)、验证集(Validation data set)和测试集(Test data set)。

  如上图的标记所示。

  训练集:用于训练的实际数据集

  验证集:指导超参数的调整,比如学习率、正则化系数调整,根据初步训练效果调整超参数。

  测试集:模型训练完毕之后,用测试集对模型的各项性能评估的数据集,比如准确度(Accuracy)、精确度(Precision)、召回率(Recall)、TP、FP等等。

  这就是炼模型的总体流程咯,以前都知道,但是并不知道我要调整的超参数意味着什么。常用的正则化有L1正则化和L2正则化,这个在caffe的solver.prototxt经常见到weight decay,原来这个是L2正则化的系数。不失一般性,设模型训练的损失函数为

              

损失函数根据实际情况可以是最小二乘损失函数、交叉熵损失函数和均方差损失函数等。

2、L2正则化

正则化使用通常是在模型原损失函数上加上正则项惩罚项(正则项可微),对于L2正则项,原损失函数变为

            

其中α (0<α<1)是正则项系数。直观上便可以揣度加上正则项的用意,训练的目标是最小化损失函数,要让损失函数最小化,必定也会迫使正则项尽可能小,那么模型权值被迫随之变小,这样就可以让模型权重不至于过大。进一步对其求偏导,并写出参数更新式,就会更加显而易见

                                      

                                         

对于mini-batch随机梯度下降的参数更新式

               

               

  其中β 是学习率(0和1之间的数),权值更新时,注意到1-βα 是小于1,则权值在更新时被衰减(变小),weight decay顾名思义。L2使得权值分布尽可能在0周围,这样模型权值的方差也就不会太大,数值上比较接近,拟合函数波动就不会太大,也就不会使得模型过分地去拟合噪声。比较优雅且牛逼的解释:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀)

  如果模型函数权值数值上相差不是很大且数值都接近0(比较小),那么模型函数可视化后必定更为光滑(如果对特征求偏导权值大小即就是偏导数),不偏不倚,更能忽略噪声学到本质分布,如图所示。

 

3、L1正则化

   同理在损失函数上加上L1正则项如下

            

  加上L1正则项的作用和L2基本一致,迫使模型权值尽可能小,只是形式和L2正则项不一样,L1正则项在0处不可导,这就使得在参数更新时在正则项等于0时按照原来更新方式更新。再来看看此时损失函数偏导形式及权值更新形式(mini-batch)

         

       

其中sgn是符号函数,权值更新形式

        

        

  从更新形式可以看到权值更新方向,当w大于0,则使得权值减一个正数,等于是多一个迫使其向零靠近的引导;当w小于0,则使得权值加一个正数,同样多一个使其向零靠的引导;当w等于0,则按原始更新方式。

  L1和L2正则化都是使得w波动范围变小,即使其尽可能在0附近。那么他们有什么不同呢?讲道理都是让参数最小,一个是绝对值和最小,一个是平方和最小。

  从更新式看, L1范数更新参数时对于w大于0、小于0和等于0有着不同的形式,但是下降的速度大小(偏导绝对值为1)不变;

        

       

       

       

  L2更新式无论w取何值都是一个形式,它的作用仅仅是让权值衰减,等价的使其绝对值尽可能小,每一次都按相同的比例衰减w,但并没有强制其往零靠。更新形式展开,可以很直接的看出区别,w的下降速度大小与w绝对值正相关,越接近0下降的越慢。

      

      

 

看看L1和L2函数图像,针对其中任意一个权值w,

     

  我们调参的时候,实际上调的是正则化系数α ,这样就可以控制正则项在损失函数中的作用大小,即weight decay超参数大小的调整。如果weight decay过大,则可能使得w过小,导致模型欠拟合(underfitting),过小则又会过拟合(overfitting),不偏不倚,中庸之道,方可。一般都有经验值,一些牛逼的模型开源也一般都是作者调好了,一般默认是0.0005,知道了作用我们也可以在训练时调整,很多调侃这项工作是“调参狗”,试问如果不懂原理,没有方法,可能连调参狗都不如。

4、最大范数约束(Max norm constraints

  最大范数约束是通过向参数量级的范数设置上限对网络进行正则化的手段,参数更新按照原始方式更新,只是在更新后需要检查参数的2范数是否超越上界,

      

 

     

c一般取  ,如果参数超过上界则截断为c的值,这个办法其实比较粗暴。

 

参考博客

http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html

 

http://www.cnblogs.com/alexanderkun/p/6922428.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值