批规范化是什么

小嘿 QA 2020-04-14 10:47:27 阅读(...)

批规范化是指在每次随机梯度下降时,通过mini-batch来对相应的activation做规范化操作,使得结果的均值为0,方差为1. 从而保证整个网络的capacity。

批规范化是指在每次随机梯度下降时,通过 mini-batch 来对相应的 activation 做规范化操作,使得结果(输出信号各个维度)的均值为 0,方差为 1. 而最后的“scale and shift”操作则是为了让因训练所需而“刻意”加入的 BN 能够有可能还原最初的输入,从而保证整个网络的 capacity。

批规范化是什么

背景

2015 年深度学习领域,BN 出自论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,这个算法当前已经被大量的应用,最新的文献算法很多都会引用这个算法,进行网络训练,可见其强大之处非同一般。

深度学习捷报连连、声名鹊起,随机梯度下降成了训练深度网络的主流方法。尽管随机梯度下降法对于训练深度网络简单高效,但是它有个毛病,就是需要我们人为的去选择参数,比如学习率、参数初始化、权重衰减系数、Drop out 比例等。这些参数的选择对训练结果至关重要,以至于我们很多时间都浪费在这些的调参上。那么学完这篇文献之后,你可以不需要那么刻意的慢慢调整参数。BN 算法(Batch Normalization)其强大之处如下:

(1)可以选择比较大的初始学习率,让你的训练速度飙涨。以前还需要慢慢调整学习率,甚至在网络训练到一半的时候,还需要想着学习率进一步调小的比例选择多少比较合适,可以采用初始很大的学习率,然后学习率的衰减速度也很大,因为这个算法收敛很快。当然这个算法即使你选择了较小的学习率,也比以前的收敛速度快,因为它具有快速训练收敛的特性;

(2)再也不用去理会过拟合中 drop out、L2 正则项参数的选择问题,采用 BN 算法后,你可以移除这两项了参数,或者可以选择更小的 L2 正则约束参数了,因为 BN 具有提高网络泛化能力的特性;

(3)再也不需要使用使用局部响应归一化层了(局部响应归一化是 Alexnet 网络用到的方法,搞视觉的估计比较熟悉),因为 BN 本身就是一个归一化网络层;

(4)可以把训练数据彻底打乱(防止每批训练的时候,某一个样本都经常被挑选到,文献说这个可以提高 1%的精度)。

开始讲解算法前,先来思考一个问题:在神经网络训练开始前,都要对输入数据做一个归一化处理,那么具体为什么需要归一化呢?归一化后有什么好处呢?原因在于神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch 梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对数据都要做一个归一化预处理的原因。

对于深度网络的训练是一个复杂的过程,只要网络的前面几层发生微小的改变,那么后面几层就会被累积放大下去。一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练过程中,训练数据的分布一直在发生变化,那么将会影响网络的训练速度。

网络一旦 train 起来,那么参数就要发生更新,除了输入层的数据外(因为输入层数据,我们已经认为的为每个样本归一化),后面网络每一层的输入数据分布是一直在发生变化的,因为在训练的时候,前面层训练参数的更新将导致后面层输入数据分布的变化。以网络第二层为例:网络的第二层输入,是由第一层的参数和 input 计算得到的,而第一层的参数在整个训练过程中一直在变化,因此必然会引起后面每一层输入数据分布的改变。我们把网络中间层在训练过程中,数据分布的改变称之为:“Internal CovariateShift”。Paper 所提出的算法,就是要解决在训练过程中,中间层数据分布发生改变的情况,于是就有了 BatchNormalization,这个牛逼算法的诞生。

简介

作用

BN 也属于网络的一层。网络除了输出层外,其它层因为低层网络在训练的时候更新了参数,而引起后面层输入数据分布的变化。这个时候我们可能就会想,如果在每一层输入的时候,再加个预处理操作那该有多好啊,比如网络第三层输入数据 X3(X3 表示网络第三层的输入数据)把它归一化至:均值 0、方差为 1,然后再输入第三层计算,这样我们就可以解决“InternalCovariateShift”的问题了。

而事实上,paper 的算法本质原理就是这样:在网络的每一层输入的时候,又插入了一个归一化层,也就是先做一个归一化处理,然后再进入网络的下一层。不过文献归一化层,可不像我们想象的那么简单,它是一个可学习、有参数的网络层。

算法实现

其实如果是仅仅使用上面的归一化公式,对网络某一层 A 的输出数据做归一化,然后送入网络下一层 B,这样是会影响到本层网络 A 所学习到的特征的。打个比方,比如网络中间某一层学习到特征数据本身就分布在 S 型激活函数的两侧,你强制把它给我归一化处理、标准差也限制在了 1,把数据变换成分布于 s 函数的中间部分,这样就相当于我这一层网络所学习到的特征分布被你搞坏了,这可怎么办?于是作者使出了变换重构,引入了可学习参数γ、β,这就是算法关键之处:

是可以恢复出原始的某一层所学到的特征的。因此我们引入了这个可学习重构参数γ、β,让我们的网络可以学习恢复出原始网络所要学习的特征分布。最后 BatchNormalization 网络层的前向传导过程公式就是:

公式中 m 指的是 mini-batchsize。

一个网络一旦训练完了,就没有了 min-batch 这个概念了。测试阶段我们一般只输入一个测试样本,看看结果而已。因此测试样本,前向传导的时候,上面的均值 u、标准差σ要哪里来?其实网络一旦训练完毕,参数都是固定的,这个时候即使是每批训练样本进入网络,那么 BN 层计算的均值 u、和标准差都是固定不变的。可以采用这些数值来作为测试样本所需要的均值、标准差,于是最后测试阶段的 u 和σ 计算公式如下:

对于均值来说直接计算所有 batch u 值的平均值;然后对于标准偏差采用每个 batchσB 的无偏估计最后测试阶段,BN 的使用公式就是:

收藏 0个人收藏
走进科技生活方式

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • camera lens 相机镜头

    短焦镜头和长焦镜头区别在哪里

    短焦镜头和长焦镜头最大的不同就是焦距不同,广角能够体现景物的质感和真实感,看起来更有表现力;长焦头就是拍摄距离可以达到更长,这就意味着可以在很远的距离悄无声息的拍摄,所以多用于足球赛、野外动物拍摄,但是相对广角来说,对物体的表现力要低得多。
  • camera lens 照相机镜头

    人像头是什么

    人像头指的是人像摄影镜头,一般是指在镜头1.5m—2m的距离上照人的镜头,也就是70mm-135mm的镜头,按照一般的美学观点,在1.5至2米外看一个人的五官是最漂亮的,人像头都是定焦镜头,相比变焦镜头光圈能做得更大,光学素质也更高。
  • Standard lens 标准镜头

    标头是什么

    标头一般指标准镜头,标准镜头是视角为50度左右的镜头之总称,标准镜头通常是指焦距在40至55毫米之间的摄影镜头,标准镜头所表现的景物的透视与目视比较接近,它是所有镜头中最基本的一种摄影镜头,其视角与人眼的视角比较类似。
  • Storage card 储存卡

    SD卡提示格式化怎么办

    SD卡提示格式化,需要将SD卡插入读卡器连接电脑,点击开始、运行,输入”chkdsk /f h:“,按回车进入修复阶段,修复完成,右键 SD 卡选属性、工具、开始检查、把“自动修复文件系统错误”和扫描并尝试恢复坏扇区”打上√,即可。
  • SD card SD 卡

    为什么储存卡要格式化

    以前的硬盘和磁盘产品因为出厂时只经过低级格式化,也就是划分了磁道和扇区,但并没有高级格式化,所以买来以后必须格式化一下才能用,但最近这几年的产品为了使用方便,一般出厂时已经高级格式化过,并不需要再格式化了。
  • Large zoom automatic lens 大变焦自动镜头

    旅游头是什么

    旅游头一般指大变焦自动镜头,可以从广角覆盖到长焦,优点就是方便,既能拍风景,也能拍人像,有的镜头还带有微距功能,远近通吃,所以非常适合旅游使用,有时也称为“一镜走天下”,这类镜头通常是为旅游设计的,携带的时候不会成为一种负担。