本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
BN批归一化层是一种常用的深度学习技术,它通过解决内部协变量偏移问题来加速网络训练的速度
本文简单介绍BN批归一化层的原理并详细讲述BN批归一化层的计算公式
本节介绍批归一化层是什么,用来干什么
批归一化层简介
BN批归一化层解决什么问题
由于前层的权重发生变化会导致后一层的输入发生变化,
而当深度学习网络很多层的时候,前几层的变化会经过层层传播、扩大,
在训练时调整前层的权重时,很容易令后层网络的输入发生极大的变化,
上述现象称为内部协变量偏移,它导致后层的神经元出现饱和等各种问题,并给训练造成困难,
因此提出BN批归一化来hold住输入的分布,消除内部协变量偏移,加速多层神经网络的训练
BN批归一化层
BN批归一化层一般嵌入到其他层的神经元值之后、激活函数之前的位置
BN层主要的目的是解决一般神经网络层之中的协变量偏移问题,
通过加入BN层,可以一定程度抑制神经元值的内部协变量偏移,加速网络的训练
✍️BN批归一化的原文
BN批归一化层在Inception-V2的原文中提出:
《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
本节介绍批归一化层的结构与具体计算公式
BN批归一化层的结构
批归一化层由归一化与仿射两部分组成,如下:
由于批归一化一般是嵌入在神经元值N和激活函数之间,因此这里的输入我们用N来表示
BN批归一化层的计算公式
批归一化BN层的具体计算公式如下:
BN层计算公式详细解说如下:
1. 归一化中的和
是输入N的期望值,是N的方差
两者都通过整体样本进行估算 ,估算公式如下:
,n是样本数
2. 归一化中的 ϵ
是一个较小的数,在分母中加入是为了防止分母过小
3. 仿射部分的
是待优化的参数,跟着模型一起训练
✍️补充:批归一化基于独立神经元
BN层的运算是针对每一个神经元而言的,
也就是说,每个神经元各自进行归一化,并且不同的神经元,参数是不一样的
本节介绍BN层应用于卷积层时的计算方式
关于BN应用于卷积层
BN应用于卷积层,基本与应用于全连接层时是类似的,
唯一不同的是, 考虑到卷积层单个通道(featureMap)内的各个神经元与周边神经元是相关联的
在归一化时需要保持这个特征,因此,归一化整个过程对单通道的神经元应使用统一的参数
即:1.同一通道的神经元使用相同的
例如一个通道的featureMap为h×w, 共有n个样本
则用这n×h×w个神经元值来估算
2.同一通道的神经元使用相同的
总的来说,BN应用于卷积层时,所有归一化参数是相对通道而言的,而非独立神经元
好了,BN层的相关计算公式与算法就介绍到这里了~
End