归⼀化⽹络的激活函数(Normalizingactivationsinanetwork)1.1 归⼀化⽹络的激活函数(Normalizing activations in a network)
正则化 归一化在深度学习兴起后,最重要的⼀个思想是它的⼀种算法,叫做Batch 归⼀化,Batch归⼀化会使你的参数搜索问题变得很容易,使神经⽹络对超参数的选择更加稳定,超参数的范围会更加庞⼤,⼯作效果也很好,也会是你的训练更加容易,甚⾄是深层⽹络。实践中,经常做的是归⼀化z(i),i从 1 到m,在神经⽹络中,已知⼀些中间值,假设你有⼀些隐藏单元值,从z(1)到z(m),这些来源于隐藏层,公式计算⽅差,会取每个z(i)值,使其规范化:z(i)减去均值再除以标准偏差,标准化结果如下:
我们不想让隐藏单元总是含有平均值 0 和⽅差 1的z分量,所以我们需要计算,我们称之为,=,通过对γ和β合理设定,规范化过程,可以使我们构造含其它平均值和⽅差的隐藏单元值。
1.2 将 Batch Norm 拟合进神经⽹络(Fitting Batch Norm into a neural network)
假设你有⼀个这样的神经⽹络,我们可以认为每个单元负责计算两件事,第⼀,它先计算z,然后应⽤其到激活函数中再计算a。如果你没有应⽤Batch 归⼀化,你会把输⼊X拟合到第⼀隐藏层,然后⾸先计算z[1],这是由w[1]和b[1]两个参数控制的,接着,通常⽽⾔,你会把z[1]拟合到激活函数以计算z[1];但 Batch 归⼀化的做法是将z[1]值进⾏ Batch 归⼀化,简称 BN,此过程将由β[1]和γ[1]两参数控制,这⼀操作会给你⼀个新的规范化的z[1]值(),然后将其输⼊激活函数中得到a[1],即a[1]=g[1](),接下来,你需要应⽤a[2]值来计算z[2],与你在第⼀层所做的类似,你会将z[2]进⾏Batch 归⼀化,这是由下⼀层的 Batch 归⼀化参数所管制的,即β[2]和γ[2],现在你得到,再通过激活函数计算出a[2]等等,以此类推。
Batch 归⼀化发⽣在z的计算和a之间,Batch 归⼀化学习参数β[1],β[2]等等和⽤于 Momentum、Adam、RMSprop 算法中的β不同,在深度学习框架中(Torch、TensorFlow等),Batch 归⼀化的过程,经常是类似⼀⾏代码的东西。Batch 归⼀化有效的原因有,它可以使权重⽐你的⽹络更滞后或更深层;何归⼀化输⼊特征值x,使其均值为 0,⽅差 1,便于快速学习;Batch 归⼀化减少了输⼊值改变的问题,它的确使这些值变得更稳定,神经⽹络的之后层就会有更坚实的基础。即使使输⼊分布改变了⼀些,它会改变得更少,它做的是当前层保持学习,减弱了前层参数的作⽤与后层参数的作⽤之间的联系,它使得⽹络每层都可以⾃⼰学习,稍稍独⽴于其它层,这有助于加速整个⽹络的学习。Batch 归⼀化还有⼀个作⽤,它有轻微的正则化效果。Batch 归⼀化将我们的数据以 mini-batch 的形式逐⼀处理,
但在测试时,你可能需要对每个样本逐⼀处理,在训练时,u和σ2是在整个mini-batch 上计算出来的,但在测试时,你可能需要逐⼀处理样本,但在实际操作中,我们通常运⽤指数加权平均来追踪在训练过程中你看到的u和σ2的值,如果你使⽤的是某种深度学习框架,通常会有默认的估算u和
σ2的⽅式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论