Batch Norm 拟合进神经网络(Fitting Batch Norm into a neural network)
你已经看到那些等式,它可以在单一隐藏层进行Batch归一化,接下来,让我们看看它是怎样在深度网络训练中拟合的吧。
假设你有一个这样的神经网络,我之前说过,你可以认为每个单元负责计算两件事。
第一,它先计算z,然后应用其到激活函数中再计算a,所以我可以认为,每个圆圈代表着两步的计算过程。
同样的,对于下一层而言,那就是z_1([2])和a_1([2])等。
所以如果你没有应用Batch归一化,你会把输入X拟合到第一隐藏层,然后首先计算z([1]),这是由w([1])和b^([1])两个参数控制的。
接着,通常而言,你会把z([1])拟合到激活函数以计算a([1])。
但Batch归一化的做法是将z([1])值进行Batch归一化,简称BN,此过程将由β([1])和γ([1])两参数控制,这一操作会给你一个新的规范化的z([1])值(̃z([1])),然后将其输入激活函数中得到a([1]),即a([1])=g([1]) (̃z^([l]))。
现在,你已在第一层进行了计算,此时Batch归一化发生在z的计算和a之间,接下来,你需要应用a([1])值来计算z([2]),此过程是由w([2])和b([2])控制的。
与你在第一层所做的类似,你会将z([2])进行Batch归一化,现在我们简称BN,这是由下一层的Batch归一化参数所管制的,即β([2])和γ([2]),现在你得到̃z([2]),再通过激活函数计算出a^([2])等等。
所以需要强调的是Batch归一化是发生在计算z和a之间的。
直觉就是,与其应用没有归一化的z值,不如用归一过的̃z,这是第一层(̃z^([1]))。