- 问题: 即使使用He initialization和ELU, 也不能保证在训练过程中, 出现梯度消失/爆炸
- 原因: 在训练过程中, 随着上层的参数发生改变, 每层输入的分布也会随之改变 (内部协变量偏移问题)
- 解决方法: 在训练过程中, 对每层输入激活函数前加入一个运算, 用来对输入进行标准化(均值(shifting), 方差(scaling))
- 因此, 每层会多两个参数, 这两个参数通过训练时的小批量样本进行计算
- 预测: 在测试过程中, 使用全部的训练样本计算出经验均值和方差, 然后对测试数据归一化
- 因此, BN层一共有四个参数, 训练过程的(scale, offset), 测试过程的(mean, std)
- 非常有效的解决梯度消失问题, 对初始化方法不敏感, 明显的提高训练时间
- BN也有正则化效果, 使得不用依赖其他的正则化方法(Dropout)
- 不足: 训练和测试时的计算量增大, 因此对于预测时间有要求的时候需要考虑
- 训练时要计算小批量训练样本的offset和scale
- 测试时要计算经验均值和方差, 并对测试数据标准化
- 其他
- 简单点说: BN就是对每层的输入进行中心化和标准化
- BN会加大训练时的计算量, 但是收敛过程会更快(迭代的次数更少)
- BN相当于在两层网络的中间加入一个标准化处理层, 用来解决输入与输出方差的差异
- ReLU和None activity function不需要scale(下层权重会受影响)
BN 小结
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 声明:作者翻译论文仅为学习,如有侵权请...
- 文章作者:Tyan博客:noahsnail.com[http://noahsnail.com] | CSDN[...
- cite from: http://blog.csdn.net/myarrow/article/details/5...
- Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性。目前几乎已经成...
- 世界顶级创新设计事务所IDEO的联合创始人Tom Kelley,最近带着新书《Creative Confidenc...