探索无限可能:Rule34安卓安装包的奇妙世界

核心内容摘要

《无知亦是成长之阶:拥抱未知,解锁潜能》
XXXXL19D18-19D18:性能的巅峰,体验的革新

镜头下的曼妙:探索身体的语言与艺术之美

Batch Normalization在上一节我们观察了各层的激活值分布并从中了解到如果设定了合适的权重初始值则各层的激活值分布会有适当的广度从而可以顺利地进行学习。

那么为了使各层拥有适当的广度“强制性”地调整激活值的分布会怎样呢实际上Batch Normalization[11]方法就是基于这个想法而产生的。

Batch Normalization 的算法Batch Normalization下文简称Batch Norm是2015 年提出的方法。

Batch Norm虽然是一个问世不久的新方法但已经被很多研究人员和技术人员广泛使用。

实际上看一下机器学习竞赛的结果就会发现很多通过使用这个方法而获得优异结果的例子。

为什么Batch Norm这么惹人注目呢因为Batch Norm有以下优点。

可以使学习快速进行可以增大学习率。

不那么依赖初始值对于初始值不用那么神经质。

抑制过拟合降低Dropout等的必要性。

考虑到深度学习要花费很多时间第一个优点令人非常开心。

另外后两点也可以帮我们消除深度学习的学习中的很多烦恼。

如前所述Batch Norm的思路是调整各层的激活值分布使其拥有适当的广度。

为此要向神经网络中插入对数据分布进行正规化的层即BatchNormalization 层下文简称Batch Norm层如图

所示。

Batch Norm顾名思义以进行学习时的mini-batch 为单位按minibatch进行正规化。

具体而言就是进行使数据分布的均值为

方差为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} $。

然后对输入数据进行均值为

方差为1合适的分布的正规化。

7中的ε 是一个微小值比如10e-7等它是为了防止出现除以0 的情况。

7所做的是将mini-batch 的输入数据x 1 , x 2 , . . . , x m {x_1, x_2, . . . , x_m}x1​,x2​,...,xm​变换为均值为

方差为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可以表示为图

Batch Norm的反向传播的推导有些复杂这里我们不进行介绍。

不过如果使用图

的计算图来思考的话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中结果如图

所示。

从图

的结果可知使用Batch Norm后学习进行得更快了。

接着给予不同的初始值尺度观察学习的过程如何变化。

是权重初始值的标准差为各种不同的值时的学习过程图。

我们发现几乎所有的情况下都是使用Batch Norm时学习进行得更快。

同时也可以发现实际上在不使用Batch Norm的情况下如果不赋予一个尺度好的初始值学习将完全无法进行。

综上通过使用Batch Norm可以推动学习的进行。

并且对权重初始值变得健壮“对初始值健壮”表示不那么依赖初始值。

Batch Norm具备了如此优良的性质一定能应用在更多场合中。

夜兰·cc直播nba-夜兰·cc直播应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123