Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift论文笔记

论文地址:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

前言

虽然GoogLeNet在ILSVRC2014上斩获了各种大奖,但是GooGle的各位大牛依然没有闲着,他们马上又抛出了一个新的问题:Internal Covariate Shift,也就是本文要研究的问题,他们提出了一个新的层:Batch Normalization(BN),不仅能够很好的解决这个问题,而且在增快训练速度的基础上能够有效的提高模型的性能。

Internal Convariate Shift

以下是载自于李理:卷积神经网络之Batch Normalization的原理及实现中的一段话:

如果训练时和测试时输入的分布变化,会给模型带来问题。当然在日常的应用中,这个问题一般不会太明显,因为一般情况数据的分布差别不会太大,但是在很深的网络里这个问题会带来问题,使得训练收敛速度变慢。因为前面的层的结果会传递到后面的层,而且层次越多,前面的细微变化就会带来后面的巨大变化。如果某一层的输入分布总是变化的话,那么它就会无所适从,很难调整好参数。我们一般会对输入数据进行”白化“除理,使得它的均值是0,方差是1。但是之后的层就很难保证了,因为随着前面层参数的调整,后面的层的输入是很难保证的。比较坏的情况是,比如最后一层,经过一个minibatch,把参数调整好的比之前好一些了,但是它之前的所有层的参数也都变了,从而导致下一轮训练的时候输入的范围都发生变化了,那么它肯定就很难正确的分类了。这就是所谓的Internal Covariate Shift。

简言之就是:先前层参数的调整会导致之后每一层输入值的分布发生变化,所以在深度神经网络模型的训练中, 通常需要细致选取初始参数并采取较小的学习率。

数据预处理

常用的数据预处理手段,如归一化(normalization)、PCA/ZCA白化(whitening),能够对数据进行去均值、标准方差、去相关等操作,使得网络训练的收敛速度加快。如果在模型的每一层的输入都使用类似的预处理操作,就可以实现输入的固定分布,从而能够有效的消除Internal Convariate Shift的影响。如下图所示:
这里写图片描述
原始数据分布如a所示,如果要对它直接进行拟合会比较难(b的红色虚线到紫色实线),如果进过去均值(c),和去相关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值