正则化基础原理

在一个深度网络的设计过程中,norm层的存在是不可或缺的,缺少norm层会有很大可能造成梯度震荡(梯度消失或爆炸),然而如何选择norm层,需要考虑到norm层本身的特点和前一层输出的响应值分布。不同的深度模型方法需要不同的norm方法来适应自己的网络。

Batch Normalization

batch normalization是最近几年深度学习领域中最重要的成果之一,它的使用有效的加快了模型的收敛速度,在一定程度上缓解了深层网络中的‘梯度弥散’问题,从而使得训练的网络模型鲁棒性更好。

batch normalization的方法如下:

1.计算当前batch的均值u和方差sigma
2.将所有的数据减去均值u
3.将当前所有数据除以方差的平方根sqrt(sigma)
4.将经过前三步之后的数据*gama,再加上bias,其中这里的gama和bias是可学习的参数变量

前三步很好理解,将数据减去均值,再除以方差,可以将数据归一到正态分布。那第四步该如何理解呢,又有什么作用呢?从公式上看,第四步相当于把已处于正态分布的数据乘以了一个尺度因子gamma,再加上了一个平移因子bias,这不是又逆向回原来的分布了吗?当然不是,第四步的gamma和bias是可学习的参数,网络会通过权重更新自己去调节这两个参数,使得它拟合现有的模型参数。如果取消了第四步,那相当于经过了bn层之后的数据都变成了正态分布,这样不利于网络去表达数据的差异性,会降低网络的性能,加上了第四步之后,网络会根据模型的特点自动地去调整数据的分布,更有利于模型的表达能力点。

Group Normalization

Batch Normalization的方法虽然好用,但是它也有自己的一些缺陷,当batch_size较小时,bn算法的效果就会下降,特别是当batch_size=1是Batch Normalizaiton几乎没有任何的作用,还增加了网络模型的参变量的个数。有当batch_size较小时,bn层很难学到正确的样本分布,导致gamma和bias参数学习的效果不好。为了很好的解决这一问题,Facebook AI Lab提出了Group Normalizaiton

从图中可以看出,随着batch_size的减小,batch norm的error率逐渐上升,而group norm的error率几乎不变。在一些目标检测方面的模型中,例如faster-rcnn或mask-rcnn,当你只拥有一个GPU时,要求的batch_size通常为1或2张图片,这种情况下batch norm的效果就会大打折扣。group norm的算法流程:

1.将当前层的数据在通道的维度上划分为多个group
2.求出每个group中的数据的均值和方差
3.将每个group中的数据减去它们相应的均值再除以方差的平方根
4.将经过前三步之后得到的数据乘以gamma,再加上bias

croup normalization和batch normalization的算法过程极为相似,仅仅通过划分group这样的简单操作就改善了batch norm所面临的问题,在实际应用中取得了非常好的效果。

  • L2 Normalization

L2 norm其实是一个比较朴素的应用比较广泛的正则化算法,从过去的传统算法到现在的深度学习,从数据预处理到模型优化,都或多或少的会用到这个思想。其算法的过程也比较简单:

1.求出当前层数据的平方
2.求出当前层数据的平方和
3.将第一步得到的数据除以第二部得到

这样一个简单的过程,会有什么作用呢?首先,经过L2 norm的数据都处于0到1之间。其次,经过L2 norm的数据之间的差异性会被放大。这两个特点能够在某些情况下发挥重要的作用,而在实际应用中,往往就是这样的小trick的累积最终形成了质变。

L2 norm在深度学习中的应用,比较著名的有SSD目标检测器。作者在SSD中的conv4_3层后面加上了L2 norm,他的理由是该层的数据尺度与其他层不同,所以需要加上一个norm操作,具体的分析可看作者在github中的回复:

https://github.com/weiliu89/caffe/issues/241

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值