BatchNorm论文阅读笔记

前言

    BatchNorm作为深度学习训练的一个大杀器,重要性还是不言而喻的。最近学习了一下BatchNorm的论文,简单记录一下以便复习。论文中的好多公式推导都没看明白,只能结合吴恩达深度学习的讲解,写一些感性上的认识吧。下面这篇博客讲的很好,我就在它的基础上补充一下好了。
  深入理解Batch Normalization批标准化
  BatchNorm论文下载传送门

BatchNorm论文阅读笔记

Abstract

    在训练的时候,由于前面层的权重更新,后面每一层的输入的分布会发生变化,这导致训练深度神经网络非常困难。需要设置较小的学习率和一定的权重初始化方法来应对这个问题。我们将这种现象称为internal covariate shift。我们提出了一种归一化方法,将这种方法整合到网络结构中,并在训练时每个mini-batch上进行归一化,来解决这个问题。BatchNorm可以使我们在训练时使用更大的学习率,并且网络初始化方法不需要像以前那样很careful,并具有一定的正则化效应。

为什么用BatchNorm

    前面网络的参数发生微小的变化,都会随着网络深度的增加而不断放大,导致对后面层的训练产生很大影响。
  网络的中间层的输入发生变化,导致这些发生变化的层在训练的时候需要不断地适应新的数据分布。

具体做法

    在训练时,对需要进行BatchNorm的层做如下操作:

在这里插入图片描述
  反向传播计算偏导数:
  在这里插入图片描述
  在测试时,由于不再有mini-batch的概念,无法计算均值和方差,因此用训练时所有mini-batch的均值和方差求期望,将其作为测试时的均值和方差。训练(train)过程和测试(inference)过程合并,算法总流程如下:
  在这里插入图片描述

一些细节

    BatchNorm在非线性激活函数之前进行。
  由于归一化时特征会减去均值,因此可去掉偏置单元b。

CNN中的BatchNorm

    feature map中同一通道的神经元归一化方式相同。
  Mini-batch有m张图像,feature map某一通道size是p*q。有效的mini-batch尺寸m’ = m * p * q(应该就是Alg. 2中的m换成m’)。
  CNN的BatchNorm应该就是同一通道的所有神经元看成是同一个特征进行归一化,这也体现了权值共享的概念。

直观理解

    对输入进行白化处理(归一成0均值1方差)可以加速模型收敛(减小特征取值之间的差距,等高线由椭圆变成圆形)。
  输入数据可以发生变化,但是输入数据的均值和方差受限,变化不会很大,网络每个batch看到的数据变化不会很大,因此能够更好地学习。

优点

    传统神经网络,高学习率导致梯度消失/爆炸,以及容易陷入局部最优。BatchNorm可以帮助解决这些问题。
  大学习率会导致网络参数变得很大,BatchNorm会使得网络对参数的尺度变得更有弹性,能够适应不同尺度的参数。
  对初始化的方式不再那么敏感。

相关实验

    作者采用3层全连接的网络结构,使用sigmoid激活,在MNIST数据集上进行了测试,初步验证了BN的性能。结果如下图所示:
在这里插入图片描述
  (a)图可以看出,在MNIST数据集上,使用BN的网络能更快收敛且达到更高的准确率。
  (b,c)图显示的是,每个网络(有BN和没有BN)的最后一层隐藏层,数据的分布是如何变化的(纵坐标到底是什么,是这一层的输出还是什么别的东西?论文里也没有说清楚)。没有BN的网络数据的均值和方差分布一直在发生变化,使得后续层的训练变得困难;使用了BN的网络数据分布变化更加稳定。
  之后,文章在ImageNet分类数据集上进行了测试,比较了5个不同的网络的性能,结果如下:
在这里插入图片描述
  网络结构用的都是Inception,不同的是有没有BN、学习率大小、以及激活函数的类型。图例中,Inception(没有BN)和BN-Baseline(在Inception的结构中加入了BN)的学习率都是0.0015;BN-x5使用5倍学习率,以及一些作者设计的调整(文中有详细描述,这里就不说了);BN-x30使用30倍学习率,以及作者提出的调整;BN-x5-Sigmoid使用5倍学习率和sigmoid激活。
  从结果上可以看出,BN可以大大加速网络的训练,使用很少的迭代次数就可以达到很高的准确率,并且使得sigmoid激活的网络也能够收敛(没有BN的话sigmoid网络准确率不会超过1/1000)。此外,一个有趣的现象是,使用大的学习率可以提升网络能够达到的最大准确率(文章也没有解释为什么有这种现象)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值