【机器学习trick】Batch-Normalization的理解和研究

Batch-Normalization概述

15年谷歌发表了一篇文章,名字是《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,文章介绍了一种新的深度学习算法,可以有效的提高模型的效率和精度。
在介绍原理之前,首先要提一下关于数据分布的问题。我们在使用机器学习训练数据的时候,一般都会对数据进行归一化(?)白化(?)或者减去均值等操作,这是因为
将数据分布中心移到原点附近,能使函数更快的拟合,加快训练速度。
数据分布
(关于归一化的问题将另写一篇文章讨论),那么我们就会发现一个问题,经过神经网络一层的计算后,得到的输出的分布又发生了变化,文中称这种情况为Internal Covariate Shift,所以这会对后面的处理产生效率和精度方面的影响,BN的作用其实就是在网络内部对数据再次进行标准化,对象是已经提取出来的特征。
总之BN的优点非常多,包括收敛速度快,泛化能力强等,给使用者带来的优势就是更节省时间,而且可以一定程度上摆脱dropout和L2 正则化等纠正过拟合的trick,当然具体的效果还是要根据自己实验的数据来判定。

BN基本原理

首先考虑的问题是我们如何处理神经网络内部的数据,理论上来说直接做一次标准化就可以,但是文章中提出这么做的话会影响模型的表达能力,如图中表示。假设是模型使用的激活函数是sigmoid函数,标准化以后就相当于把数据限定在了函数的线性部分,其他部分都被忽略掉了。
表达能力
所以作者重构了一下原来的公式,使其可以表达提取的特征,
这里写图片描述
BN层的前向传导过程
BNFF
具体的细节以后补充

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值