0%

关于激活函数前使用Batch Normalization的思考

没有BN时的网络流程

在没有Batch Normalization时,$z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}$,$a^{[l]}=g^{[l]}(z^{[l]})$

注:$[l]$表示第$l$层网络的数据,$g^{[l]}(z)$为第$l$层的激活函数

注:Batch Normalization的目的是使参数搜索问题变得更容易,使神经网络对于超参数的选择更稳定

在激活函数前Batch Normalization

① $z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}$

② $z_{BN}^{[l]}=\frac{z^{[l]}-u^{[l]}}{\sigma^{[l]}}=\frac{w^{[l]}a^{[l-1]}+b^{[l]}-u^{[l]}}{\sigma^{[l]}}$ 则①可变为 $z^{[l]}=w^{[l]}a^{[l-1]}$,参数$b^{[l]}$失去了意义

③ 由新加入的参数$\beta^{[l]}$和$\gamma^{[l]}$重新缩放 $\rightarrow$ $\overset{~}{z}^{[l]}=\beta^{[l]}z_{BN}^{[l]}+\gamma^{[l]}$

④ $\overset{~}{z}^{[l]}=\beta^{[l]}z_{BN}^{[l]}+\gamma^{[l]}=\beta^{[l]}\frac{z^{[l]}-u^{[l]}}{\sigma^{[l]}}+\gamma^{[l]}=\frac{\beta^{[l]}z^{[l]}}{\sigma^{[l]}}-\frac{\beta^{[l]}u^{[l]}}{\sigma^{[l]}}+\gamma^{[l]}=\frac{\beta^{[l]}w^{[l]}a^{[l-1]}}{\sigma^{[l]}}-\frac{\beta^{[l]}u^{[l]}}{\sigma^{[l]}}+\gamma^{[l]}$

我的思考

  1. ​ $z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}$ 和 $z^{[l]}=\frac{\beta^{[l]}w^{[l]}a^{[l-1]}}{\sigma^{[l]}}-\frac{\beta^{[l]}u^{[l]}}{\sigma^{[l]}}+\gamma^{[l]}$ 有多大的区别,后者是否同样是一个与前者一样的线性函数,如果是线性函数的话,这么做的意义何在?
  2. ​ 可能的解释:$\sigma^{[l]}$ 和 $u^{[l]}$ 都是 $z^{[l]}$ 或者说 $a^{[l-1]}$ 的函数,并不能与①等同看成一个线性函数。
  3. ​ 想法:$z^{[l]}=\frac{\beta^{[l]}w^{[l]}a^{[l-1]}}{\sigma^{[l]}}-\frac{\beta^{[l]}u^{[l]}}{\sigma^{[l]}}+\gamma^{[l]}$ 是否是一个参数更多的神经元,是否可以用更多的参数来构建次数更高的多项式然后来进行模拟?