好看的网站 你明白吗广州外贸网站推广
2026/4/18 17:16:58 网站建设 项目流程
好看的网站 你明白吗,广州外贸网站推广,怎样制作网站和软件,网站开发项目交接Batch Normalization 在上一节#xff0c;我们观察了各层的激活值分布#xff0c;并从中了解到如果设定了合 适的权重初始值#xff0c;则各层的激活值分布会有适当的广度#xff0c;从而可以顺利地进 行学习。那么#xff0c;为了使各层拥有适当的广度#xff0c;“强制…Batch Normalization在上一节我们观察了各层的激活值分布并从中了解到如果设定了合适的权重初始值则各层的激活值分布会有适当的广度从而可以顺利地进行学习。那么为了使各层拥有适当的广度“强制性”地调整激活值的分布会怎样呢实际上Batch Normalization[11]方法就是基于这个想法而产生的。Batch Normalization 的算法Batch Normalization下文简称Batch Norm是2015 年提出的方法。Batch Norm虽然是一个问世不久的新方法但已经被很多研究人员和技术人员广泛使用。实际上看一下机器学习竞赛的结果就会发现很多通过使用这个方法而获得优异结果的例子。为什么Batch Norm这么惹人注目呢因为Batch Norm有以下优点。可以使学习快速进行可以增大学习率。不那么依赖初始值对于初始值不用那么神经质。抑制过拟合降低Dropout等的必要性。考虑到深度学习要花费很多时间第一个优点令人非常开心。另外后两点也可以帮我们消除深度学习的学习中的很多烦恼。如前所述Batch Norm的思路是调整各层的激活值分布使其拥有适当的广度。为此要向神经网络中插入对数据分布进行正规化的层即BatchNormalization 层下文简称Batch Norm层如图6-16 所示。Batch Norm顾名思义以进行学习时的mini-batch 为单位按minibatch进行正规化。具体而言就是进行使数据分布的均值为0、方差为1 的正规化。用数学式表示的话如下所示。μ B ← 1 m ∑ i 1 m x i \mu_B \leftarrow \frac{1}{m} \sum_{i1}^m x_iμB​←m1​i1∑m​xi​σ B 2 ← 1 m ∑ i 1 m ( x i − μ B ) 2 \sigma_B^2 \leftarrow \frac{1}{m} \sum_{i1}^m (x_i - \mu_B)^2σB2​←m1​i1∑m​(xi​−μB​)2x ^ i ← x i − μ B σ B 2 ϵ \hat{x}_i \leftarrow \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 \epsilon}}x^i​←σB2​ϵ​xi​−μB​​这里对mini-batch 的m个输入数据的集合B x 1 , x 2 , . . . , x m B {x_1, x_2, . . . , x_m}Bx1​,x2​,...,xm​求均值μB 和方差$\sigma_B^2 \leftarrow \frac{1}{m} $。然后对输入数据进行均值为0、方差为1合适的分布的正规化。式6.7中的ε 是一个微小值比如10e-7等它是为了防止出现除以0 的情况。式6.7所做的是将mini-batch 的输入数据x 1 , x 2 , . . . , x m {x_1, x_2, . . . , x_m}x1​,x2​,...,xm​变换为均值为0、方差为1 的数据非常简单。通过将这个处理插入到激活函数的前面或者后面A可以减小数据分布的偏向。接着Batch Norm层会对正规化后的数据进行缩放和平移的变换用数学式可以如下表示。y i ← γ x ^ i β y_i \leftarrow \gamma \hat{x}_i \betayi​←γx^i​β这里γ 和β 是参数。一开始γ 1β 0然后再通过学习调整到合适的值。上面就是Batch Norm的算法。这个算法是神经网络上的正向传播。如果使用第5 章介绍的计算图Batch Norm可以表示为图6-17。Batch Norm的反向传播的推导有些复杂这里我们不进行介绍。不过如果使用图6-17的计算图来思考的话Batch Norm的反向传播或许也能比较轻松地推导出来。Frederik Kratzert 的博客“Understanding the backwardpass through Batch Normalization Layer”[13] 里有详细说明感兴趣的读者可以参考一下。Batch Normalization的评估现在我们使用Batch Norm 层进行实验。首先使用MNIST数据集观察使用Batch Norm层和不使用Batch Norm层时学习的过程会如何变化源代码在ch06/batch_norm_test.py中结果如图6-18 所示。从图6-18 的结果可知使用Batch Norm后学习进行得更快了。接着给予不同的初始值尺度观察学习的过程如何变化。图6-19 是权重初始值的标准差为各种不同的值时的学习过程图。我们发现几乎所有的情况下都是使用Batch Norm时学习进行得更快。同时也可以发现实际上在不使用Batch Norm的情况下如果不赋予一个尺度好的初始值学习将完全无法进行。综上通过使用Batch Norm可以推动学习的进行。并且对权重初始值变得健壮“对初始值健壮”表示不那么依赖初始值。Batch Norm具备了如此优良的性质一定能应用在更多场合中。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询