DeepFloodbeta

Day5 Batch Normalization

Batch Normalization没啥好说的
把同一批次的样本同特征normalized
normalization后,需要加偏误和系数来调整输出值
(normalization本身是无意义的,甚至会影响样本信息的传递
但是加了系数和偏误,使之可调节后
使得BP可以把有效信息再提取出来
所以有论文说BN和其他归一化方法区别不大
说明其方法本身并无特异性)

BN一个用处是处理梯度消失/爆炸
这两者出现是因为我们求解的是候是对参数求最优
实际上的梯度或者其他隐含信息可能会落到某个局部最优中去
在样本给定的情况下
毕竟样本足够多
分布一致时
它们之间的差异可能是trivial的
不会影响某些隐含信息
因而
有的会反映成梯度消失或者爆炸
(个人理解,暂时还不知道训练过程中还有哪些其他问题)
如果从公式来看
(\frac{\partial L}{\partial z^{(1)}} = \frac{\partial L}{\partial a^{(L)}} \cdot \prod_{k=L}^2 \left[ (W^{(k)})^T \cdot \sigma'(z^{(k-1)}) \right] \cdot \sigma'(z^{(1)}) \quad \text{(3)})
即使不用BN
用某种约束权重和激活函数的其他方式
应该也有相应的处理梯度爆炸的办法?
但是话说回来
不管是BN还是其他方式约束之后
怎么理解这件事呢?
或者说用了层层BN之后,剩下的信息就是有价值的信息呢?
很大程度上这依赖样本有一个稳定的分布
我们相信在随机的情况下
同一批次样本BN不改变一些核心信息
但是如果是一个动态过程
样本分布本身不稳定呢?

我看到的一些论文说BN缓解了内部偏移量
但是有的论文似乎说不存在这回事
我不确定参数数值的变化是否会影响计算速率
直觉上
在喂了一定样本,样本本身比较稳定的情况下
这些数值是否归一其实是无所谓的
当然,这只是对简单问题而言
如果训练任务或者样本一直是一个动态变化的过程
这应该是有用的
I GUESS

  • 好大一堆

  • 本坛最有毅力的一位