Press "Enter" to skip to content

Batch Normalization小简介(3) — 论文笔记(下)

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

实验

 

从MNIST资料集开始

 

这是近代卷积网路的开端,LeNet就是从MNIST资料集辨识开始的[1]。LeNet这个经典模型是一定要再写一篇文章介绍的,这样可以複习并试着把CNN的核心基础概念阐述更清楚。不过,等我把FCN和Unet系列搞定之后再说吧。

 

作者群用最简单的神经网路 — 三层全连接层隐藏层,每层约100个启动函数 — 输入28×28的二项性影像(binary image)。MNIST本来就是这样的维度。每一层计算y = g(Wu+b),g为sigmoid的非线性函数,而W的初始化则用高斯随机分布。最后一层隐藏层后接一个全连接层,只用10个启动函数(对应10个分类)以及cross-entropy的损失函数。训练这个网路总计约5万个steps,平均一个mini-batch约60例。然后按照 前面
说的方法将神经网路BN化。这个实验关注的重点在于比较有无BN化之间,神经网路的表现;而非和现今能做到最好表现的神经网路比较,毕竟在架构上是完全不同的。来看一下结果。

图1. MNIST实验。(a)为準确值和steps的关係图,两条线如图例所呈现,分别为有无BN化的神经网路。有BN化的网路很快就达到水準。(b,c)输入分布的变化,随sigmoid函数及steps数改变。三条线对应的是(15,50,85)百分位。BN让分布变化较平稳。

只看图也可以得到结论。不过建议看看图片旁的叙述,会更清楚。

 

挑战ImageNet资料集

 

接下来要使用的对象複杂得多,是Inception的改良型[2]。这个神经网路也很经典,之后有时间也会写一篇探讨。读个batch normalization结果多挖了好几个坑,糟糕糟糕…。

 

这个神经网路模型有大量的卷积和池化,最后的损失函数使用softmax来辨认超过1000种类的图片;启动函数则使用非线性的ReLu。主要的改良在于把单一层的5×5卷积核换成连续两层的3×3,过滤器也增加到128个(变成128个channel)。全神经网路含有13.6×10⁶个参数,且只有最后一层softmax是全连接层。训练过程使用SGD且不用momentum,mini-batch定为32。评估方式主要看验证的正确率。

 

作者群使用数个方式修改这个神经网路架构,并和BN结合。BN化主要的目标是卷积网路,如 前一篇
所讨论的。

 

加速BN网路

 

单纯的加入BN并没办法得到最大的好处,因此作者群又做了一些调整:

 

1. 增加学习速率
。根据之前的证明,加大学习速率在BN中带来的影响较小。

 

2. 移除dropout
。因为BN可以取代dropout的功能,于是把它完全移除以增加效率。

 

3. 减少L2 regularization
。在BN化的神经网路架构下L2 regulariztion减少功能至原本的1/5,加上BN本身就有调节避免overfitting的问题,于是减少一部分的regularization。Regularization本身是对权重调整的一种惩罚(负向)机制,也就是为了让权重调整的不那幺快,添加一些参数干扰神经网路学习,以减少过度配适。L2型态的regulariztion通常是用「平方」的概念添加,以和L1型态用「绝对值」的方式做区别。

 

3. 加速学习效率调降
。原本的神经网路是以指数的方式调降学习速率,作者群把它再调快6倍。

 

4. 移除local response normalization(LRN)
。这个是从AlexNet开始被引入的概念,主要是为了增加学习效率(见 AlexNet
)。加了BN之后发现LRN不再有用,于是移除。

 

5. 更彻底的将训练资料洗牌
。主要是为了避免同样几笔资料重複进到相同的mini-batch。这帮助提升了1%的验证準确度。

 

6. 减少影像扭转
。BN化的神经网路快又能浏览同一训练资料较多次,因此让它专注在「真实」的图片,减少使用资料增量的作法。

 

单一网路分类能力比较

 

以下神经网路的比较皆使用ILSVRC 2012的训练资料集,并以验证资料做测试。

 

 

    1. Inception:完全不使用BN。初始学习速率设定为0.0015。

 

    1. BN-Baseline:加入BN。

 

    1. BN-x5:上面提到的 加速BN网路

 

    1. 版。初始学习速率定为原本的5倍,0.0075。

 

    1. BN-x30:和3.一样,但初始学习速率调快30倍(0.045)。

 

    1. BN-x5-Sigmoid:和3.一样,但启动函数由ReLu改成sigmoid。作者群也有试着把原本的Inception换成sigmoid来训练,但正确率和随机猜测差不多低。

 

图2. 验证正确率和steps的关係图。

Inception在31×10⁶步骤后达到最大正确率72.2%。

表1. 各神经网路要达到Inception的最大正确率72.2%需要花的steps,以及本身能达到的最大正确率。

BN化的神经网路,在不调整学习速率的情况下,要达到Inception的最大正确率就只花不到原本一半的steps。学习速率调快五倍之后,steps数再减将近4/5,这个数字实在很销魂。但有趣的是学习速率调快到30倍之后,需要的steps反而上升了。不过相对的,它可以达到更高的正确率 — 它只花6×10⁶就达到74.8%的正确率 — 比Inception快5倍。

 

即使换成sigmoid这种有饱和区间的启动函数,BN还是可以有效消除内在变项移动而加快学习速率。BN-x5-Sigmoid达到69.8%的正确率,而Inception若用sigmoid训练,其正确率从未达到超过1/1000。

 

组合神经网路分类能力比较

 

在文章投稿当下(2015年),针对ILSVRC资料集表现最好的神经网路是Deep Image ensemble of traditional models[3]和何铠明的ensemble model[4]。后者的top-5错误率仅4.94%。但作者群表示,BN的神经网路训练可以让验证集错误率达到4.9%,测试集错误率仅4.82%!这不仅是把最佳纪录往前推进,也超越了人类肉眼辨识的準确度。

 

作者群用了六个神经网路堆叠组合。每一个神经网路都以BN-x30当基底,然后做一些调整:例如在卷积网路增加初始权重设定、微增加dropout(5%/10%,原本的inception是40%)、以及在最后隐藏层针对每个启动函数BN化,但不採用卷积网路。每一个神经网路约在6×10⁶steps达到最大正确率。此组合神经网路的预测结果是根据个子网路的预测结果取平均,其他细节则和[2]中的设定大致雷同。

表2. BN Inception和各家组合神经网路一较高下。作者要再强调一次,在测试组的错误率只有4.82%

结论

 

说了这幺多,这篇论文终于来到尾声。

 

Batch Normalization的核心目标是降低internal covariate shift,这是一个严重影响训练效率的关键。作法是把输入标準化,使启动函数也标準化,以确保神经网路在训练时不被输入资料的分布过度干扰。为了配合随机梯度下降的运作和保持运算的合理性,运用mini-batch的概念让资料之间保持一定的关联性。

 

BN只在每个启动函数前增加两个参数,不至于影响神经网路本身的特色。它可以增加学习速率,而且又避免overfitting,甚至可以取代dropout和regularization。在实验阶段,也成功证明BN化的神经网路无论在单一或是组合神经网路都有很出色的表现,甚至赢过目前的领先者。

 

其实在这篇文章之前也有人提出类似的概念[5],但是标準化的对象不同。在[5],标準化的对象放到输出,也就是启动函数之后。这导致了发散的启动函数结果,相对应BN则是没有输入发散的问题。此外BN有使用可学习参数来处理映射转换,以及mini-batch,还有针对卷积网路,和各层BN化的概念。

 

文章中提到接下来作者群要挑战RNN(recurrent neural network),这是一个梯度更容易消失或爆炸的神经网路架构。此外,也可以针对基础理论和领域适应的部分继续努力。文章末尾以谦虚而充满期待的语气期待BN未来的发展。

 

以上就是这篇论文的介绍。欢迎指教。

 

Reference

 

[1] LeCun, Y., Bottou, L., Bengio, Y., and Haffner, P. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):2278–2324, November 1998a.

 

[2] Szegedy, Christian, Liu, Wei, Jia, Yangqing, Sermanet, Pierre, Reed, Scott, Anguelov, Dragomir, Erhan, Dumitru, Vanhoucke, Vincent, and Rabinovich, Andrew. Going deeper with convolutions. CoRR, abs/1409.4842, 2014.

 

[3] Wu, Ren, Yan, Shengen, Shan, Yi, Dang, Qingqing, and Sun, Gang. Deep image: Scaling up image recognition, 2015.

 

[4] He, K., Zhang, X., Ren, S., and Sun, J. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification. ArXiv e-prints, February 2015.

 

[5] Gulcehre, Caglar and Bengio, Yoshua. Knowledge matters: Importance of prior information for optimization. CoRR, abs/1301.4083, 2013.

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注