学深度学习怎么可能学不到BN呢?今天就记录一下,学BN学到的一些知识。个人笔记,欢迎指点。
原论文:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
Batch Normalization的目的是使我们的feature map满足均值为0,方差为1的分布规律。这里所说满足某一分布规律并不是指某一个feature map的数据要满足分布规律,理论上是指整个训练样本集所对应feature map的数据要满足分布规律。
对于一个拥有d维的输入x,我们将对它的每一个维度进行标准化处理
下图为论文中给出的公式:
我们刚刚有说让feature map满足某一分布规律,理论上是指整个训练样本集所对应feature map的数据要满足分布规律,也就是说要计算出整个训练集的feature map然后在进行标准化处理,对于一个大型的数据集明显是不可能的,所以论文中说的是Batch Normalization,也就是我们计算一个Batch数据的feature map然后在进行标准化(batch越大越接近整个数据集的分布,效果越好)。我们根据上图的公式可以知道代表着我们计算的feature map每个维度(channel)的均值,注意是一个向量不是一个值,向量的每一个元素代表着一个维度(channel)的均值。代表着我们计算的feature map每个维度(channel)的方差,注意是一个向量不是一个值,向量的每一个元素代表着一个维度(channel)的方差,然后根据和计算标准化处理后得到的值。
在原论文公式中还有,两个参数吗?是的,是用来调整数值分布的方差大小,是用来调节数值均值的位置。这两个参数是在反向传播过程中学习得到的,的默认值是1,的默认值是0。