首页 > 编程知识 正文

神经网络bn的作用,bn层训练和测试的区别

时间:2023-05-04 07:05:12 阅读:21409 作者:909

批量规范化(BN:Batch Normalization ) (解决培训过程中中间层数据分布变化的问题,防止坡度消失或爆炸,提高培训速度)。

1、为什么输入数据需要归一化(Normalized Data)?

标准化有什么好处? 其原因在于,神经网络学习过程的本质是为了学习数据分布,训练数据和测试数据的分布不同,网络泛化能力也会大幅降低,而训练数据的分布逐批不同(batch梯度降低),网络泛化能力也会大幅降低因此,需要对数据进行归一化的预处理。

深度网络训练是一个复杂的过程,随着网络前几个阶段的细微变化,后几个阶段会不断累积扩展。 当网络某一层的输入数据分布发生变化时,该层的网络需要适应学习这一新的数据分布,因此在训练过程中训练数据的分布持续变化会影响网络的训练速度。

2、BN训练

1 )随机梯度下降法(SGD )对训练深度网络简单高效,但存在需要人工选择学习率、参数初始化、权衰减系数、Drop out比率等参数的缺点。 这些参数的选择对训练结果非常重要,我们在这些参与上浪费了很多时间。 那么,使用BN后,就不需要那么刻意缓慢地调整参数了。

2 )神经网络训练后,参数更新。 除了输入层的数据之外,(由于输入层的数据,我们已经人为按样本进行了标准化)之后网络各层的输入数据分布总是发生变化。 这是因为在训练时,前一层训练参数的更新会导致后一层输入数据分布的变化。 以网络层2为例,网络的第2层输入是根据第1层参数和input计算的,但由于第1层参数在训练过程中一直在变化,因此每个后续层的输入数据分布都会发生变化。 我们把网络中间层在训练中数据分布的变化称为“Internal Covariate Shift”。 本文提出的算法是解决训练中中间层数据分布变化的情况,从而诞生了Batch Normalization。

3 )与BN的地位)激活函数层、卷积层、全连接层、池化层一样,bn(batchnormalization )也属于网络的一层。

4 )BN的本质原理)在输入网络的每一层时插入规范化层。 也就是说,首先进行归一化处理(归一化为平均值0、方差1 ),然后进入网络的下一层。 但是,文献正规化层并不像我们想象的那么简单,而是可以学习并且有参数(,)的网络层。

3、BN的作用

1 )改善流过网络的坡度

2 )允许更大的学习率,大幅提高训练速度:

可以选择比较大的初始学习率来加快训练速度。 以前,需要逐渐调整学习率。 甚至在网络培训减半的时候,我也需要考虑选择多少学习率更低的比例是合适的。 现在,可以采用初期的大学习率。 而且,学习率的衰减速度也变大。 因为这个算法收敛很快。 当然这个算法比以前的收敛速度快,即使你选择了小的学习率。 要说为什么,那是因为它具有快速训练收敛的特性;

3 )减少对初始化的强烈依赖

4 )改进正则化策略:作为正则化的一种形式,稍微减少了对dropout的需求

您不必在拟合中忽略drop out、L2正则项参数中的选择问题。 使用BN算法,可以删除这两个参数,也可以选择较小的L2正则约束参数。 因为BN具有提高网络泛化能力的特性。

5 )不再需要使用局部响应规范化层。 由于BN本身就是归一化网络层,所以局部响应归一化是Alexnet网络中使用的一种方法,它习惯于进行视觉估计。

6 )可以完全打乱训练数据)防止每次训练批次中的样本总是被提取。 据文献报道,这可以提高1%的精度。

注:上述为学习过程,测试时,均值和方差(均值/方差(均值/STD )宜不基于小批量计算,取训练中激活值的均值。

参考: https://www.cn blogs.com/yh dbg-LPS/p/8378561.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。