2.793

2018影响因子

(CJCR)

  • 中文核心
  • EI
  • 中国科技核心
  • Scopus
  • CSCD
  • 英国科学文摘

留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

深度学习批归一化及其相关算法研究进展

刘建伟 赵会丹 罗雄麟 许鋆

刘建伟, 赵会丹, 罗雄麟, 许鋆. 深度学习批归一化及其相关算法研究进展. 自动化学报, 2020, 46(6): 1090−1120. doi: 10.16383/j.aas.c180564
引用本文: 刘建伟, 赵会丹, 罗雄麟, 许鋆. 深度学习批归一化及其相关算法研究进展. 自动化学报, 2020, 46(6): 1090−1120. doi: 10.16383/j.aas.c180564
Liu Jian-Wei, Zhao Hui-Dan, Luo Xiong-Lin, Xu Jun. Research progress on batch normalization of deep learning and its related algorithms. Acta Automatica Sinica, 2020, 46(6): 1090−1120. doi: 10.16383/j.aas.c180564
Citation: Liu Jian-Wei, Zhao Hui-Dan, Luo Xiong-Lin, Xu Jun. Research progress on batch normalization of deep learning and its related algorithms. Acta Automatica Sinica, 2020, 46(6): 1090−1120. doi: 10.16383/j.aas.c180564

深度学习批归一化及其相关算法研究进展


DOI: 10.16383/j.aas.c180564
详细信息
    作者简介:

    中国石油大学(北京)自动化系副研究员. 主要研究方向为模式识别与智能系统, 先进控制. 本文通信作者. E-mail: liujw@cup.edu.cn

    中国石油大学(北京)自动化系硕士研究生. 2016年获得中国石油大学(北京)自动化系学士学位. 主要研究方向为模式识别与智能系统. E-mail: zhaohuidan93@126.com

    中国石油大学(北京)自动化系教授. 主要研究方向为智能控制, 复杂系统分析, 预测与控制. E-mail: luoxl@cup.edu.cn

    哈尔滨工业大学(深圳)机电工程与自动化学院副教授. 主要研究方向为复杂非线性系统分析, 预测与控制. E-mail: xujunqgy@hit.edu.cn

  • 基金项目:  国家重点研究发展计划项目基金(2016YFC0303703),中国石油大学(北京)年度前瞻导向及培育项目基金(2462018QZDX02)资助

Research Progress on Batch Normalization of Deep Learning and Its Related Algorithms

More Information
  • Fund Project:  Supported by 2016 National Key Research and Development Program, 2016YFC0303703-03 and 2018 China University of Petroleum (Beijing) Prospective Orientation and Cultivation Project, 2462018QZDX02
  • 摘要: 深度学习已经广泛应用到各个领域, 如计算机视觉和自然语言处理等, 并都取得了明显优于早期机器学习算法的效果. 在信息技术飞速发展的今天, 训练数据逐渐趋于大数据集, 深度神经网络不断趋于大型化, 导致训练越来越困难, 速度和精度都有待提升. 2013年, Ioffe等指出训练深度神经网络过程中存在一个严重问题: 中间协变量迁移(Internal covariate shift), 使网络训练过程对参数初值敏感、收敛速度变慢, 并提出了批归一化(Batch normalization, BN)方法, 以减少中间协变量迁移问题, 加快神经网络训练过程收敛速度. 目前很多网络都将BN作为一种加速网络训练的重要手段, 鉴于BN的应用价值, 本文系统综述了BN及其相关算法的研究进展. 首先对BN的原理进行了详细分析. BN虽然简单实用, 但也存在一些问题, 如依赖于小批量数据集的大小、训练和推理过程对数据处理方式不同等, 于是很多学者相继提出了BN的各种相关结构与算法, 本文对这些结构和算法的原理、优势和可以解决的主要问题进行了分析与归纳. 然后对BN在各个神经网络领域的应用方法进行了概括总结, 并且对其他常用于提升神经网络训练性能的手段进行了归纳. 最后进行了总结, 并对BN的未来研究方向进行了展望.
  • 图  1  批归一化算法结构图

    Fig.  1  Structural diagram of batch normalization

    图  2  隐层中的批归一化算法结构图

    Fig.  2  Structural diagram of batch normalization in hidden layers

    图  3  批归一化相关结构与算法

    Fig.  3  Correlation structure and algorithms of batch normalization

    图  4  归一化传播算法结构图

    Fig.  4  Structure diagram of normalization propagation

    图  5  批量重归一化算法结构图

    Fig.  5  Structure diagram of batch renormalization

    图  6  逐步归纳批量归一化算法结构图

    Fig.  6  Structure diagram of diminishing batch normalization

    图  7  批归一化和权重归一化对比图

    Fig.  7  Comparison graph of batch normalization and layer normalization

    图  8  层归一化算法结构图

    Fig.  8  Structure diagram of layer normalization

    图  9  权重归一化算法结构图

    Fig.  9  Structure diagram of weight normalization

    图  10  自归一化神经网络结构图

    Fig.  10  Structure diagram of self-normalizing neural networks

    图  11  批归一化应用领域

    Fig.  11  Applications of batch normalization

    图  12  在CNN中应用BN

    Fig.  12  Applications of BN in CNN

    图  13  RNN结构图

    Fig.  13  Structure diagram of RNN

    图  14  LSTM结构图

    Fig.  14  Structure diagram of LSTM

    图  15  AdaBN域自适应过程

    Fig.  15  Domain adaptive process of AdaBN

    表  1  各种BN-Inception模型分类效果对比

    Table  1  Comparison of classification effects of various BN-Inception models

    模型正确率达到 72.2 % 所需迭代次数最高正确率 (%)
    Inception$ 31.0 \times 10^6 $72.2
    BN-Inception$ 13.3 \times 10^6$72.7
    BN-x5$2.1 \times 10^6$73.0
    BN-x30$2.7 \times 10^6$74.8
    BN-x5-sigmoid69.8
    下载: 导出CSV

    表  2  NIN + NP与相关模型分类效果对比 (%)

    Table  2  Comparison classification effects of NIN + NP and related models (%)

    模型CIFAR-10CIFAR-100SVHN
    NIN10.4735.682.35
    NIN + NP9.1132.191.88
    NIN + BN9.4135.322.25
    Maxout11.6838.572.47
    下载: 导出CSV

    表  3  使用不同$ \alpha ^{(j)} $值的模型分类效果对比

    Table  3  Comparison of classification effects using different $ \alpha ^{(j)}$ in model

    $ \alpha ^{(j)} $MNISTNICIFAR-10
    训练周期误差 (%)训练周期误差 (%)训练周期误差 (%)
    1522.70587.694517.31
    0.75691.91677.374917.03
    0.5691.84807.464417.11
    0.25461.91387.324317.00
    0.1481.90667.364817.10
    0.01511.94747.474316.82
    0.001481.95987.434616.28
    $ 1/j $592.10787.453717.26
    $ 1/j^2 $532.00747.594417.23
    019924.275326.09279.34
    下载: 导出CSV

    表  4  DQN + WN与DQN模型实验效果对比

    Table  4  Comparison of experimental results of DQN + WN and DQN

    游戏DQNDQN + WN
    Breakout410403
    Enduro1 2501448
    Seaquest7 1887 357
    Space invaders1 7792 179
    下载: 导出CSV

    表  5  FNN + SNN与相关模型实验效果对比(1)

    Table  5  Comparing experimental results of FNN + SNN and related models (1)

    模型平均秩差
    FNN + SNN−6.7
    SVM−6.4
    Random forest−5.9
    FNN + LN−5.3
    下载: 导出CSV

    表  6  FNN + SNN与相关模型实验效果对比(2) (%)

    Table  6  Comparing experimental results of FNN + SNN and related models (2) (%)

    方法网络层数
    24681632
    FNN + SNN83.784.283.984.583.582.5
    FNN + BN80.077.277.075.073.776.0
    FNN + WN83.782.282.581.978.156.6
    FNN + LN84.384.082.580.978.778.8
    FNN + ResNet82.280.581.281.881.280.4
    下载: 导出CSV

    表  7  CNN + BN与CNN模型分类效果对比

    Table  7  Comparing experimental results of CNN + BN and CNN

    数据集激活函数模型学习率错误率 (%)
    wm50ReLUCNN + BN0.0833.4
    wm50ReLUCNN0.00835.32
    wm50SigmoidCNN + BN0.0835.52
    wm50SigmoidCNN0.00842.80
    wm100ReLUCNN + BN0.0832.90
    wm100ReLUCNN0.00833.10
    wm100SigmoidCNN + BN0.0833.77
    wm100SigmoidCNN0.00838.50
    下载: 导出CSV

    表  8  LSRM + BN模型与相关模型实验效果对比

    Table  8  Comparing experimental results of LSRM + BN and related models

    模型PPL
    小型LSTM78.5
    小型LSTM + BN62.5
    中型LSTM49.1
    中型LSTM + BN41.0
    大型LSTM49.3
    大型LSTM + BN35.0
    下载: 导出CSV

    表  9  MIM模型与相关模型实验效果对比(%)

    Table  9  Comparing experimental results of MIM and related models (%)

    模型CIFAR-10MNIST
    maxout11.680.47
    NIN10.410.45
    RCNN-160[67]8.690.35
    MIM8.520.31
    下载: 导出CSV

    表  10  AdaBN与相关模型实验效果对比(%)

    Table  10  Comparing experimental results of AdaBN and related models (%)

    模型A$ \to $ WD$ \to $ WW $ \to $DA$ \to $ D
    AlexNet[73]61.695.499.063.8
    DDC[74]61.895.098.564.4
    DAN[75]68.568.599.067.0
    Inception BN70.394.310070.5
    GFK[76]66.797.099.470.1
    AdaBN74.295.799.873.1
    下载: 导出CSV

    表  11  批归一化及其相关算法功能对比

    Table  11  An exampletable in one column

    归一化方法收敛速度
    (训练周期)
    计算量优势缺点应用领域
    未加归一化的
    网络
    批归一化 (BN)相比于未加批归一化的网络, 收敛速度加快10倍以上适中减少网络训练过程中的中间协变量迁移问题, 使网络训练过程对参数初始值不再敏感, 可以使用更高的学习率进行训练, 加快网络训练过程收敛速度依赖 mini-batch 数据集的大小, 训练和推理时计算过程不同在CNN、分片线性神经网络等FNN中效果较好, 对RNN促进效果相对较差
    归一化传播 (NormProp)比BN更稳定、收敛速度明显更快少于BN减少中间协变量迁移现象, 不依赖于mini-batch数据集大小, 网络中每一层的输出都服从正态分布, 训练和推理阶段计算过程相同没有正则化效果, 也不能和其他正则化手段如Dropout
    共用
    理论上可以应用到使用任何激活函数、目标函数的网络, 网络可以使用任何梯度传播算法进行训练, 但具体效果还需要进一步
    证实
    批量重归一化 (BR)mini-batch数据集中含有的数据量很少或包含服从非独立同分布的样本时, 比BN更稳定, 收敛更快计算量稍多于BN减少中间协变量迁移现象, 使网络训练对参数初值不再敏感, 可以使用更高的学习率进行训练, mini-batch中数据量很少或服从非独立同分布时, 使用BR的网络性能明显优于使用BN的网络,收敛速度更快, 训练精度更高计算量稍多于BN在mini-batch数据量很少或包含服从非独立同分布的样例时, 应用效果优于BN
    逐步归纳批量归一化 (DBN)比BN更稳定, 收敛速度类似BN计算量多于BN减少中间协变量迁移, 将神经网络的训练和推理过程关联起来, 使得网络在训练时不仅考虑当前使用的mini-batch数据集, 会同时考虑过去网络训练使用过的mini-batch数据集对mini-batch数据集仍有一定的依赖性理论上可以应用BN的网络, 都可以应用DBN, 但是因为没有从根本上克服BN的问题, 在应用上同样会受到一定的限制
    层归一化 (LN)比BN鲁棒性强, 收敛速度更快计算量少于BNLN对每一层内的神经元使用单一样例进行归一化, 在训练和推理阶段计算过程相同, 应用到在线学习任务和RNN中的效果明显优于其他归一化方法, 可减少训练时间, 提升网络性能在CNN等神经网络中的效果不如BN层归一化对于稳定RNN中的隐层状态很有效, 可进一步推广, 但在CNN等前馈神经网络中的效果不如BN
    连接边权值行向量归一化 (WN)比BN收敛速度更快计算量少于BN对mini-batch数据集没有依赖性, 不需要对过去处理过的情况进行记忆, 计算复杂度低. 网络训练和推理时计算过程相同, 不会像BN一样引入过多噪声对网络没有正则化效果可以更好地应用到RNN和一些对噪声敏感的网络中, 如深度强化学习和深度生成式模型, 这些模型中使用BN的效果都不够好
    自归一化神经网络 (SNN)适中使用SeLU构造网络, 输入数据经过SNN的多层映射后, 网络中每一层输出的均值和方差可以收敛到固定点, 具有归一化特性, 网络鲁棒性强需要使用特定的激活函数SeLU才能构成网络, 在网络中使用dropout等手段会破坏网络结构, 使网络失去自归一化特性理论上可以构建任何前馈神经网络和递归神经网络, 但网络需要使用SeLU激活函数, 且不能破坏对数据均值和方差的逐层特征映射
    下载: 导出CSV

    表  12  深度神经网络加速训练方法

    Table  12  Accelerated training method of deep neural network

    名称    作用     代表文献
       Dropout防止网络过拟合, 是最常用的正则化方法   文献 [8191]
       正则化防止网络过拟合   文献 [92106]
       数据增广 (Data augmentation)通过数据变换增加训练样本数量   文献 [107118]
       改进梯度下降算法选用合适的梯度下降算法, 更有利于神经网络训练   文献 [119133]
       激活函数选择选择适当的激活函数, 更有利于网络训练   文献 [134145]
       学习率选择选择适当的学习率可以加速神经网络训练   文献 [146154]
       参数初始化好的参数初始化更易于神经网络训练   文献 [155158]
       预训练对网络进行预训练, 适当加入先验信息, 更易于网络训练   文献 [159162]
       二值化网络 (Binarized neural networks)节省神经网络训练过程所需存储空间和训练时间   文献 [163167]
       随机深度神经网络缓解深度过深的神经网络训练困难的问题   文献 [168171]
       深度神经网络压缩在不影响网络精度的情况下减少神经网络训练所需存储要求   文献 [172178]
    下载: 导出CSV
  • [1] Raina R, Madhavan A, Ng A Y. Large-scale deep unsupervised learning using graphics processors. In: Proceedings of the 26th Annual International Conference on Machine Learning. Montreal, Canada: ACM, 2009. 873−880
    [2] Lecun Y A, Bottou L, Orr G B, Müller K R. Efficient BackProp. Neural Networks: Tricks of the Trade (2nd edition). New York, America: Springer, 1998.
    [3] Wiesler S, Richard A, Schlüter R, Ney H. Mean-normalized stochastic gradient for large-scale deep learning. In: Proceedings of the 2014 IEEE International Conference on Acoustics, Speech and Signal Processing. Florence, Italy: IEEE, 2014. 180−184
    [4] Raiko T, Valpola H, Lecun Y. Deep learning made easier by linear transformations in perceptrons. In: Proceedings of the 15th International Conference on Artificial Intelligence and Statistics. La Palma, Canary Islands: JMLR, 2012. 924−932
    [5] Povey D, Zhang X H, Khudanpur S. Parallel training of deep neural networks with natural gradient and parameter averaging. arXiv preprint arXiv: 1410.7455, 2014.
    [6] Desjardins G, Simonyan K, Pascanu R, Kavukcuoglu K. Natural neural networks. arXiv preprint arXiv: 1507.00210, 2015.
    [7] Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In: Proceedings of the 32nd International Conference on Machine Learning. Lille, France: JMLR.org, 2015. 448−456
    [8] Silver D, Schrittwieser J, Simonyan K, Antonoglou I, Huang A, Guez A, et al. Mastering the game of Go without human knowledge. Nature, 2017, 550(7676): 354−359 doi:  10.1038/nature24270
    [9] Shimodaira H. Improving predictive inference under covariate shift by weighting the log-likelihood function. Journal of Statistical Planning and Inference, 2000, 90(2): 227−244 doi:  10.1016/S0378-3758(00)00115-4
    [10] Daume III H, Marcu D. Domain adaptation for statistical classifiers. Journal of Artificial Intelligence Research, 2006, 26: 101−126 doi:  10.1613/jair.1872
    [11] 刘建伟, 孙正康, 罗雄麟. 域自适应学习研究进展. 自动化学报, 2014, 40(8): 1576−1600

    Liu Jian-Wei, Sun Zheng-Kang, Luo Xiong-Lin. Review and research development on domain adaptation learning. Acta Automatica Sinica, 2014, 40(8): 1576−1600
    [12] Nair V, Hinton G E. Rectified linear units improve restricted Boltzmann machines. In: Proceedings of the 27th International Conference on Machine Learning. Madison, USA: ACM, 2010. 807−814
    [13] Saxe A M, McClelland J L, Ganguli S. Exact solutions to the nonlinear dynamics of learning in deep linear neural networks. arXiv preprint arXiv: 1312.6120, 2013.
    [14] Devarakonda A, Naumov M, Garland M. AdaBatch: Adaptive batch sizes for training deep neural networks. arXiv preprint arXiv: 1712.02029, 2017.
    [15] Rifai S, Vincent P, Muller X, Glorot X, Bengio Y. Contractive auto-encoders: Explicit invariance during feature extraction. In: Proceedings of the 28th International Conference on Machine Learning. Bellevue, USA: ACM, 2011. 833−840
    [16] Srivastava N, Hinton G, Krizhevsky A, Sutskever I, Salakhutdinov R. Dropout: A simple way to prevent neural networks from overfitting. Journal of Machine Learning Research, 2014, 15(56): 1929−1958
    [17] Mazilu S, Iria J. L1 vs. L2 regularization in text classification when learning from labeled features. In: Proceedings of the 10th International Conference on Machine Learning and Applications and Workshops. Honolulu, Hawaii, USA: ACM, 2011. 166−171
    [18] Szegedy C, Liu W, Jia Y Q, Sermanet P, Reed S, Anguelov S, et al. Going deeper with convolutions. In: Proceedings of the 2015 IEEE Conference on Computer Vision and Pattern Recognition. Boston, USA: IEEE, 2015. 1−9
    [19] Sutskever I, Martens J, Dahl G, Hinton G. On the importance of initialization and momentum in deep learning. In: Proceedings of the 30th International Conference on Machine Learning. Atlanta, USA: ACM, 2013. 1139−1147
    [20] Jain L P, Scheirer W J, Boult T E. Multi-class open set recognition using probability of inclusion. In: Proceedings of the 13th European Conference. Zurich, Switzerland: Springer, 2014. 393−409
    [21] Arpit D, Zhou Y B, Kota B U, Govindaraju V. Normalization propagation: A parametric technique for removing internal covariate shift in deep networks. In: Proceedings of the 33rd International Conference on Machine Learning. New York, USA: ACM, 2016. 1168−1176
    [22] Lin M, Chen Q, Yan S C. Network in network. arXiv preprint arXiv: 1312.4400, 2013.
    [23] Krizhevsky A. Learning Multiple Layers of Features from Tiny Images. Technical Report. University of Toronto, Canada, 2009.
    [24] Netzer Y, Wang T, Coates A, Bissacco A, Wu B, Ng A Y. Reading digits in natural images with unsupervised feature learning. NIPS Workshop on Deep Learning and Unsupervised Feature Learning, 2011, 2(5)
    [25] Goodfellow I J, Warde-Farley D, Mirza M, Courville A, Bengio Y. Maxout networks. arXiv preprint arXiv: 1302.4389, 2013.
    [26] Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural networks. In: Proceedings of the 13th International Conference on Artificial Intelligence and Statistics. Sardinia, Italy: AISTATS, 2010. 249−256
    [27] Ioffe S. Batch renormalization: Towards reducing minibatch dependence in batch-normalized models. arXiv preprint arXiv: 1702.03275, 2017.
    [28] Russakovsky O, Deng J, Su H, Krause J, Satheesh S, Ma S A, et al. ImageNet large scale visual recognition challenge. International Journal of Computer Vision, 2015, 115(3): 211−252 doi:  10.1007/s11263-015-0816-y
    [29] Goldberger J, Roweis S, Hinton G, Salakhutdinov R. Neighbourhood components analysis. In: Proceedings of the 17th International Conference on Neural Information Processing Systems. Cambridge, USA: ACM, 2004. 513−520
    [30] Ma Y, Klabjan D. Convergence analysis of batch normalization for deep neural nets. arXiv preprint arXiv: 1705.08011, 2017.
    [31] Bottou L, Curtis F E, Nocedal J. Optimization methods for large-scale machine learning. arXiv preprint arXiv: 1606.04838, 2016.
    [32] Lecun Y, Bottou L, Bengio Y, Haffner P. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 1998, 86(11): 2278−2324 doi:  10.1109/5.726791
    [33] KDD Cup 1999 Data [Online], available: http://www.kdd.org/kdd-cup/view/kdd-cup-1999/Data, 1999.
    [34] Graves A, Mohamed A R, Hinton G. Speech recognition with deep recurrent neural networks. In: Proceedings of the 2013 IEEE International Conference on Acoustics, Speech, and Signal Processing. Vancouver, Canada: IEEE, 2013. 6645−6649
    [35] Ba J L, Kiros J R, Hinton G E. Layer normalization. arXiv preprint arXiv: 1607.06450, 2016.
    [36] Vendrov I, Kiros R, Fidler S, Urtasun R. Order-embeddings of images and language. arXiv preprint arXiv: 1511.06361, 2015.
    [37] Graves A, Wayne G, Reynolds M, Harley T, Danihelka I, Grabska-Barwińska, et al. Hybrid computing using a neural network with dynamic external memory. Nature, 2016, 538(7626): 471−476
    [38] Kiros R, Zhu Y K, Salakhutdinov R, Zemel R S, Torralba A, Urtasun R, Fidler S. Skip-thought vectors. In: Proceedings of the 28th International Conference on Neural Information Processing Systems. Quebec, Canada: ACM, 2015. 3294−3302
    [39] Hermann K M, Kočiský T, Grefenstette E, Espeholt L, Kay W, Suleyman M, et al. Teaching machines to read and comprehend. In: Proceedings of the 28th International Conference on Neural Information Processing Systems. Quebec, Canada: ACM, 2015. 1693−1701
    [40] Sundermeyer M, Schlüter R, Ney H. LSTM neural networks for language modeling. In: Proceedings of the 13th Annual Conference of the International Speech Communication Association. Oregon, USA: International Speech Communication Association, 2012. 194−197
    [41] Gregor K, Danihelka I, Graves A, Rezende D J, Wierstra D. DRAW: A recurrent neural network for image generation. arXiv preprint arXiv: 1502.04623, 2015.
    [42] Salimans T, Kingma D P. Weight normalization: A simple reparameterization to accelerate training of deep neural networks. In: Proceedings of the 30th International Conference on Neural Information Processing Systems. Barcelona, Spain: ACM, 2016. 901−909
    [43] Kingma D P, Welling M. Auto-encoding variational Bayes. arXiv preprint arXiv: 1312.6114, 2013.
    [44] Mnih V, Kavukcuoglu K, Silver D, Rusu A A, Veness J, Bellemare M G, et al. Human-level control through deep reinforcement learning. Nature, 2015, 518(7540): 529−533 doi:  10.1038/nature14236
    [45] Hendrycks D, Gimpel K. Adjusting for dropout variance in batch normalization and weight initialization. arXiv preprint arXiv: 1607.02488, 2016.
    [46] Narayanan A, Shi E, Rubinstein B I P. Link prediction by de-anonymization: How we won the Kaggle social network challenge. In: Proceedings of the 2011 International Joint Conference on Neural Networks. San Jose, USA: IEEE, 2011. 1825−1834
    [47] Cutler D R, Edwards Jr T C, Beard K H, Cutler A, Hess K T, Gibson J, Lawler J J. Random forests for classification in ecology. Ecology, 2007, 88(11): 2783−2792 doi:  10.1890/07-0539.1
    [48] Joachims T. Making large-scale SVM learning practical. Advances in Kernel Methods—Support Vector Learning, 1999, 8(3): 499−526
    [49] Klambauer G, Unterthiner T, Mayr A, Hochreiter S. Self-normalizing neural networks. In: Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach, CA, USA: ACM, 2017. 972−981
    [50] Fernández-Delgado M, Cernadas E, Barro S, Amorim D. Do we need hundreds of classifiers to solve real world classification problems? The Journal of Machine Learning Research, 2014, 15(1): 3133-3181
    [51] Hsieh J H, Sedykh A, Huang R, Xia M H, Tice R R. A data analysis pipeline accounting for artifacts in Tox21 quantitative high-throughput screening assays. SLAS DISCOVERY: Advancing the Science of Drug Discovery, 2015, 20(7): 887−897 doi:  10.1177/1087057115581317
    [52] Littwin E, Wolf L. The loss surface of residual networks: Ensembles and the role of batch normalization. arXiv preprint arXiv: 1611.02525, 2016.
    [53] Luo C J, Zhan J F, Wang L, Yang Q. Cosine normalization: Using cosine similarity instead of dot product in neural networks. arXiv preprint arXiv: 1702.05870, 2017.
    [54] Cho M, Lee J. Riemannian approach to batch normalization. In: Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach, CA, USA: ACM, 2017. 5231−5241
    [55] Wu S, Li G Q, Deng L, Liu L, Xie Y, Shi L P. L1-norm batch normalization for efficient training of deep neural networks. arXiv preprint arXiv: 1802.09769, 2018.
    [56] Huang L, Liu X L, Liu Y, Lang B, Tao D C. Centered weight normalization in accelerating training of deep neural networks. In: Proceedings of the 2017 IEEE International Conference on Computer Vision (ICCV). Venice, Italy: IEEE, 2017. 2822−2830
    [57] Abdel-Hamid O, Mohamed A R, Jiang H, Penn G. Applying convolutional neural networks concepts to hybrid NN-HMM model for speech recognition. In: Proceedings of the 2012 IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP). Kyoto, Japan: IEEE, 2012. 4277−4280
    [58] Zhao Z Q, Bian H M, Hu D H, Cheng W J, Glotin H. Pedestrian detection based on fast R-CNN and batch normalization. In: Proceedings of the 13th International Conference on Intelligent Computing Theories and Application. Liverpool, UK: Springer, 2017. 735−746
    [59] Girshick R. Fast R-CNN. In: Proceedings of the 2015 IEEE International Conference on Computer Vision (ICCV). Santiago, Chile: IEEE, 2015.
    [60] Darwish A, Nakhmani A. Internal covariate shift reduction in encoder-decoder convolutional neural networks. In: Proceedings of the 2017 ACM Southeast Conference. Kennesaw, USA: ACM, 2017. 179−182
    [61] Laurent C, Pereyra G, Brakel P, Zhang Y, Bengio Y. Batch normalized recurrent neural networks. In: Proceedings of the 2016 IEEE International Conference on Acoustics, Speech, and signal processing (ICASSP). Shanghai, China: IEEE, 2016. 2657−2661
    [62] Cooijmans T, Ballas N, Laurent C, Gülçehre Ç, Courville A. Recurrent batch normalization. arXiv preprint arXiv: 1603.09025, 2016.
    [63] Laurent C, Pereyra G, Brakel P, Zhang Y, Bengio Y. Batch normalized recurrent neural networks. arXiv preprint arXiv: 1510.01378, 2015.
    [64] Amodei D, Ananthanarayanan S, Anubhai R, Bai J L, Battenberg E, Case C, et al. Deep speech 2: End-to-end speech recognition in English and Mandarin. In: Proceedings of the 33rd International Conference on Machine Learning. New York, USA: JMLR.org, 2016. 173−182
    [65] Zhang Y, Chan W, Jaitly N. Very deep convolutional networks for end-to-end speech recognition. In: Proceedings of the 2017 IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP). New Orleans, USA: IEEE, 2017. 4845−4849
    [66] Liao Z B, Carneiro G. On the importance of normalisation layers in deep learning with piecewise linear activation units. In: Proceedings of the 2016 IEEE Winter Conference on Applications of Computer Vision (WACV). Lake Placid, USA: IEEE, 2016. 1−8
    [67] Liang M, Hu X L. Recurrent convolutional neural network for object recognition. In: Proceedings of the 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Boston, USA: IEEE, 2015. 3367−3375
    [68] Long M C, Zhu H, Wang J M, Jordan M I. Unsupervised domain adaptation with residual transfer networks. arXiv preprint arXiv: 1602. 04433, 2017.
    [69] Tzeng E, Hoffman J, Darrell T, Saenko K. Simultaneous deep transfer across domains and tasks. arXiv preprint arXiv: 1510. 02192, 2015.
    [70] Ganin Y, Lempitsky V. Unsupervised domain adaptation by backpropagation. In: Proceedings of the 32nd International Conference on Machine Learning. Lille, France: JMLR.org, 2015. 1180−1189
    [71] Li Y H, Wang N Y, Shi J P, Liu J Y, Hou X D. Revisiting batch normalization for practical domain adaptation. arXiv preprint arXiv: 1603.04779, 2016.
    [72] Saenko K, Kulis B, Fritz M, Darrell T. Adapting visual category models to new domains. In: Proceedings of the 11th European Conference on Computer Vision. Heraklion, Greece: Springer, 2010. 213−226
    [73] Gretton A, Borgwardt K M, Rasch M J, Schölkopf B, Smola A. A kernel two-sample test. The Journal of Machine Learning Research, 2012, 13: 723−773
    [74] Tzeng E, Hoffman J, Zhang N, Saenko K, Darrell T. Deep domain confusion: Maximizing for domain invariance. arXiv preprint arXiv: 1412.3474, 2014.
    [75] Long M S, Cao Y, Wang J M, Jordan M I. Learning transferable features with deep adaptation networks. In: Proceedings of the 32nd International Conference on Machine Learning. Lille, France: JMLR.org, 2015. 97−105
    [76] Gong B Q, Shi Y, Sha F, Grauman K. Geodesic flow kernel for unsupervised domain adaptation. In: Proceedings of the 2012 IEEE Conference on Computer Vision and Pattern Recognition. Providence, USA: IEEE, 2012. 2066−2073
    [77] He K M, Zhang X Y, Ren S Q, Sun J. Deep residual learning for image recognition. In: Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas, USA: IEEE, 2016. 770−778
    [78] Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks. arXiv preprint arXiv: 1511.06434, 2015.
    [79] Donahue C, McAuley J, Puckette M. Synthesizing audio with generative adversarial networks. arXiv preprint arXiv: 1802.04208, 2018.
    [80] Lillicrap T P, Hunt J J, Pritzel A, Heess N, Erez T, Tassa Y, et al. Continuous control with deep reinforcement learning. arXiv preprint arXiv: 1509. 02971, 2015.
    [81] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks. In: Proceedings of the 25th International Conference on Neural Information Processing Systems. Nevada, USA: ACM, 2012. 1106−1114
    [82] Hinton G E, Srivastava N, Krizhevsky A, Sutskever I, Salakhutdinov R R. Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv: 1207.0580, 2012.
    [83] Mendenhall J, Meiler J. Improving quantitative structure-activity relationship models using artificial neural networks trained with dropout. Journal of Computer-Aided Molecular Design, 2016, 30(2): 177−189 doi:  10.1007/s10822-016-9895-2
    [84] Dahl G E, Sainath T N, Hinton G E. Improving deep neural networks for LVCSR using rectified linear units and dropout. In: Proceedings of the 2013 IEEE International Conference on Acoustics, Speech, and Signal Processing. Vancouver, BC, Canada: IEEE, 2013. 8609−8613
    [85] Baldi P, Sadowski P J. Understanding dropout. In: Proceedings of the 26th International Conference on Neural Information Processing Systems. Lake Tahoe, Nevada, USA: ACM, 2013. 2814−2822
    [86] Wang S I, Manning C D. Fast dropout training. In: Proceedings of the 30th International Conference on Machine Learning. Atlanta, GA, USA: ACM, 2013. 118−126
    [87] Wager S, Wang S I, Liang P. Dropout training as adaptive regularization. In: Proceedings of the 26th International Conference on Neural Information Processing Systems. Lake Tahoe, Nevada, United States: ACM, 2013. 351−359
    [88] Li X, Chen S, Hu X L, Yang J. Understanding the disharmony between dropout and batch normalization by variance shift. In: Proceedings of the 2019 IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2019, Long Beach, CA, USA: IEEE, 2019. 2682−2690
    [89] Pham V, Bluche T, Kermorvant C, Louradour J. Dropout improves recurrent neural networks for handwriting recognition. In: Proceedings of the 14th International Conference on Frontiers in Handwriting Recognition. Heraklion, Greece: IEEE, 2014. 285−290
    [90] Gal Y, Ghahramani Z. Dropout as a Bayesian approximation: Representing model uncertainty in deep learning. In: Proceedings of the 33rd International Conference on Machine Learning. New York, USA: JMLR.org, 2016. 1050−1059
    [91] Gal Y, Hron J, Kendall A. Concrete dropout. In: Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach, CA, USA, 2017. 3584−3593
    [92] Hofmann B. Regularization for Applied Inverse and III-Posed Problems: A Numerical Approach. Wiesbaden: Springer-Verlag, 1991. 380−394
    [93] Girosi F, Jones M, Poggio T. Regularization theory and neural networks architectures. Neural Computation, 1995, 7(2): 219−269 doi:  10.1162/neco.1995.7.2.219
    [94] Evgeniou T, Pontil M, Poggio T. Regularization networks and support vector machines. Advances in Computational Mathematics, 2000, 13(1): 1−1 doi:  10.1023/A:1018946025316
    [95] Guo P, Lyu M R, Chen C L P. Regularization parameter estimation for feedforward neural networks. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 2003, 33(1): 35−44 doi:  10.1109/TSMCB.2003.808176
    [96] Ng A Y. Feature selection, L1 vs. L2 regularization, and rotational invariance. In: Proceedings of the 21st International Conference on Machine Learning. New York, USA: ACM, 2004. Article No.78
    [97] Schmidt M, Fung G, Rosales R. Fast optimization methods for l1 regularization: A comparative study and two new approaches. In: Proceedings of the 18th European Conference on Machine Learning. Berlin, Germany: Springer, 2007. 286−297
    [98] Bryer A R. Understanding regulation: Theory, strategy, and practice. Accounting in Europe, 2013, 10(2): 279−282 doi:  10.1080/17449480.2013.834747
    [99] Xu Z B, Chang X Y, Xu F M, Zhang H. L1/2 regularization: A thresholding representation theory and a fast solver. IEEE Transactions on Neural Networks and Learning Systems, 2012, 23(7): 1013−1027 doi:  10.1109/TNNLS.2012.2197412
    [100] Wan L, Zeiler M, Zhang S X, LeCun Y, Fergus R. Regularization of neural networks using dropconnect. In: Proceedings of the 30th International Conference on Machine Learning. Atlanta, GA, USA: ACM, 2013. 1058−1066
    [101] Zaremba W, Sutskever I, Vinyals O. Recurrent neural network regularization. arXiv preprint arXiv: 1409.2329, 2014.
    [102] Lamb A, Dumoulin V, Courville A. Discriminative regularization for generative models. arXiv preprint arXiv: 1602.03220, 2016.
    [103] Scardapane S, Comminiello D, Hussain A, Uncini A. Group sparse regularization for deep neural networks. Neurocomputing, 2017, 241: 81−89 doi:  10.1016/j.neucom.2017.02.029
    [104] Gu B, Sheng V S. A robust regularization path algorithm for ν-support vector classification. IEEE Transactions on Neural Networks and Learning Systems, 2017, 28(5): 1241−1248 doi:  10.1109/TNNLS.2016.2527796
    [105] Dasgupta S, Yoshizumi T, Osogami T. Regularized dynamic Boltzmann machine with delay pruning for unsupervised learning of temporal sequences. arXiv preprint arXiv: 1610. 01989, 2016.
    [106] Luo M N, Nie F P, Chang X J, Yang Y, Hauptmann A G, Zheng Q H. Adaptive unsupervised feature selection with structure regularization. IEEE Transactions on Neural Networks and Learning Systems, 2018, 29(4): 944−956 doi:  10.1109/TNNLS.2017.2650978
    [107] Tanner M A, Wong W H. The calculation of posterior distributions by data augmentation. Journal of the American Statistical Association, 1987, 82(398): 528−540 doi:  10.1080/01621459.1987.10478458
    [108] Frühwirth-Schnatter S. Data augmentation and dynamic linear models. Journal of Time Series Analysis, 1994, 15(2): 183−202 doi:  10.1111/j.1467-9892.1994.tb00184.x
    [109] Van Dyk D A, Meng X L. The art of data augmentation. Journal of Computational and Graphical Statistics, 2001, 10(1): 1−50 doi:  10.1198/10618600152418584
    [110] Hobert J P, Marchev D. A theoretical comparison of the data augmentation, marginal augmentation and PX-DA algorithms. The Annals of Statistics, 2008, 36(2): 532−554 doi:  10.1214/009053607000000569
    [111] Frühwirth-Schnatter S, Frühwirth R. Data augmentation and MCMC for binary and multinomial logit models. Statistical Modelling and Regression Structures: Festschrift in Honour of Ludwig Fahrmeir. Physica-Verlag HD, 2010. 111−132
    [112] Royle J A, Dorazio R M. Parameter-expanded data augmentation for Bayesian analysis of capture-recapture models. Journal of Ornithology, 2012, 152(2): 521−537
    [113] Westgate B S, Woodard D B, Matteson D S, Henderson S G. Travel time estimation for ambulances using Bayesian data augmentation. The Annals of Applied Statistics, 2013, 7(2): 1139−1161 doi:  10.1214/13-AOAS626
    [114] Cui X D, Goel V, Kingsbury B. Data augmentation for deep neural network acoustic modeling. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2015, 23(9): 1469−1477 doi:  10.1109/TASLP.2015.2438544
    [115] McFee B, Humphrey E J, Bello J P. A software framework for musical data augmentation. In: Proceedings of the 16th International Society for Music Information Retrieval Conference. Málaga, Spain: Molecular Oncology, 2015. 248−254
    [116] Xu Y, Jia R, Mou L L, Li G, Chen Y C, Lu Y Y, Jin Z. Improved relation classification by deep recurrent neural networks with data augmentation. arXiv preprint arXiv: 1601.03651, 2016.
    [117] Rogez G, Schmid C. MoCap-guided data augmentation for 3D pose estimation in the wild. In: Proceedings of the 30th International Conference on Neural Information Processing Systems. Barcelona, Spain: ACM, 2016. 3108−3116
    [118] Touloupou P, Alzahrani N, Neal P J, Spencer S, McKinley T. Efficient model comparison techniques for models requiring large scale data augmentation. Bayesian Analysis, 2018, 13(2): 437−459 doi:  10.1214/17-BA1057
    [119] Moreau L, Bachmayer R, Leonard N E. Coordinated gradient descent: A case study of Lagrangian dynamics with projected gradient information. IFAC Proceedings Volumes, 2003, 36(2): 57−62 doi:  10.1016/S1474-6670(17)38867-5
    [120] Wilson D R, Martinez T R. The general inefficiency of batch training for gradient descent learning. Neural Networks, 2003, 16(10): 1429−1451 doi:  10.1016/S0893-6080(03)00138-2
    [121] Yang J. Newton-conjugate-gradient methods for solitary wave computations. Journal of Computational Physics, 2009, 228(18): 7007−7024 doi:  10.1016/j.jcp.2009.06.012
    [122] Bottou L. Large-scale machine learning with stochastic gradient descent. Proceedings of COMPSTAT'2010. Physica-Verlag HD, 2010. 177–186
    [123] Zinkevich M A, Weimer M, Smola A, Li L H. Parallelized stochastic gradient descent. In: Proceedings of the 23rd International Conference on Neural Information Processing Systems. British Columbia, Canada: ACM, 2010. 2595−2603
    [124] Bengio Y, Boulanger-Lewandowski N, Pascanu R. Advances in optimizing recurrent networks. In: Proceedings of the 2013 IEEE International Conference on Acoustics, Speech, and Signal Processing. Vancouver, USA: IEEE, 2013. 8624−8628
    [125] Valentino Z, Gianmario S, Daniel S, Peter R. Python Deep Learning: Next Generation Techniques to Revolutionize Computer Vision, AI, Speech and Data Analysis. Birmingham, UK: Packt Publishing Ltd, 2017.
    [126] Lucas J, Sun S Y, Zemel R, Grosse R. Aggregated momentum: Stability through passive damping. arXiv preprint arXiv: 1804. 00325, 2018.
    [127] Kingma D P, Ba J. Adam: A method for stochastic optimization. arXiv preprint arXiv: 1412.6980, 2014.
    [128] Chen Y D, Wainwright M J. Fast low-rank estimation by projected gradient descent: General statistical and algorithmic guarantees. arXiv preprint arXiv: 1509.03025, 2015.
    [129] Ruder S. An overview of gradient descent optimization algorithms. arXiv preprint arXiv: 1609.04747, 2016.
    [130] Konečný J, Liu J, Richtárik P, Takáč M. Mini-batch semi-stochastic gradient descent in the proximal setting. IEEE Journal of Selected Topics in Signal Processing, 2016, 10(2): 242−255 doi:  10.1109/JSTSP.2015.2505682
    [131] Andrychowicz M, Denil M, Colmenarejo S G, Hoffman M W, Pfau D, Schaul T, et al. Learning to learn by gradient descent by gradient descent. In: Proceedings of the 30th International Conference on Neural Information Processing Systems. Barcelona, Spain: ACM, 2016. 3988−3996
    [132] Khirirat S, Feyzmahdavian H R, Johansson M. Mini-batch gradient descent: Faster convergence under data sparsity. In: Proceedings of the 56th IEEE Annual Conference on Decision and Control (CDC). Melbourne, Australia: IEEE, 2017. 2880−2887
    [133] Murugan P, Durairaj S. Regularization and optimization strategies in deep convolutional neural network. arXiv preprint arXiv: 1712.04711, 2017.
    [134] Han J, Moraga C. The influence of the sigmoid function parameters on the speed of backpropagation learning. In: Proceedings of the 1995 International Workshop on Artificial Neural Networks: from Natural to Artificial Neural Computation. Malaga-Torremolinos, Spain: ACM, 1995. 195−201
    [135] Yin X Y, Goudriaan J, Lantinga E A, Vos J, Spiertz H J. A flexible sigmoid function of determinate growth. Annals of Botany, 2003, 91(3): 361−371 doi:  10.1093/aob/mcg029
    [136] Malfliet W. The tanh method: A tool for solving certain classes of non-linear PDEs. Mathematical Methods in the Applied Sciences, 2005, 28(17): 2031−2035 doi:  10.1002/mma.650
    [137] Knowles D A, Minka T P. Non-conjugate variational message passing for multinomial and binary regression. In: Proceedings of the 24th International Conference on Neural Information Processing Systems. Granada, Spain: ACM, 2011. 1701−1709
    [138] Gimpel K, Smith N A. Softmax-margin CRFs: Training log-linear models with cost functions. In: Proceedings of the 2010 Human Language Technologies: the 2010 Annual Conference of the North American Chapter of the Association for Computational Linguistics. Los Angeles, California, USA: ACM, 2010. 733−736
    [139] Glorot X, Bordes A, Bengio Y. Deep sparse rectifier neural networks. In: Proceedings of the 14th International Conference on Artificial Intelligence and Statistics (AISTATS). Fort Lauderdale, USA: PMLR, 2011. 315−323
    [140] Krizhevsky A. One weird trick for parallelizing convolutional neural networks. arXiv preprint arXiv:1404.5997, 2014.
    [141] Tòth L. Phone recognition with deep sparse rectifier neural networks. In: Proceedings of the 2013 IEEE International Conference on Acoustics, Speech, and Signal Processing. Vancouver, Canada: IEEE, 2013. 6985−6989
    [142] Zeiler M D, Ranzato M, Monga R, Mao M, Yang K, Le Q V, et al. On rectified linear units for speech processing. In: Proceedings of the 2013 IEEE International Conference on Acoustics, Speech, and Signal Processing. Vancouver, Canada: IEEE, 2013. 3517−3521
    [143] Xu B, Wang N Y, Chen T Q, Li M. Empirical evaluation of rectified activations in convolutional network. arXiv preprint arXiv: 1505.00853, 2015.
    [144] Clevert D A, Unterthiner T, Hochreiter S. Fast and accurate deep network learning by exponential linear units (ELUs). arXiv preprint arXiv: 1511.07289, 2015.
    [145] Martins A F T, Astudillo R F. From softmax to sparsemax: A sparse model of attention and multi-label classification. In: Proceedings of the 33rd International Conference on Machine Learning. New York City, USA: ACM, 2016. 1614−1623
    [146] Darken C, Moody J. Note on learning rate schedules for stochastic optimization. In: Proceedings of the 1990 Conference on advances in Neural Information Processing Systems. Colorado, USA: ACM, 1990. 832−838
    [147] Jacobs R A. Increased rates of convergence through learning rate adaptation. Neural Networks, 1988, 1(4): 295−307 doi:  10.1016/0893-6080(88)90003-2
    [148] Bowling M, Veloso M. Multiagent learning using a variable learning rate. Artificial Intelligence, 2002, 136(2): 215−250 doi:  10.1016/S0004-3702(02)00121-2
    [149] Cireșan D C, Meier U, Gambardella L M, Schmidhuber J. Deep, big, simple neural nets for handwritten digit recognition. Neural Computation, 2010, 22(12): 3207−3220 doi:  10.1162/NECO_a_00052
    [150] Zeiler M D. ADADELTA: An adaptive learning rate method. arXiv preprint arXiv: 1212.5701, 2012.
    [151] Chin W S, Zhuang Y, Juan Y C, Lin C J. A learning-rate schedule for stochastic gradient methods to matrix factorization. In: Proceedings of the 19th Pacific-Asia Conference on Advances in Knowledge Discovery and Data Mining. Ho Chi Minh City, Vietnam: Springer, 2015. 442−455
    [152] Dauphin Y N, de Vries H, Bengio Y. Equilibrated adaptive learning rates for non-convex optimization. In: Proceedings of the 28th International Conference on Neural Information Processing Systems. Quebec, Canada: ACM, 2015. 1504−1512
    [153] Liang J H, Ganesh V, Poupart P, Czarnecki K. Learning rate based branching heuristic for SAT solvers. In: Proceedings of the 19th International Conference on Theory and Applications of Satisfiability Testing. Bordeaux, France: Springer, 2016. 123−140
    [154] Smith L N. Cyclical learning rates for training neural networks. In: Proceedings of the 2017 IEEE Winter Conference on Applications of Computer Vision (WACV). Santa Rosa, USA: IEEE, 2017. 464−472
    [155] Yam J Y F, Chow T W S. A weight initialization method for improving training speed in feedforward neural network. Neurocomputing, 2000, 30(1-4): 219−232 doi:  10.1016/S0925-2312(99)00127-7
    [156] Boedecker J, Obst O, Mayer N M, Asada M. Initialization and self-organized optimization of recurrent neural network connectivity. HFSP Journal, 2009, 3(5): 340−349 doi:  10.2976/1.3240502
    [157] Bengio Y. Practical recommendations for gradient-based training of deep architectures. Neural Networks: Tricks of the Trade (2nd Edition). Berlin, Germany: Springer, 2012.
    [158] Mishkin D, Matas J. All you need is a good init. arXiv preprint arXiv: 1511.06422, 2015.
    [159] Erhan D, Manzagol P A, Bengio Y, Bengio S, Vincent P. The difficulty of training deep architectures and the effect of unsupervised pre-training. In: Proceedings of the 12th International Conference on Artificial Intelligence and Statistics. Florida, USA: JMLR, 2009. 153−160
    [160] Erhan D, Bengio Y, Courville A, Manzagol P A, Vincent P, Bengio S. Why does unsupervised pre-training help deep learning? The Journal of Machine Learning Research, 2010, 11: 625-660
    [161] Hinton G, Deng L, Yu D, Dahl G E, Mohamed A R, Jaitly N, et al. Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups. IEEE Signal Processing Magazine, 2012, 29(6): 82−97 doi:  10.1109/MSP.2012.2205597
    [162] Knyazev B, Shvetsov R, Efremova N, Kuharenko A. Convolutional neural networks pretrained on large face recognition datasets for emotion classification from video. arXiv preprint arXiv: 1711.04598, 2017.
    [163] Courbariaux M, Bengio Y, David J P. Binaryconnect: Training deep neural networks with binary weights during propagations. In: Proceedings of the 28th International Conference on Neural Information Processing Systems. Quebec, Canada: ACM, 2015. 3123−3131
    [164] Umuroglu Y, Fraser N J, Gambardella G, Blott M, Leong P, Jahre M, Vissers K A. FINN: A framework for fast, scalable binarized neural network inference. In: Proceedings of the 2017 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. Monterey, USA: ACM, 2017. 65−74
    [165] Hubara I, Courbariaux M, Soudry D, El-Yaniv R, Bengio Y. Binarized neural networks. In: Proceedings of the 2016 Advances in Neural Information Processing Systems. Barcelona, Spain: ACM, 2016. 4107−4115
    [166] Courbariaux M, Hubara I, Soudry D, El-Yaniv R, Bengio Y. Binarized neural networks: Training deep neural networks with weights and activations constrained to +1 or −1. arXiv preprint arXiv: 1602.02830, 2016.
    [167] Fraser N J, Umuroglu Y, Gambardella G, Blott M, Leong P, Jahre M, Vissers K A. Scaling binarized neural networks on reconfigurable logic. In: Proceedings of the 8th Workshop and 6th Workshop on Parallel Programming and Run-Time Management Techniques for Many-core Architectures and Design Tools and Architectures for Multicore Embedded Computing Platforms. Stockholm, Sweden: IEEE, 2017. 25−30
    [168] Huang G, Sun Y, Liu Z, Sedra D, Weinberger K Q. Deep networks with stochastic depth. In: Proceedings of the 14th European Conference on Computer Vision. Amsterdam, The Netherlands: Springer, 2016. 646–661
    [169] Yamada Y, Iwamura M, Kise K. Deep pyramidal residual networks with separated stochastic depth. arXiv preprint arXiv: 1612.01230, 2016.
    [170] Chen D S, Zhang W B, Xu X M, Xing X F. Deep networks with stochastic depth for acoustic modelling. In: Proceedings of the 2016 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference (APSIPA). Jeju, South Korea: IEEE, 2016. 1−4
    [171] Huang G, Liu Z, Van Der Maaten L, Weinberger K Q. Densely connected convolutional networks. In: Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, USA: IEEE, 2017. 2261−2269
    [172] Buciluǎ C, Caruana R, Niculescu-Mizil A. Model compression. In: Proceedings of the 12th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. Philadelphia, USA: ACM, 2006. 535−541
    [173] Gong Y C, Liu L, Yang M, Bourdev L. Compressing deep convolutional networks using vector quantization. arXiv preprint arXiv: 1412.6115, 2014.
    [174] Han S, Mao H Z, Dally W J. Deep compression: Compressing deep neural networks with pruning, trained quantization and Huffman coding. arXiv preprint arXiv: 1510.00149, 2015.
    [175] Chen W L, Wilson J T, Tyree S, Weinberger K Q, Chen Y X. Compressing neural networks with the hashing trick. In: Proceedings of the 32nd International Conference on Machine Learning. Lille, France: JMLR.org, 2015. 2285−2294
    [176] Luo P, Zhu Z Y, Liu Z W, Wang X G, Tang X O. Face model compression by distilling knowledge from neurons. In: Proceedings of the 30th AAAI Conference on Artificial Intelligence. Arizona, USA: AAAI, 2016. 3560−3566
    [177] Cheng Y, Wang D, Zhou P, Zhang T. A survey of model compression and acceleration for deep neural networks. arXiv preprint arXiv: 1710.09282, 2017.
    [178] Ullrich K, Meeds E, Welling M. Soft weight-sharing for neural network compression. arXiv preprint arXiv: 1702.04008, 2017.
  • [1] 邹耀斌, 雷帮军, 臧兆祥, 王俊英, 胡泽海, 董方敏. 归一化互信息量最大化导向的自动阈值选择方法[J]. 自动化学报, 2019, 45(7): 1373-1385. doi: 10.16383/j.aas.2018.c170284
    [2] 欧世峰, 高颖, 赵晓晖. 基于随机梯度的变动量因子自适应白化算法[J]. 自动化学报, 2012, 38(8): 1370-1374. doi: 10.3724/SP.J.1004.2012.01370
    [3] 肖强, 谢巍. 针对时滞系统的一般化内模控制方法[J]. 自动化学报, 2011, 37(4): 464-470. doi: 10.3724/SP.J.1004.2011.00464
    [4] 储昭碧, 丁明, 杜少武, 冯小英. 归一化频率自适应梳状滤波器的稳定性分析[J]. 自动化学报, 2010, 36(11): 1581-1593. doi: 10.3724/SP.J.1004.2010.01581
    [5] 董远, 陆亮, 赵贤宇, 赵建. 对文本无关的说话人验证中模型距离归一化问题的研究[J]. 自动化学报, 2009, 35(5): 556-560. doi: 10.3724/SP.J.1004.2009.00556
    [6] 王飞跃. 关于控制与机械一体化的数理计算体系结构研究[J]. 自动化学报, 2006, 32(2): 318-320.
    [7] 孔德明, 方华京. 一类网络化控制系统的稳定容错控制[J]. 自动化学报, 2005, 31(2): 267-273.
    [8] 白涛, 吴智铭, 杨根科. 网络化控制系统带宽配置的一种新策略[J]. 自动化学报, 2004, 30(6): 961-967.
    [9] 韩志刚. 关于建模与自适应控制的一体化途径[J]. 自动化学报, 2004, 30(3): 380-389.
    [10] 唐明, 马颂德. 非参数化区域竞争方法:一种新的图像分割框架[J]. 自动化学报, 2001, 27(6): 737-743.
    [11] 向峥嵘, 陈庆伟, 吴晓蓓, 胡维礼. 一类非线性时变系统基于观测器的反馈稳定化[J]. 自动化学报, 2000, 26(2): 274-277.
    [12] 孙福权, 郑秉霖, 崔建江, 汪定伟, 刘新胜. 炼钢-热轧一体化管理的生产计划编制问题研究[J]. 自动化学报, 2000, 26(3): 409-413.
    [13] 徐胜元, 杨成梧. 广义系统在一般状态反馈下的输出稳定化[J]. 自动化学报, 1999, 25(6): 841-843.
    [14] 苏宏业, 褚建. 一类非线性时滞系统的稳定化控制器设计研究[J]. 自动化学报, 1998, 24(1): 30-36.
    [15] 谭连生, 范文涛. 奇异系统的输出稳定化通过一般状态反馈的可解性[J]. 自动化学报, 1997, 23(1): 64-67.
    [16] 张勇. 一种高精度的自动化数据处理方法[J]. 自动化学报, 1996, 22(5): 624-628.
    [17] 刘成君, 戴汝为. 主轴方法和矩方法相融合的三维物体归一化的识别[J]. 自动化学报, 1996, 22(6): 672-717.
    [18] 姜旭升. DEDS对象化高级Petri网模型研究--对象化高级Petri网上的一致性网络[J]. 自动化学报, 1995, 21(3): 319-325.
    [19] 陈冲, 王炎, 王广雄. 一类非线性多变量系统的解耦线性化[J]. 自动化学报, 1992, 18(1): 87-91.
    [20] 刘炳章. 复杂系统可靠性设计中费用最小化的一个方法[J]. 自动化学报, 1985, 11(1): 103-106.
  • 加载中
图(15) / 表(12)
计量
  • 文章访问数:  431
  • HTML全文浏览量:  106
  • PDF下载量:  286
  • 被引次数: 0
出版历程
  • 网络出版日期:  2020-07-10
  • 刊出日期:  2020-07-10

深度学习批归一化及其相关算法研究进展

doi: 10.16383/j.aas.c180564
    基金项目:  国家重点研究发展计划项目基金(2016YFC0303703),中国石油大学(北京)年度前瞻导向及培育项目基金(2462018QZDX02)资助
    作者简介:

    中国石油大学(北京)自动化系副研究员. 主要研究方向为模式识别与智能系统, 先进控制. 本文通信作者. E-mail: liujw@cup.edu.cn

    中国石油大学(北京)自动化系硕士研究生. 2016年获得中国石油大学(北京)自动化系学士学位. 主要研究方向为模式识别与智能系统. E-mail: zhaohuidan93@126.com

    中国石油大学(北京)自动化系教授. 主要研究方向为智能控制, 复杂系统分析, 预测与控制. E-mail: luoxl@cup.edu.cn

    哈尔滨工业大学(深圳)机电工程与自动化学院副教授. 主要研究方向为复杂非线性系统分析, 预测与控制. E-mail: xujunqgy@hit.edu.cn

摘要: 深度学习已经广泛应用到各个领域, 如计算机视觉和自然语言处理等, 并都取得了明显优于早期机器学习算法的效果. 在信息技术飞速发展的今天, 训练数据逐渐趋于大数据集, 深度神经网络不断趋于大型化, 导致训练越来越困难, 速度和精度都有待提升. 2013年, Ioffe等指出训练深度神经网络过程中存在一个严重问题: 中间协变量迁移(Internal covariate shift), 使网络训练过程对参数初值敏感、收敛速度变慢, 并提出了批归一化(Batch normalization, BN)方法, 以减少中间协变量迁移问题, 加快神经网络训练过程收敛速度. 目前很多网络都将BN作为一种加速网络训练的重要手段, 鉴于BN的应用价值, 本文系统综述了BN及其相关算法的研究进展. 首先对BN的原理进行了详细分析. BN虽然简单实用, 但也存在一些问题, 如依赖于小批量数据集的大小、训练和推理过程对数据处理方式不同等, 于是很多学者相继提出了BN的各种相关结构与算法, 本文对这些结构和算法的原理、优势和可以解决的主要问题进行了分析与归纳. 然后对BN在各个神经网络领域的应用方法进行了概括总结, 并且对其他常用于提升神经网络训练性能的手段进行了归纳. 最后进行了总结, 并对BN的未来研究方向进行了展望.

English Abstract

刘建伟, 赵会丹, 罗雄麟, 许鋆. 深度学习批归一化及其相关算法研究进展. 自动化学报, 2020, 46(6): 1090−1120. doi: 10.16383/j.aas.c180564
引用本文: 刘建伟, 赵会丹, 罗雄麟, 许鋆. 深度学习批归一化及其相关算法研究进展. 自动化学报, 2020, 46(6): 1090−1120. doi: 10.16383/j.aas.c180564
Liu Jian-Wei, Zhao Hui-Dan, Luo Xiong-Lin, Xu Jun. Research progress on batch normalization of deep learning and its related algorithms. Acta Automatica Sinica, 2020, 46(6): 1090−1120. doi: 10.16383/j.aas.c180564
Citation: Liu Jian-Wei, Zhao Hui-Dan, Luo Xiong-Lin, Xu Jun. Research progress on batch normalization of deep learning and its related algorithms. Acta Automatica Sinica, 2020, 46(6): 1090−1120. doi: 10.16383/j.aas.c180564
  • 近年来, 深度学习获得了广泛应用, 如语音识别与合成、计算机视觉、机器翻译和多模态问题回答等. 传统机器学习直接处理自然数据的能力有限, 需要专业人士对未处理过的数据人工提取特征和人工进行标注, 而深度神经网络则可以从原始数据中直接学习多级不同抽象层次的特征, 随着网络层数的加深, 可以学习数据更高层次的抽象表示, 得到的特征甚至可能是人类专家无法发现的.

    随着近年来互联网技术的发展, 深度神经网络需要处理的数据集越来越趋于大型化和异构, 为了获得数据不同抽象层次的特征表示, 网络的层数逐渐增多, 甚至达到几百层, 导致网络训练花费的时间越来越长, 训练过程中容易出现梯度消失和爆炸等问题, 网络易陷入局部极小值, 训练准确率也有待提升.

    最近几年, 图形处理器(Graphics processing unit, GPU)的使用加快了深度神经网络的训练速度, 其可以将数据集拆分, 对不同的处理器进行训练, 或者将神经网络进行拆分, 每个处理器训练网络的一部分[1]. 但是直到目前, 新的深度学习算法和深度神经网络新的应用表明, 深度神经网络的训练过程仍然会受到计算能力的限制. 因此很多学者致力于改进训练算法, 以加快神经网络的收敛速度.

    早在1998年, Lecun等[2]指出白化(Whitening)网络输入可以加快神经网络训练过程的收敛速度, 其将输入数据归一化为服从概率分布N(0,1), 即均值为0、方差为1的正态分布, 降低数据样例各个分量之间的耦合性. Wiester等[3]指出在深度神经网络中每一层进行激活值白化可以加快梯度下降训练过程收敛速度, 提出了均值归一化随机梯度算法, 这种方法类似于Raiko等[4]提出的动态转化激活函数以使激活值具有零均值的方法. Povey等[5]、Desjardins等[6]也提出了相似的方法, 但这些方法因为白化运算计算量大、算法复杂性高导致应用受到限制. 2015年, Ioffe等[7]提出批归一化(Batch normalization, BN), 以减少中间协变量迁移(Internal covariate shift)问题, 加快神经网络梯度下降训练过程的收敛速度. 中间协变量迁移指的是神经网络使用梯度下降法进行训练的过程中网络中每一层输入向量服从的概率分布不断发生改变, 容易造成梯度消失或爆炸, 使得梯度下降训练过程对连接边权值矩阵和偏置向量的初始值比较敏感, 初值选择不好, 梯度下降过程易陷入局部鞍点或局部最小点, 训练过程需减小学习率, 收敛速度变慢. 把BN作为神经网络的一部分, 可以使每一层的输入具有相同的和稳定的分布. BN通过引入两个和神经网络训练参数可以一起训练的参数, 保留了神经网络的原始表示能力. BN是可微的变换, 并且对梯度反向传播有好处. BN可以使神经网络训练过程对参数初值不再敏感. BN允许梯度迭代过程使用更大的学习率, 且不会引起梯度更新过程发散. BN也可以看作是正则化过程, 使得目前作为标准配置的dropout并非必须. BN允许网络使用饱和非线性激活函数, 且保证非线性激活函数值不会陷入饱和区. BN简单有效, 配合其他手段可以有效提升神经网络的训练速度, 并且可以在一定程度上提升神经网络的预测准确率.

    BN因其简单有效的优点, 已应用到各个神经网络领域, 如卷积神经网络(Convolutional neural network CNN)、递归神经网络(Recurrent neural network RNN)、分片线性神经网络和域自适应学习等, 效果显著. 2017年10月, 作为人工智能重大突破的AlphaGo Zero[8], 主要原理是卷积神经网络和强化学习相结合, 含有很多个卷积层, 每一个卷积层之后, 都会使用BN来规范化层输入, 是网络结构和训练中至关重要的一部分. BN减少了这些网络中中间协变量迁移的现象, 加快了训练过程的收敛速度. 但是BN也存在一些问题, 如对mini-batch数据集的大小过分依赖, 无法使用单个样本进行训练, 训练和推理时计算过程不同, 因此很多基于BN的归一化结构和算法相继被提出, 这些改进结构和算法分别克服了BN存在的一些问题, 应用到某些特定领域时可以产生优于BN的效果, 但是可能计算复杂性会高于BN, 适用的领域也会相对单一. 到目前为止, BN仍是深度神经网络训练过程使用最广泛的归一化手段.

    本文内容安排如下: 第1节阐述了BN的具体原理以及优点. 第2节对BN各种相关结构和算法进行了详细分析. 第3节系统地介绍了BN在各个神经网络领域的应用方法. 第4节对BN及其相关算法进行了多方面对比分析. 第5节对其他加速深度神经网络训练、提升训练精度的方法进行了归纳. 第6节对BN的未来研究方向进行了展望. 第7节进行全文总结.

    • 训练深度神经网络是困难的, 因为训练过程中每一层的输入的概率分布都会随前一层连接权值矩阵和偏置向量的改变而改变, 每一层的连接权值矩阵和偏置向量等模型参数也要根据层输入的概率分布的变化做出相应的更改. 这就使得训练具有非线性饱和激活函数的深度神经网络变得很困难, 而且需要小心选择参数的初始值, 减小学习率, 小的学习率使得梯度下降训练过程的收敛速度变慢. Ioffe等[7]称这一现象为中间协变量迁移, 提出通过归一化层输入来解决这个问题, 使BN成为模型结构的一部分, 针对每一个小批量训练样例集进行归一化, BN算法结构如图1所示.

      图  1  批归一化算法结构图

      Figure 1.  Structural diagram of batch normalization

      BN算法每次在训练数据集$ \left\{ {{{x}}_i \in {\bf R}^K } \right\}_{i = 1}^n $上选取一个mini-batch数据集对网络进行训练, 假设在网络的训练过程中, 一共选取了$ J $个mini-batch数据集, 假定第$ j $个mini-batch数据集为$X^j =\{{{x}}_i^j $$ {\in {\bf R}^K } \}_{i = 1}^{m_j } $, $ j \in \left\{ {1, \cdots , J} \right\} $, 这里$ m_j $表示训练过程中使用的第$ j $个mini-batch数据集中所含样例的个数. 样例向量$ {{x}}_i^j $对应的随机向量是$ {{ X}}_i^j $, $ {{ X}}_i^j $的第$ k $个随机分量的实现为$ {{x}}_{i, k}^j $, $ k \in \left\{ {1, \cdots , K} \right\}.\; $$ \{ {{{ x}}_i^j } \}_{i = 1}^{m_j } $样例对应的随机向量$ {{ X}}_i^j $的各个分量集合$ \{ {x_{i,1}^j } \}_{i = 1}^{m_j } , $$\{ {x_{i,2}^j } \}_{i = 1}^{m_j } , \cdots ,\{ {x_{i, K}^j } \}_{i = 1}^{m_j } $的均值组成的向量为${{ \mu}} ^j = $$ ( {\mu _{ \cdot ,1}^j , \cdots ,\mu _{ \cdot , K}^j } ) $, 方差组成的向量为${(\sigma^j)^2}=(({{\sigma}} ^j_{\cdot ,1} )^2 $,$\cdots,{(\sigma _{ \cdot , k}^j)^2}),$ 均值${{ \mu}} ^j $的每一维分量为$ \mu _{ \cdot , k}^j\! =\! {{\rm E}}\;[X_{i, k}^j] \!= $$ \dfrac{1}{{{m_j}}}\sum\nolimits_{i = 1}^{{m_j}} {x_{i, k}^j} $, 方差$ ({{ \sigma}} ^j )^2 $的每一维分量为${(\sigma _{ \cdot , k}^j)^2}= $${\rm{Var}}[X_{i. k}^j] =\dfrac{1}{{{m_j}}}\sum\nolimits_{i = 1}^{{m_j}} {{{(x_{i, k}^j - \mu _{B, k}^j)}^2}}$, 进行归一化后结果为$ \hat {{ x}}_i^j = ({\hat x}_{i,1}^j , \cdots ,{\hat x}_{i, K}^j ) $, 其中每一维分量为$ {\hat x}_{i, k}^j = \dfrac{{x_{i, k}^j - \mu _{ \cdot , k}^j }}{{\sqrt {(\sigma _{ \cdot , k}^j )^2 + \varepsilon } }} $. 接下来BN针对每一维分量引入两个附加参数$ \gamma _{ \cdot , k}^j $$ \beta _{ \cdot , k}^j $恢复随机变量预激活值, 针对每一维数据学习一对参数$ \gamma _{ \cdot , k}^j $$ \beta _{ \cdot , k}^j $, 则BN变换的最终输出结果为$ \tilde {{ x}}_i^j = ({\tilde x}_{i,1}^j , \cdots ,{\tilde x}_{i, K}^j ) $, 每一维分量为$ {\tilde x}_{i, k}^j = \gamma _{ \cdot , k}^j {\hat x}_{i, k}^j + \beta _{ \cdot , k}^j $, 参数$ \gamma _{ \cdot , k}^j $$ \beta _{ \cdot , k}^j $是可训练参数, 和网络连接边权值矩阵和偏置向量一起使用随机梯度下降(Stochastic gradient descent, SGD)方法不断更新, $ \gamma _{ \cdot , k}^j $$ \beta _{ \cdot , k}^j $是前面使用$ j - 1 $个mini-batch数据集进行$ j - 1 $次梯度更新得到的.

      这里$ {{ x}}_i $表示BN层的输入, BN运算过程一般在神经网络每一层预激活函数计算之后、激活函数计算之前执行, 对预激活值进行归一化. 以上讨论以输入层为例, 其他层上的处理过程类似, 只是把第$ j $个mini-batch样例集合$ X^j = \{ {{{x}}_i^j \in {\bf R}^K } \}_{i = 1}^{m_j } $, 替换为$ X^j = \{ {{{x}}_i^j \in {\bf R}^K } \}_{i = 1}^{m_j } $所对应的隐层上预激活向量集合$ H^{j, l} = \{ {{{ h}}_i^{j, l} \in {\bf R}^{K_l } } \}_{i = 1}^{m_j } $, 这里$ l \in \left\{ {1, \cdots , L} \right\} $表示深度神经网络的第$ l $层. 下面对BN算法的构造原理和优势进行详细分析.

    • 随机梯度下降(SGD)是训练深度神经网络最常用的梯度下降算法. 假定$ \left\{ {{{ x}}_{\rm{i}} , y_{\rm{i}} } \right\}_{i = 1}^N $是训练数据集, 为求解最优参数$ \hat \theta $, SGD每次从训练样本中随机抽取样本个数为$ m $的mini-batch数据集$ \left\{ {{{ x}}_{\rm{i}} , y_{\rm{i}} } \right\}_{i = 1}^m $逐步最小化损失函数

      $$ \hat \theta = \arg \mathop {\min }\limits_\theta \frac{1}{m}\sum\limits_{i = 1}^m {\ell ({{ x}}_i } , y_i ;\theta ) $$ (1)

      使用SGD训练神经网络, 训练过程是逐步的, 每次使用大小为$ m $的mini-batch数据集对网络进行梯度更新, 使用小批量数据集的好处是: 当训练数据太多时, mini-batch的方法可以减少算法存储空间复杂性, 使梯度下降过程更快地收敛. 在mini-batch数据集上计算的梯度是对在整个训练集上计算的梯度的近似, 小批量数据集的迭代次数越多, 这种近似越精确; 当训练集存在很多冗余信息时(如类似的样本出现多次), mini-batch方法收敛更快, 以一个极端情况为例, 若训练集前一半和后一半梯度相同, 那么如果前一半作为一个批次, 后一半作为另一个批次, 在一次遍历训练集时, 批量训练的方法向最优解更新了两步, 而整个训练集上的梯度下降方法只更新了一步. 另外, 使用mini-batch数据集梯度下降训练算法, 可以实现多个mini-batch的并行计算.

    • 在神经网络训练过程中, 神经网络的输入所服从的概率分布会发生变化, 这种现象称为协变量迁移问题[9], 一般使用域自适应学习方法来解决[10-11]. 文献[7]指出可以对神经网络的子网络或某一层考虑协变量迁移的影响. 对于一个两层的神经网络

      $$ y = { f}_2 ({ f}_1 ({{ u}},{{{\theta}}} _1 ),{{{\theta}}} _2 ) $$ (2)

      其中, $ {{ u}} $是第1层的输入, $ {{{\theta}}} _1 $$ {{{\theta}}} _2 $分别是第1层和第2层的网络参数, $ { f}_1 $$ { f}_2 $分别是第1层和第2层的激活函数. 令$ {{ x}} = f_1 ({{ u}},{{{\theta}}} _1 ) $, 则$ y = { f}_2 ({{ x}},{{{\theta}}} _2 ) $, 相当于针对第2个独立的网络$ {f}_2 $, 输入第1个网络的输出$ {{ x}} $. 在训练神经网络的过程中, $ {{ x}} $所服从的概率分布会随前一层参数$ {{{\theta}}} _1 $的改变而改变, 而$ {{{\theta}}} _2 $也要根据$ {{ x}} $所服从的概率分布的变化做出相应的更改. 随着神经网络层数的加深, 参数小的改变会被逐层放大, 使得训练具有非线性饱和激活函数的深度神经网络变得很困难, 而且需要小心选择参数的初始值, 减小学习率, 小的学习率使得梯度下降训练过程的收敛速度变慢, 文献[7]称这一现象为中间协变量迁移问题.

      保持每一层输入所服从的概率分布随迭代次数不变的技术可以解决中间协变量迁移问题, 加快神经网络训练过程的收敛速度. 考虑神经网络的某一层激活函数的输出为$ { f}(W{{ u}} + b) $, 使用sigmoid激活函数$ {f}({{ x}}) = {1 / {\left( {1 + \exp ( - {{ x}})} \right)}} $, $ x $的值受到当前层的Wb, 以及前面所有层的连接边矩阵和偏置向量的影响, 这些参数的改变很可能使$ {{ x}} $的绝对值$ \left| {{ x}} \right| $不断增加, $ {f}({{ x}}) $的导数趋近于0, 梯度不再变化, 陷入局部鞍点或局部极小点, 参数不再更新, 损失函数不再下降, 学习过程失败, 并且随着网络层数的加深, 这种影响被逐层放大. 这个问题一般使用线性整流函数(Rectified linear unit, ReLU)作为激活函数[12]、选用小的学习率和仔细的设置连接边权值矩阵和偏置向量初始化参数来解决[13]. 然而, 如果可以确保网络每一层的输入所服从概率分布在训练过程中更稳定, 则激活函数不会很容易就陷入饱和区使得梯度下降过程的收敛速度变慢, 学习过程就会加速.

    • 如果对神经网络各层的输入进行白化运算, 让每一层的输入服从均值为0、方差为1的标准正态分布, 可以一步修正输入, 去除中间协变量迁移的影响. 白化操作的具体步骤如下, 对于一个样例集$ \{ {{{{{ x}}}}_i \in {\bf R}^K } \}_{i = 1}^N $, 白化操作可以将$ \{ {{{x}}_i \in {\bf R}^K } \}_{i = 1}^N $转化成具有零均值和单位方差的数据集$ \{ {\tilde {{ x}}_i \in {\bf R}^K } \}_{i = 1}^N $:

      $$ \tilde {{ x}}_i = [\rm{Cov}({{ x}}_i )]^{ - \frac{1}{2}} ({{ x}}_i - {{ \mu}} ) $$ (3)

      其中

      $$ {{ \mu}} = \frac{1}{N}\sum\limits_{i = 1}^N {{{ x}}_i } $$ (4)

      是数据集$ \{ {{{{{ x}}}}_i \in {\bf R}^K } \}_{i = 1}^N $.

      $$\begin{split} { \rm{Cov}}({{ x}}_i ) =& \frac{1}{N}\sum\limits_{i = 1}^N {({{ x}}_i } - {{ \mu}} )({{ x}}_i - {{ \mu}} )\rm^T= \\& {\rm E}({{ x}}_i {{ x}}_i ^{\rm T} ) - {\rm E}({{ {x}}_i}){\rm E}({{ {x}}_i^{\rm T}}) \end{split}\quad $$ (5)

      $ {{ x}}_i $的协方差矩阵. 白化运算需要计算协方差矩阵和协方差矩阵的逆, 计算量很大, 而且白化运算不一定可导, 使用BP算法时梯度不能有效执行反向传播过程.

    • 因为完全白化算法复杂性很高, 文献[7]增加了两个简化过程, 提出了批归一化, 以消除中间协变量迁移问题, 加快神经网络训练过程收敛速度.

      1)第1个简化过程

      不同时白化神经网络层的整个输入向量$ {{ x}}_i $, 而是对输入向量的每一维分量单独进行归一化. 假设训练数据集为$ \left\{ {{{ x}}_i } \right\}_{i = 1}^m $, $ {{ x}}_i $的第$ k $维分量为$ x_{i, k} $, $ x_{i, k} $对应的随机变量为$ X_{i, k} $. 训练集中所有样例的第$ k $维分量组成的集合$ \left\{ {x_{i, k} } \right\}_{i = 1}^m $的均值为

      $$ \mu _{ \cdot , k} = {\rm E}[X_{i, k} ] = \frac{1}{m}\sum\limits_{i = 1}^m {x_{i, k} } $$ (6)

      方差为

      $$\begin{split} (\sigma _{ \cdot , k} )^2 = {\rm{ Var}}[X_{i, k} ] =\dfrac{1}{m}\sum\limits_{i = 1}^m {(x_{i, k} } - \mu _{ \cdot , k} )^2 \end{split} $$ (7)

      则样例各个分量集合$\left\{\! {x_{i,1}^{} } \!\right\}_{i \!=\! 1}^{m_{} } ,\left\{ \!{x_{i,2}^{} } \!\right\}_{i\! =\! 1}^{m_{} } , \cdots , \left\{ \!{x_{i, K}^{} } \!\right\}_{i \!=\! 1}^{m_{} }$的均值组成的向量为$ {{ \mu}} = \left( {\mu _{ \cdot ,1}^{} , \cdots ,\mu _{ \cdot , K}^{} } \right) $, 方差组成的向量为$ {{ \sigma}} ^2 = \left( {\sigma _{ \cdot ,1}^2 , \cdots ,\sigma _{ \cdot , K}^2 } \right) $. 针对$ x_{i, k} $进行归一化

      $$ {\hat x}_{i, k} = \frac{{x_{i, k} - \mu _{ \cdot , k} }}{{\sqrt {\sigma _{{ \cdot , k} }^2 + \varepsilon } }} $$ (8)

      上述归一化过程能够加速梯度下降收敛过程, 即使每一维特征之间不是弱相关的.

      BN运算过程是在每一层预激活函数计算$ W{{ u}} $之后、激活函数$ { f}\left( {W{{ u}}} \right) $计算之前执行的, 上述归一化过程改变神经网络层预激活值所服从的概率分布, 会使神经网络层的各个节点的预激活值发生变化, 影响神经网络的表示能力, 可以通过引入两个和神经网络的连接边的权值矩阵和偏置向量等模型参数一起训练的参数$ \gamma _{ \cdot , k} $$ \beta _{ \cdot , k} $$ {\hat x}_{i, k} $进行比例和平移变换, 在激活函数输入端, 重构神经网络层的各个节点的预激活值

      $$ {\tilde x}_{i, k} = \gamma _{ \cdot , k} {\hat x}_{i, k} + \beta _{ \cdot , k} $$ (9)

      但是, 本文认为这样并不能完全还原神经网络层的各个节点的预激活值. 因为$ \gamma _{ \cdot , k} $$ \gamma _{ \cdot , k} $作为神经网络模型参数被学习时, 学习到的值具有不确定性, 不能完全恢复各个节点的预激活值, 可能需要网络其他参数做出相应改变来补偿这种差异. 如果在学习过程中将$ \gamma _{ \cdot , k} $$ \gamma _{ \cdot , k} $限定在一定范围内, 可以更好地还原加了BN的神经网络层的各个节点的预激活值

      $$\begin{split} {{{\gamma}}} \in [{{ \sigma} } - {{{\varepsilon}} } _1 ,{{ \sigma} } + {{{\varepsilon}} } _1 ]\\ {{{\beta}}} \in [{{ \mu} } - {{{\varepsilon}} } _2 ,{{ \mu} } + {{{\varepsilon}} } _2 ] \end{split} $$ (10)

      其中, $ {{{\varepsilon}} } _1 $$ {{{\varepsilon}} } _2 $是预设的阈值参数.

      2)第2个简化过程

      用整个训练数据集作为归一化数据集时, 无法使用SGD进行训练, 这就需要第2次简化, 对从整个训练数据集抽样得到的小批量数据集进行归一化, 具体过程如算法1所示. 算法1中, $ {{{x}} }_i^j $泛指神经网络所有层上的输入向量. 神经网络的验证和测试阶段会用到推理过程, 当训练完成后, 得到了神经网络的各模型参数, 推理任务对某个输入用训练好的网络预测其输出.

      算法1. BN 的训练和推理过程

      输入. 神经网络N 和可训练参数$ \theta $, 网络中所有层     的输入(包括神经网络的输入和每一个隐层的     输入)$ \{ {{ x}}_i^j \in {\bf R}^K \} $都进行 BN,一共选择$ J $个     mini-batch数据集对N进行训练

      输出. 用于训练的神经网络$ {{N}}_{{\rm BN}}^{\rm tr} $, 用于推理的神经     网络$ {N}_{{\rm BN}}^{\rm inf } $

       1: $ {{N}}_{{\rm BN}}^{\rm tr} \leftarrow {{N}} $ //训练 BN 网络

       2: For $ j = 1, \cdots , J $ Do

       3:   For $ k = 1, \cdots , K $ Do

       4:    计算出均值和方差        $\mu _{ \cdot , k} ={\rm E}[X_{i, k} ]= \frac{1}{m} \sum\limits_{i = 1}^m {x_{i, k} }$        $(\sigma _{ \cdot , k} )^2 \!=\! {\rm{Var}}[X_{i, k} ] \!=\!\! \frac{1}{m}\!\sum\limits_{i \!=\! 1}^m {(x_{i, k} } \!\!-\!\! \mu _{ \cdot , k} )^2$

           计算       $\hat x_{i,k}^j\!=\! \frac{ \hat x_{i,k}^j\!-\!\mu_{\cdot ,k}^j}{\sqrt{(\sigma^j_{\cdot,k})^2\!+\!\varepsilon}}\ {\text{和}} \ \tilde x_{i, k}^j \!=\! \gamma _{ \cdot , k}^j \hat x_{i, k}^j \!+\! \beta _{ \cdot , k}^j$

       5:   将$ N_{{\rm BN}}^{\rm tr} $中的每一层输入的每一维数据        $ x_{i, k}^j $都用$\tilde x_{i, k}^j$来代替

       6:   End For

       7: 训练$ {{N}}_{{\rm BN}}^{\rm tr} $求解优化参数$ \theta $$ \{ \gamma _{ \cdot , k}^j , \beta _{ \cdot , k}^j \} _{k\! = \!1}^K $

       8: End For

       9: $ {{N}}_{{\rm BN}}^{\inf } \leftarrow {{N}}_{{\rm BN}}^{\rm tr} $ //将训练所得的各参数固定,      以用来推理

       10: For $ k = 1, \cdots , K $ Do

          //在推理时, 归一化所用均值和方差为训练     所用的$ J $个mini-batch数据集的均值的均值     ${\rm E}[X]$和方差的均值${\rm{Var}}[X]$

       11:  $\mu _{ \cdot , k} = {\rm E}[X] = \frac{1}{J}\sum\nolimits_{j = 1}^J {\mu _{ \cdot , k}^j }$

          $\sigma _{ \cdot , k}^2 \!\!=\!\!{\rm{Var}}[X] \!\!=\!\! \frac{a}{{a - 1}} \!\times\! \frac{1}{J}\sum\nolimits_{j \!=\! 1}^J {(\sigma _{ \cdot , k}^j } )^2$//为      了得到无偏估计, 这里引入人为设定的正      整数$ a $

       12: 推理时$ x_{i, k} $经过以下BN变换后得到$ \tilde x_{i, k} $

           $\tilde x_{i, k} \!=\! \frac{{\gamma _{ \cdot , k} }}{{\sqrt {\sigma _{ \cdot , k}^2 + \varepsilon } }} \times x_{i, k} \!+\! (\beta _{ \cdot , k} \!-\! \frac{{\gamma _{ \cdot , k} \mu _{ \cdot , k} }}{{\sqrt {\sigma _{ \cdot , k}^2 + \varepsilon } }})$

       13: End For

      在推理的过程中, 不会使用mini-batch数据集的均值和方差对输入数据进行归一化, 而是使用在训练过程中所有使用过的mini-batch数据集的均值的均值和方差的均值对输入数据进行归一化, 因为这使得输入数据考虑到所有训练数据服从的分布, 比mini-batch数据集所服从的分布更接近输入数据服从的真实分布, 使神经网络预测效果更好. 但这样做导致BN在训练和推理时的计算过程不同, 会影响使用BN的神经网络的学习效果, 因此一些基于BN的算法针对这一问题对算法进行了改进.

      BN在神经网络训练过程中使用的所有mini-batch数据集的大小一般都相同, 即所有的$ m_j $设置为相同的数值, 但mini-batch数据集较小时, 网络梯度可以在更少的训练周期(epoch, 1个epoch表示训练了1遍训练集中的所有样本)内收敛, mini-batch数据集较大时, 可以更好地实现并行计算, 计算效率更高. 二者各有一定的优势, 文献[14]提出了一种可以自适应选择mini-batch数据集大小的方法, 可以在训练过程中逐渐增加mini-batch数据集的大小, 既可以使网络训练达到mini-batch数据集较小时的收敛速度, 又可以获得使用较大mini-batch数据集时的并行计算效果, 可更好地利用GPU, 并一定程度上提升网络训练精度.

    • 对于任意的神经网络层, 未使用BN时神经网络层上的激活输出为

      $$ {{ h} } = {f}(W{{ u} } + b) $$ (11)

      使用BN之后偏置的作用因为减去均值被抵消了. BN过程一般在网络预激活之后、非线性激活函数运算之前执行, 即网络的每一层在mini-batch数据集上各个样例的同一维对应的该层的神经元节点上的各个预激活数值集合上求均值和方差, 用得到的均值和方差对神经元节点上的预激活值进行归一化运算. 使用BN后, 神经网络层上的激活输出为

      $$ {{ h} } = {f}({\rm BN}(W{{ u} })) $$ (12)

      其中, $ u $可以代表神经网络的输入数据, 也可以代表网络中某一隐层的输入, 因为一般在神经网络的所有层都使用BN, 这里以网络中第$ l - 1 $个隐层的输出$ {{ h} }^{l - 1} $输入到第$ l $个隐层时进行BN的过程为例, 具体过程如图2所示. BN对隐层输入数据的计算过程和对神经网络输入样例的计算过程相同, 与输入数据一样都使用大小为$ m $的mini-batch数据集针对每一维计算均值和方差, 只是隐层输入和神经网络输入的维数可能不同, 维数和连接边权值矩阵有关, 假设在使用第$ j $个mini-batch进行训练时, $ l - 1 $层输出的第$ i $个输出数据$ {{ h} }_i^{j, l - 1} $, 使用权值矩阵$ W^l $进行预激活之后得到的预激活值${{ z}}_i^{j, l} = $$ W^l {{ h} }_i^{j, l - 1} $的维数为$ P $维.

      图  2  隐层中的批归一化算法结构图

      Figure 2.  Structural diagram of batch normalization in hidden layers

      图2中, BN使用的均值为$ {{ \mu} } ^{j, l} = ( {\mu _{ \cdot ,1}^{j, l} ,\cdots,\mu _{ \cdot , P}^{j, l} } ) $, 每一维分量为

      $$ \mu _{ \cdot , p}^{j, l} = \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {z_{i, p}^{j, l} } $$ (13)

      方差为$ ({{ \sigma}} ^{j, l} )^2 = ({(\sigma _{ \cdot ,1}^{j, l} )^2, \cdots ,(\sigma _{ \cdot , P}^{j, l} )^2 } )$, 每一维分量为

      $$ (\sigma _{ \cdot , p}^{j, l} )^2 = \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {(z_{i, p}^{j, l} } - \mu _{ \cdot , p}^{j, l} )^2 $$ (14)

      BN运算得到$\hat {{ z}}_i^{j, l} = (\hat z_{i,1}^{j, l} , \cdots ,\hat z_{i, P}^{j, l} )$, 其中每一维分量为

      $$ \hat z_{i, p}^{j, l} = \frac{{z_{i, p}^{j, l} - \mu _{ \cdot , p}^{j, l} }}{{\sqrt {(\sigma _{ \cdot , p}^{j, l} )^2 + \varepsilon } }} $$ (15)

      同样针对每一维数据进行运算, 则BN运算最终输出为$ \tilde {{ z}}_i^{j, l} = (\tilde z_{i,1}^{j, l} , \cdots ,\tilde z_{i, P}^{j, l} ) $, 其中每一维分量为

      $$ \tilde z_{i, p}^{j, l} = \gamma _{ \cdot , p}^{j, l} \hat z_{ \cdot , p}^{j, l} + \beta _{ \cdot , p}^{j, l} $$ (16)

      $ \tilde z_{i, p}^{j, l} $输入到层 $ l $的激活函数中, 得到层 $ l $的输出$ {{ h}}_{^i }^{j, l} = {f}(\tilde {{ z}}_i^{j, l} ) $.

    • BN变换过程是可微的, 变换函数的梯度都可以求解, 神经网络SGD可以在BN变换层正常执行, BN变换过程的有关参数的梯度求解过程如算法2所示, 以网络使用第$ j $个mini-batch数据集进行训练时使用SGD进行优化时的过程为例.

      算法2. BN中变换过程的有关参数的梯度更新

      1.$ \frac{{\partial \ell }}{{\partial \hat {{ x} }_i^j }} = \frac{{\partial \ell }}{{\partial \tilde {{ x} }_i^j }}\times{{ \gamma} } ^j$

      2.$ \frac{{\partial \ell }}{{\partial ({{ \sigma} } ^j )^2 }} \!=\! \sum \limits_{i = 1}^{m_j } \frac{{\partial \ell }}{{\partial \hat {{ x} }_i^j }} \!\times \!({{ x} }_i^j \!-\!{{ \mu} } ^j )\!\times\! \frac{{ - 1}}{2}(({{ \sigma} } ^j )^2 + \varepsilon )^{ - \frac{3}{2}} $

      3.$ \frac{{\partial \ell }}{{\partial {{ \mu} } ^j }} = \left( {\sum \limits_{i = 1}^{m_j } \frac{{\partial \ell }}{{\partial \hat {{ x} }_i^j }} \times\frac{{ - 1}}{{\sqrt {({{ \sigma} } ^j )^2 +\varepsilon } }}} \right) +\frac{{\partial \ell }}{{\partial ({{ \sigma} } ^j )^2 }} \times$       $\frac{{\sum\limits _{i = 1}^{m_j } -2({{ x} }_i^j - {{ \mu} } ^j )} }{{m_j }} $

      4.$ \frac{{\partial \ell }}{{\partial {{ x} }_i^j }} = \frac{{\partial \ell }}{{\partial \hat {{ x} }_i^j }} \times \frac{{ - 1}}{{\sqrt {({{ \sigma} } ^j )^2 + \varepsilon } }}+ \frac{{\partial \ell }}{{\partial ({{ \sigma} } ^j )^2 }}\times$       $\frac{{2({{ x} }_i^j - {{ \mu} } ^j )}}{{m_j }}+\frac{{\partial \ell }}{{\partial {{ \mu} } ^j }} \times\frac{1}{{m_j }} $

      5.$ \frac{{\partial \ell }}{{\partial {{ \gamma} } ^j }} = \sum \limits_{i = 1}^{m_j } \frac{{\partial \ell }}{{\partial \tilde {{ x} }_i^j }} \times \hat {{ x} }_i^j$

      6.$ \frac{{\partial \ell }}{{\partial {{ \beta} } ^j }} = \sum \limits_{i = 1}^m \frac{{\partial \ell }}{{\partial \tilde {{ x} }_i^j }}$

      BN变换函数上梯度可以求解, 不会发生使用白化等运算时无法计算梯度的现象, 因此不仅可以在神经网络训练模型参数的SGD更新中使用BN, 也可以与很多其他梯度更新算法结合使用.

    • 1) BN允许梯度下降训练过程中使用更大的学习率

      在传统神经网络中, 过大的学习率会使模型参数的值随着梯度下降迭代过程的进行迅速增大或减小, 导致梯度爆炸或消失, 梯度下降训练过程易陷入局部极小值, 使用批归一化后, 梯度下降迭代过程不会受模型参数取值大小的影响, 使得网络训练过程可以使用更大的学习率, 加速训练收敛速度. 当$ W $使用标量$ \alpha $比例变换后, 使用BN后与$ W $大小没改变之前的值是相等的

      $$ {\rm BN}(W{{ u}}) = {\rm BN}((\alpha W){{ u}}) $$ (17)

      梯度计算式为

      $$ \frac{{\partial {\rm BN}((\alpha W){{ u}})}}{{\partial {{ u}}}} = \frac{{\partial {\rm BN}(W{{ u}})}}{{\partial {{ u}}}} $$ (18)
      $$ \frac{{\partial {\rm BN}((\alpha W){{ u}})}}{{\partial (\alpha W)}} = \frac{1}{\alpha }\frac{{\partial {\rm BN}(W{{ u}})}}{{\partial W}} $$ (19)

      连接边权值矩阵和偏置向量参数的取值大小既不会影响各层上的Jacobian矩阵[15], 也不会影响梯度迭代过程. 而且, 参数取较大值时还会使得梯度减小, 使参数可以稳定更新, 可以加速梯度下降过程的收敛速度.

      2) BN过程等价于正则化过程

      Dropout作为深度神经网络的一种常用的正则化手段, 可以减少过拟合风险, 增强网络的泛化能力[16]. 实验发现, 使用BN结构的网络, 可以去除dropout过程, 目标函数中不用添加$ L_2 $范数正则化项[17], 即BN对网络有正则化效果, 可以防止网络过拟合.

      3)提升模型预测准确率, 减少学习模型过拟合风险

      每个训练周期开始前将整个训练数据集彻底随机置换, 从整个训练数据集中随机选取mini-batch数据集, 可以提升网络学习模型的预测精度, 减少学习模型过拟合风险.

      4)加速梯度更新过程的收敛速度

      使用BN最大的好处是加快了模型参数梯度更新过程的收敛速度. 实验表明, 训练时间会成倍减少, 模型的预测准确率也得到了一定程度的提高.

    • 实验使用含有大量卷积层和池化层(Pooling)的Inception网络[18], 网络中卷积层使用ReLU激活函数. BN层加入在网络的卷积层之后、激活函数之前, 模型使用动量SGD[19]进行训练, 在LSVRC2012数据集[20]上进行分类实验. 其中基础Inception网络模型学习率设置为0.0015, BN-Inception网络在基础Inception网络中加入BN层, 但不改变学习率. BN-x5网络在基础Inception网络中加入BN层, 并将初始学习率增加5倍, 即学习率为0.0075. BN-x30在基础Inception网络中加入BN层后, 初始学习率增加30倍, 即学习率为0.045. BN-x5-sigmoid网络在基础Inception网络中加入BN层, 同时将卷积层激活函数改为sigmoid函数, 初始学习率为0.0075. 实验结果如表1所示, 其中迭代(Iteration)一次代表模型结构参数更新一次. 模型达到72.2%的正确率时, BN-x5网络比Inception网络少14倍的迭代次数. 加入BN层之后的Inception网络模型分类正确率均高于基础Inception网络, 合理设置初始学习率模型可达到更高的正确率. BN-x5-sigmoid使用sigmoid激活函数仍能达到69.8%的分类正确率, 而未加入BN层的Inception网络在使用sigmoid激活函数的情况下, 正确率不会超过0.1%.

      表 1  各种BN-Inception模型分类效果对比

      Table 1.  Comparison of classification effects of various BN-Inception models

      模型正确率达到 72.2 % 所需迭代次数最高正确率 (%)
      Inception$ 31.0 \times 10^6 $72.2
      BN-Inception$ 13.3 \times 10^6$72.7
      BN-x5$2.1 \times 10^6$73.0
      BN-x30$2.7 \times 10^6$74.8
      BN-x5-sigmoid69.8
    • 深度神经网络中加入BN结构可以使每一层的输入所服从的概率分布在各个梯度更新过程中保持不变, 解决中间协变量迁移问题, 使网络每一层的输入向量的值不会过大, 以至于使用sigmoid激活函数时, sigmoid激活函数进入饱和区引发梯度消失现象. BN变换过程的变换函数的梯度都可以求解, SGD可以在BN变换层正常执行, 既可以实现白化运算相似的效果, 也不会出现无法求解梯度的现象. 最重要的是, 使用BN可以使训练过程不再对网络参数的初值敏感, 梯度下降过程收敛速度成倍加快, 训练模型预测精度也得到一定程度的提高. 但单独使用BN结构不会得到最好的学习效果, 需同时增大梯度迭代过程中的学习率设置值、去除dropout过程等神经网络训练常用的正则化手段. BN结构因为简单有效而应用到很多领域, 但也存在一些问题, 如学习结果依赖于mini-batch的设置, 无法使用单个样本进行训练, 训练和推理时计算过程不一样, 于是各国学者提出了很多和BN相关的归一化结构和算法, 但是到目前为止, BN仍是深度神经网络中应用最广泛的归一化手段.

    • BN虽然应用方法简单、效果显著, 但对mini-batch数据集过分依赖, 在mini-batch很小甚至是单个样本时, mini-batch中的数据服从非独立同分布时, 应用BN时效果很差, 而且BN在神经网络进行训练和推理时的计算过程不同, 也会影响BN的效果. 因此相继提出了很多BN相关的结构和算法, 解决了BN存在的一些问题, 在某些特定领域应用效果优于BN, 本节对图3所示的几种BN重要相关结构与算法进行了分析归纳.

      图  3  批归一化相关结构与算法

      Figure 3.  Correlation structure and algorithms of batch normalization

    • BN依赖于mini-batch数据集大小的选择, 要求mini-batch中样本个数不能过少. mini-batch数据集上得到的统计分布无法代表整个训练数据集服从的概率分布, 因而训练效果不如基于整个训练数据集的迭代效果, 尤其在训练过程的初始迭代阶段. 为了解决这一问题, Arpit等[21]于2016年提出了归一化传播(Normalization propagation, NormProp)算法. 这种归一化方法不依赖于mini-batch中的样本个数, 可以减少BN中训练和推理时计算过程不同所带来的参数迁移问题. NormProp将神经网络的输入数据归一化, 使其服从标准正态分布, 然后将服从正态分布的数据在网络中逐层传播, 不需要和BN一样在网络中的每一层都计算mini-batch的均值和方差, 在计算速度上明显优于BN, 且网络中每一层的输出都服从标准正态分布, 解决了中间协变量迁移问题.

    • 根据中心极限定理, 现实世界中的数据在样本足够多时, 一般都服从正态分布, 经过变换可转化为服从标准正态分布, 通过ReLU激活函数后得到的输出服从整流高斯分布. 文献[21]在ReLU作为激活函数的网络中添加NormProp. 算法具体结构如图4所示.

      图  4  归一化传播算法结构图

      Figure 4.  Structure diagram of normalization propagation

      对于一个训练数据集$ \left\{ {{{{{ x}}}}_i } \right\}_{i = 1}^N $, NormProp算法将神经网络的输入样例进行归一化, 既可以使用整个训练数据集进行归一化(在训练数据的全局均值和方差可以获得的情况下), 使用均值$ {{ \mu}} = \dfrac{1}{N}\sum\nolimits_{i = 1}^N {{{{ x}}_i}} $和方差$ {{{ \sigma}} ^2} = \dfrac{1}{N}\sum\nolimits_{i = 1}^N {{{({{{ x}}_i} - {{ \mu}} )}\rm^T}({{{ x}}_i} - {{ \mu}} )} $; 也可以使用小批量数据集进行归一化(很多数据是以数据流的方式获得, 无法在任何时间都得到整个数据集的均值和方差的无偏估计), 使用均值$ {{ \mu}} = \dfrac{1}{m}\sum\nolimits_{i = 1}^m {{{{ x}}_i}} $和方差$ {{{ \sigma}} ^2} =\dfrac{1}{m}\sum\nolimits_{i = 1}^m$$ {{{({{{ x}}_i} - {{ \mu}} )}^{\rm{T}}}} ({{{ x}}_i} - {{ \mu}} ) $. 则归一化后

      $$ {{ x}}_i \leftarrow \frac{{{{ x}}_i - {{ \mu}} }}{{\sqrt {{{ \sigma}} ^2 } }} $$ (20)

      图4中, $ {{ x}}_i $为已经被归一化为服从正态分布的输入. 使用NormProp算法时经过ReLU激活函数后的输出结果为

      $$ {{{ z}}}_i {\rm{ = ReLU}}\left(\frac{{{{{\gamma}}} (W{{ x}}_i )}}{{\left\| W \right\|_2 }} + {{{\beta}}} \right) $$ (21)

      其中, $ W \in {\bf R}^{P \times K} $是连接边权值矩阵, $ {{{\beta}}} \in {\bf R}^P $是偏置向量, $ {{{\gamma}}} \in {\bf R}^P $是比例系数, $ {{ x}}_i \in {\bf R}^K $是输入样例, $ K $是输入数据的维数, $ P $是输出数据的维数, $ {{ h}}_i^p $是最终输出$ {{ h}}_i $的第$ p $维分量. 输出的$ {{ h}}_i $服从整流高斯分布, 与神经网络权重$ W $以及NormProp算法引入的用于重构某一层上的输出向量值的参数$ {{{\gamma}}} ,{{{\beta}}} $有关. 但此时的输出还不服从正态分布, 还需要进行数值变换, 最终神经网络层的输出为

      $$ {{ h}}_i = \frac{1}{{\sqrt {\displaystyle\frac{1}{2}\left(1 - \frac{1}{\pi }\right)} }}\left[ {{\rm{ReLU}}\left(\frac{{{{{\gamma}}}(W{{ x}}_i )}}{{\left\| W \right\|_2 }} + {{{\beta}}} \right) - \sqrt {\frac{1}{{2\pi }}} } \right] $$ (22)

      神经网络层每个神经元的输出为

      $$\begin{split} h_{i, p} =& \frac{1}{{\sqrt {\displaystyle\frac{1}{2}\left(1 - \frac{1}{\pi }\right)} }}\times\\&\left[ {{\rm{ReLU}}\left(\frac{{\gamma _p (W_p { x}_i )}}{{\left\| {W_p } \right\|_2 }} + \beta _p \right) - \sqrt {\frac{1}{{2\pi }}} } \right] \end{split}$$ (23)

      神经网络层的输出服从正态分布, 作为下一层神经网络层的输入值, 解决了中间协变量迁移问题. 注意这里的$ {{ x}}_i $可以代表神经网络的输入值, 也可代表神经网络中某一隐层的输入值, 即在网络中的每一层都进行归一化传播. 在隐层到隐层之间进行归一化传播时, 假设第$ l $个隐层从前面层传递过来的服从正态分布的输入是$ {{ h}}_i^{l - 1} $, 归一化传播后输出为$ {{ h}}_i^l $, 也服从正态分布, 这样逐层传递后, 网络中每一层的输出都服从正态分布.

    • 实验使用NIN (Network in network) 网络[22]作为基础模型, 对于初始学习率, 网络每进行10次迭代学习率减少1/2, 使用动量为0.9的SGD进行训练. 在CIFAR-10、CIFAR-100[23]和SVHN数据集[24]上进行分类实验.

      在CIFAR-10数据集上进行加入BN层和NormProp环节的NIN网络隐层输入均值稳定性对比实验, 相比于加入BN层的网络, 加入NormProp环节的NIN网络可以实现网络较低隐层输入均值更稳定的分布, 避免中间协变量迁移现象的能力更强, 学习得到的最终网络所有隐层的输入均值更接近于0, 网络可以实现更稳定的收敛, 尤其是在训练的初始迭代阶段.

      分别对加入NormProp环节的NIN网络使用batch size为1, 50, 100, 250的数据集进行训练, 最终得到的模型收敛到相同的精度, 可见batch size的大小对加入NP环节的网络没有影响.

      对比分析了NIN网络、加入NormProp环节的NIN网络(NIN+NP)、加入BN层的NIN网络(NIN+BN)、Maxout网络[25]在3个数据集上的分类效果, 结果如表2所示, 表中数据为测试误差.

      表 2  NIN + NP与相关模型分类效果对比 (%)

      Table 2.  Comparison classification effects of NIN + NP and related models (%)

      模型CIFAR-10CIFAR-100SVHN
      NIN10.4735.682.35
      NIN + NP9.1132.191.88
      NIN + BN9.4135.322.25
      Maxout11.6838.572.47

      加入NormProp环节的NIN网络在3个数据集上的分类效果都优于其他网络. 并且在相同的实验设备上进行实验时, 加入BN层的NIN网络训练一个周期需要96 s, 而加入NormProp环节的网络训练一个周期需要84 s, 训练速度更快.

    • NormProp对mini-batch数据集大小设置没有依赖性, 在神经网络中应用NormProp算法时, 训练和推理时的计算过程相同. NormProp可以应用于使用任何激活函数和任何目标函数进行训练的神经网络, 使用归一化初始化方法[26]来设置所有连接边权值矩阵的初值. 和BN一样, NormProp可以和任何神经网络优化算法共用. 每次抽取样本前, 对训练数据集进行彻底随机置换同样可以提升网络的学习性能. 实验表明, 在使用NormProp的网络中使用dropout方法不能改进训练结果, 这可能是由于神经网络中层输出的分布会被dropout改变而影响到NormProp算法. 使用NormProp的网络相比于加入BN层的网络, 可以实现更稳定的收敛, 而且不再计算每一层在mini-batch上的均值和方差, 计算复杂性降低, 加快了训练速度, 模型精度上也有所提升.

    • BN在mini-batch数据集中含有的样本数量很少或者包含服从非独立同分布的样本时, 有效性明显降低. 因为这时在神经网络的训练过程中, 每个mini-batch数据集服从的统计分布, 与整个训练数据集所服从的概率分布可能相差很多, 各个mini-batch数据集所服从的统计分布也会不同, 使用这些mini-batch数据集的均值和方差对输入数据进行归一化, 并不能保证神经网络在各个训练周期内每一层的输入服从相同的概率分布, 无法解决中间协变量迁移问题.

      Ioffe等在文献[27]中提出了批量重归一化(Batch renormalization, BR)的方法, 在网络训练的过程中, BR的归一化过程既使用了当前所用mini-batch数据集的均值和方差, 也考虑了以前网络训练使用过的mini-batch数据集的均值和方差的作用, 避免了因为mini-batch数据集和整个训练数据集所服从的概率分布不同而影响归一化过程的问题, 而且训练和推理时的计算过程更相近. 当mini-batch数据集包含的样例个数很少或者其中的样例服从非独立同分布时, 神经网络使用BR比使用BN学习结果更好.

    • 在神经网络输入均值为$ {{ \mu}} ^j $、标准差为$ {{ \sigma}} ^j $的第$ j $个mini-batch数据集时, 对于输入样例$ {{ x}}_i^j $, BR将$ {{ x}}_i^j $使用当前mini-batch数据集的均值$ {{ \mu}} ^j $和标准差$ {{ \sigma}} ^j $进行归一化, 并且对滑动平均均值$ {{ \mu}} $和滑动平均标准差$ {{ \sigma}} $的归一化的结果,与一个仿射变换关联起来

      $$ \frac{{{{ x}}_i - {{ \mu}} }}{{{ \sigma}} } = \frac{{{{ x}}_i - {{ \mu}} ^j }}{{{{ \sigma}} ^j }} \times r + d $$ (24)

      其中,

      $$ r = \frac{{{{ \sigma}} ^j }}{{{ \sigma}} },\;\;d = \frac{{{{ \mu}} ^j - {{ \mu}} }}{{{ \sigma}} } $$ (25)

      对式(24)两边同时取期望, 则如果$ {{ \mu}} {\rm{ \,=\, }}{\rm E}[{{ \mu}} ^j ] $, $ {{ \sigma}} {\rm{\, =\, }}{\rm E}[{{ \sigma}} ^j ] $(这里$ {{ \mu}} $$ {{ \sigma}} $不是随机变量, 是常数值, 取期望后为其本身的值), 则$ {\rm E}[r] = 1 $, $ {\rm E}[d] = 0 $. 所以, 可以在使用mini-batch数据集对网络进行训练的过程中, 固定$ r $$ d $的值, 可将$ {{ \mu}} ^j ,{{ \sigma}} ^j $与滑动均值和滑动标准差$ {{ \mu}} ,{{ \sigma}} $联系起来, BR算法的具体结构如图5所示.

      图  5  批量重归一化算法结构图

      Figure 5.  Structure diagram of batch renormalization

      BR每次在训练数据集$ \left\{ {{{{{ x}}}}_i \in {\bf R}^K } \right\}_{i = 1}^n $上选取一个mini-batch数据集对网络进行训练, 一共选取$ J $个mini-batch数据集, 假定第$ j $个mini-batch集合为${ X}^j = \{ {{{{{ x}}}}_i^j \in {\bf R}^k } \}_{i = 1}^{m_j } $, $ j \in \left\{ {1, \cdots , J} \right\} $. $ {{{{ x}}}}_i^j $对应的随机变量是$ {{ X}}_i^j $, mini-batch中随机向量$ {{ X}}_i^j $的第$ k $个随机分量的实现为$ {{x}}_{i, k}^j ,$$ k \in \left\{ {1, \cdots , K} \right\} $. 第$ j $个mini-batch数据集输入网络之前, 网络已经使用多个mini-batch数据集训练过, 使用这些mini-batch数据集的均值和标准差以迭代的方式计算出滑动平均均值$ {{ \mu}} = (\mu _{ \cdot ,1}^{} ,\cdots,\mu _{ \cdot , K}^{} ) $和滑动平均标准差$ {{ \sigma}} = \left( {\sigma _{ \cdot ,1}^{} , \cdots ,\sigma _{ \cdot , K}^{} } \right) $. 输入$ {{ x}}_i^j $所在的第$ j $个mini-batch数据集. BR计算均值和标准差时是针对每一维数据分量进行的, 则均值为$ {{ \mu} }^j = ( {\mu _{ \cdot ,1}^j ,\cdots,\mu _{ \cdot , K}^j } ) $, 每一维分量为

      $$ \mu _{ \cdot , k}^j = {\rm E}\left[X_{i, k}^j \right] = \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {x_{i, k}^j } $$ (26)

      标准差为$ {{ \sigma} }^j = ( {\sigma _{ \cdot ,1}^j , \cdots ,\sigma _{ \cdot , K}^j } ) $, 标准差的每一维分量为

      $$\begin{split} \sigma _{ \cdot , k}^j =& \sqrt {{ Var}[X_{i. k}^j ] + \varepsilon }=\\& \sqrt {\frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {(x_{i, k}^j } - \mu _{ \cdot , k}^j )^2 + \varepsilon } \end{split} $$ (27)

      使用$ \mu _k^j $, $ \sigma _k^j $, $ \mu _{ \cdot , k} $, $ \sigma _{ \cdot , k} $计算出仿射变化系数

      $$ r_k^j \leftarrow stop {\text{-}} gradient\left(clip_{\left[\frac{1}{r_{\max }} , r_{\max } \right]} \left(\frac{{\sigma _k^j }}{{\sigma _k }}\right)\right) $$ (28)
      $$ d_k^j \!\! \leftarrow stop {\text{-}} gradient(clip_{[ - d_{\max } , d_{\max } ]} \left(\frac{{\mu _k^j - \mu _k }}{{\sigma _k }}\right)\!\!\!\! $$ (29)

      其中, $stop {\text{-}} gradient (\cdot)$表示给定训练步骤, 取为常数, 不参与梯度误差反向传播过程.

      然后计算出

      $$ \hat {{ x}}_i^j \leftarrow \frac{{{{ x}}_i^j - {{ \mu}} ^j }}{{{{ \sigma}} {}^j}} \times { r}^j + { d}^j $$ (30)

      则BR的最终输出为

      $$ \tilde {{ x}}_i^j \leftarrow {{ \sigma}} ^j \hat {{ x}}_i^j + {{{ \beta}}} ^j $$ (31)

      计算得向量$ \hat {{ x}}_i^j $的每一维为

      $$ {\hat x}_{i, k}^j = \frac{{x_{i, k}^j - \mu _{ \cdot , k}^j }}{{\sigma _{ \cdot , k}^j }} \times r_k^j + d_k^j $$ (32)

      输出的每一维为

      $$ {\tilde x}_{i, k}^j = \gamma _k^j {\hat x}_{i, k}^j + \beta _k^j $$ (33)

      最后更新滑动平均均值和滑动平均标准差

      $$ \mu _k = \mu _k + \alpha (\mu _k^j - \mu _k )\; $$ (34)
      $$ \sigma _k = \sigma _k + \alpha (\sigma _k^j - \sigma _k ) $$ (35)

      以备输入下一个mini-batch数据集时使用. 与BN相同, 在神经网络中应用BR时, 在网络的每一层都进行BR计算, 可以代表神经网络的输入, 也可以代表网络的中间隐层的输入. BR的训练和推理过程如算法3所示.

      算法3. BR的训练和推理过程

      输入. 神经网络N 和可训练参数$ \theta $, 使用$ J $个mini-     batch对网络进行训练, 网络中所有层的输入     (包括神经网络的输入和每一个隐层的输入)     $ \{ {{ x}}_i^j \in {\bf R}^K \} $都进行BR计算; BR 需要学习     的参数$ { \gamma} $$ { \beta} $; 当前滑动均值$ { \mu} $和标准差$ { \sigma} $,      滑动平均更新率$ \alpha $, 允许的最大校正值$r_{\max } , $     $ d_{\max } $.

      训练.

       1:  For $ j = 1, \cdots , J $ Do

       2:   For $ k = 1, \cdots , K $ Do

       3:    $\mu _{ \cdot , k}^j \leftarrow \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {x_{i, k}^j }$

           $\sigma _{ \cdot , k}^j \leftarrow \sqrt {\varepsilon + \frac{1}{{m{}_j}}\sum\limits_{i = 1}^{m_j } {(x_{i, k}^j - \mu _{i, k}^j )^2 } }$

       4:    $ r_k^j \!\leftarrow\! stop{\text{-}}gradient (clip_{[\frac{1}{r_{\max }} , r_{\max } ]} (\frac{{\sigma _k^j }}{{\sigma _k }})) $        $d_k^j \!\leftarrow$        $stop{\text{-}}gradient (clip_{[ - d_{\max } , d_{\max } ]} (\frac{{\mu _k^j - \mu _k }}{{\sigma _k }})) $

       5:    $\hat x_k^j \leftarrow \frac{{x_k^j - \mu _k^j }}{{\sigma _k^j }} \times r_k^j + d_k^j$        $\tilde x_{i, k}^j \leftarrow \gamma _{ \cdot , k}^j \hat x_{i, k}^j + \beta _{ \cdot , k}^j $

       6:    $ \begin{aligned}& \mu _k = \mu _k + \alpha (\mu _k^j - \mu _k )\\ &\sigma _k = \sigma _k + \alpha (\sigma _k^j - \sigma _k ) \end{aligned} $//更新滑动平均

       7:  End For

       8:  优化参数$ \theta $$ \{ \gamma _{ \cdot , k}^j , \beta _{ \cdot , k}^j \} _{k = 1}^K $

       9: End For

      推理.

         For $ j = 1, \cdots , J $ Do

          $\tilde x_k \leftarrow \gamma _k \times \frac{{x_k - \mu _k }}{{\sigma _k }} + \beta _k$ //式中, $ \mu _k , \sigma _k , $      $\gamma _k , \beta _k $是训练过程完成时得到的$ \mu _k , \sigma _k , $      $ \gamma _k , \beta _k $

         End For

    • 实验使用Inception网络, 在ImageNet数据集[28]上进行训练. BR在前5 000次迭代中, 令$ r_{\max } = 1 $, $ d_{\max } = 1 $, 然后逐渐增加$ r_{\max } $$ d_{\max } $的值, 使得在40 000次迭代后$ r_{\max } = 3 $, 25 000次迭代后$ d_{\max } = 5 $. 使用batch size为32的50个mini-batch数据集分别对加入BN层和加入BR层的Inception网络进行训练, 在130 000次迭代后, 加入BR层的Inception网络模型精度稳定在78.5%, 加入BN层的Inception网络模型精度稳定在到78.3%, 说明在一般大小的mini-batch数据集上, 使用BR和BN的效果相近.

      将batch size大小设置为4, 加入BN层的Inception网络模型精度明显低于基础Inception网络, 训练时间也更长, 在210 000次迭代后, 模型精度稳定在74.2%. 使用BR代替BN之后, 在130 000次迭代后, 模型精度稳定在76.5%, 使用BR的模型效果优于使用BN的效果, 但是精度低于使用batch-size为32时的网络, 可见使用BR的网络虽然在使用数据量很小的mini-batch数据集进行训练时效果优于使用BN的网络和基础网络, 但是没有使用更大批量的mini-batch数据集进行训练时效果好.

      当mini-batch数据集中包含服从非独立同分布的样本时, 网络使用BN的效果不好, 但是对于某些任务来说, 样本之间具有依赖关系是必不可少的, 如度量学习(Metric learning)[29]场景下的数据. 实验中从16类数据集的每一类中采样两个样本, 构成数据之间存在相关关系的batch-size为32的mini-batch数据集对网络进行训练. 使用BN的网络在40 000次迭代后可以达到最高正确率67.0%, 但迭代次数继续增加时, 正确率逐渐下降, 模型出现了过拟合现象. 使用BR的网络和使用服从独立同分布的mini-batch数据集进行训练时效果相同, 在120 000次迭代后精度稳定在78.6%.

    • 在BR变换函数上梯度可以顺利求解, 同BN一样, 使用BR的网络对参数初值不再敏感, 可以使用更大的学习率进行训练, BR运算在网络中的位置和BN类似, 即在预激活之后、激活函数之前. 实验表明在mini-batch数据量很少时, 例如每个mini-batch只有4个训练样本, 或者mini-batch中的数据不服从独立同分布时, 使用BR的网络性能明显优于使用BN的网络, 收敛速度更快, 模型精度更高. 并且BR比BN更适合应用于循环神经网络中.

    • 文献[30]提出了一种BN的扩展算法–逐步归纳批量归一化(Diminishing batch normalization, DBN), DBN在神经网络训练过程中, 以滑动平均的方式更新归一化过程所用的均值和方差, BN层根据所有网络过去使用过的mini-batch数据集调整输出, 而不仅是根据当前输入网络的mini-batch数据集. 使用这种方式可以解决Bottou等在文献[31]中指出的问题, BN层的输出并不仅只依赖于当前的mini-batch数据集, 也受神经网络此前使用过的mini-batch数据集影响. 当把DBN中的参数设定为某个适当值后, 就可以得到BN的标准形式.

    • 对于一个神经网络, 使用DBN之后, 神经网络优化的目标函数为

      $$ \min \ell (\theta , \lambda ) = \sum\limits_{i = 1}^N {\ell _i } ({{ x}}_i :\theta ,{{ \mu}} ,{{ \sigma}} ) $$ (36)

      其中, $ {{ \mu}} $, $ {{ \sigma}} $是DBN使用的滑动平均均值和滑动平均标准差, $ \theta = (W,\gamma ,\beta ) $是神经网络训练参数的集合. DBN算法结构图如图6所示.

      图  6  逐步归纳批量归一化算法结构图

      Figure 6.  Structure diagram of diminishing batch normalization

      DBN算法每次在训练数据集$ \left\{ {{{{{ x}}}}_i \in {\bf R}^K } \right\}_{i = 1}^n $上选取一个mini-batch数据集对网络进行训练, 假定共选取了$ J $个mini-batch数据集, 第$ j $个mini-batch集合为$ X^j = \{ {{{{{ x}}}}_i^j \in {\bf R}^K } \}_{i = 1}^{m_j } $, $ j \in \left\{ {1, \cdots , J} \right\} $. $ {{{{ x}}}}_i^j $对应的随机变量是$ {{ X}}_i^j $, mini-batch数据集中随机向量$ {{ X}}_i^j $的第$ k $个随机分量的实现为$ {{x}}_{i, k}^j $, $ k \in \left\{ {1, \cdots , K} \right\} $. DBN针对$ { x}_i^j $ 的每一维分量求均值和方差, 第$ j $个mini-batch数据集上的均值向量$ {{ \mu}} ^j = ( {\mu _{ \cdot ,1}^j , \cdots ,\mu _{ \cdot , K}^j } ) $, 方差向量$ ({{ \sigma}} ^j )^2 = ( {(\sigma _{ \cdot ,1}^j )^2 , \cdots ,(\sigma _{ \cdot , K}^j )^2 } )$, 均值向量的每一维分量为

      $$ \mu _{ \cdot , k}^j = {\rm E}\left[X_{i, k}^j \right] = \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {x_{i, k}^j } $$ (37)

      方差向量的每一维分量为

      $$ \left(\sigma _{ \cdot , k}^j \right)^2 = {\rm{Var}}\left[X_{i. k}^j \right] = \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } \left(x_{i, k}^j - \mu _{B, k}^j \right)^2 $$ (38)

      其中, $ {{ \mu}} $, $ {{ \sigma}} $为滑动平均均值和滑动平均标准差, 是由前面的$ j - 1 $次迭代输入到神经网络的所有mini-batch数据集的均值和方差使用滑动平均的方法计算得到的. 在当前第$ j $次迭代, 神经网络输入第$ j $个mini-batch数据集, 使用均值$ {{ \mu}}^j $$ {{ \sigma}} ^j $更新DBN滑动平均均值

      $$ {{ \mu}} = \alpha ^j {{ \mu}} ^j + \left(1 - \alpha ^j \right){{ \mu}} $$ (39)

      和滑动平均标准差

      $$ {{ \sigma}} = \alpha ^j {{ \sigma}} ^j + \left(1 - \alpha ^j \right){{ \sigma}} $$ (40)

      其中, $ \alpha ^j $是人为设定的超参数. DBN使用滑动平均均值和滑动平均标准差对输入$ {{ x}}_i^j $进行归一化, 并使用$ {{{\gamma}}} ^j $$ {{{\beta}}} ^j $进行平移和比例变换, 得到输出向量

      $$ \tilde {{ x}}_i^{j + 1} = {{{\gamma}}} ^j \times \frac{{{{ x}}_i^{j + 1} - {{ \mu}} }}{{ \sigma}} + {{{\beta}}} ^j $$ (41)

      其中, $ {{ x}} $是DBN层的输入, 可以是神经网络的输入向量, 也可以是神经网络某一隐层的输入向量. 然后对神经网络的训练参数$ \theta ^j $(包含$ {{{W}}}^j ,{{{\gamma}}} ^j ,{{{\beta}}} ^j $)使用BP算法进行更新, 得到新的训练参数$ \theta ^{j + 1} $, 然后神经网络进行下一个训练周期, 输入第$ j + 1 $个mini-batch数据集. 在网络中使用DBN与使用BN时相同, 在网络中的所有层都要执行归一化过程, 且在预激活之后、激活函数之前执行, 这里为了使得概念描述更清楚, 没有把预激活过程表示出来. DBN算法如算法4所示.

      算法4. DBN的训练和推理过程

      输入. 神经网络可训练参数$ \theta $; 使用$ J $个mini-batch     对网络进行训练, 网络中所有层的输入(包括神     经网络的输入和每一个隐层的输入)$ \{ { x}_i^j\! \in\! {\bf R}^K \} $     都进行DBN计算; DBN需要学习的参数$ { \gamma} $和     $ { \beta} $; 当前滑动均值$ { \mu} $和标准差$ { \sigma} $, 滑动平均更     新率$ \alpha. $

      训练.

      1: For $ j = 1, \cdots , J $ Do

      2:   For $ k = 1, \cdots , K $ Do

      3:     $ \mu _{ \cdot , k}^j \leftarrow \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {x_{i, k}^j } $

           $ \sigma _{ \cdot , k}^j \leftarrow \sqrt {\varepsilon + \frac{1}{{m{}_j}}\sum\limits_{i = 1}^{m_j } {(x_{i, k}^j - \mu _{i, k}^j )^2 } } $

      4:      $ \mu _k = \alpha ^j \mu _k^j + (1 - \alpha ^j )\mu _k \,$//更新滑动平均

            $\sigma _k = \alpha ^j \sigma _k^j + (1 - \alpha ^j )\sigma _k \,$//更新滑动平均

      5:     $ \hat x_{i, k}^j \leftarrow \dfrac{{x_{i, k}^j - \mu _k }}{{\sigma _k }} $

           $ \tilde x_{i, k}^j \leftarrow \gamma _{ \cdot , k}^j \hat x_{i, k}^j + \beta _{ \cdot , k}^j $

      6:   End For

      7:   使用梯度下降算法更新参数$ \theta ^j $$ { \gamma} ^j , { \beta} ^j $

      8: End For

      推理.

        For $ j = 1, \cdots , J $ Do

          $ \tilde x_k \leftarrow \gamma _k \dfrac{{x_k - \mu _k }}{{\sigma _k }} + \beta _k $ // 式中,$ \mu _k , \sigma _k , \gamma _k , $      $ \beta _k $是训练过程完成时得到的$ \mu _k , \sigma _k , \gamma _k , \beta _k $

        End For

    • 使用MNIST[32]、CIFAR-10和NI数据集[33]进行实验. 针对MNIST和NI数据集使用4层全连接前馈神经网络模型, 激活函数为ReLU. 针对CIFAR-10数据集使用一个足够复杂的CNN, 所有的训练参数都是随机初始化的, mini-batch的batch size都为100, 初始学习率是0.01. $ \alpha ^j $值的确定可以使用两种方式: 1)对于所有的训练周期$ j $都使用一个小于1的常数, 2)随着训练周期增加逐渐减少$ \alpha ^j $, 例如$ \alpha ^j=1/j $, 实验效果如表3所示.

      表 3  使用不同$ \alpha ^{(j)} $值的模型分类效果对比

      Table 3.  Comparison of classification effects using different $ \alpha ^{(j)}$ in model

      $ \alpha ^{(j)} $MNISTNICIFAR-10
      训练周期误差 (%)训练周期误差 (%)训练周期误差 (%)
      1522.70587.694517.31
      0.75691.91677.374917.03
      0.5691.84807.464417.11
      0.25461.91387.324317.00
      0.1481.90667.364817.10
      0.01511.94747.474316.82
      0.001481.95987.434616.28
      $ 1/j $592.10787.453717.26
      $ 1/j^2 $532.00747.594417.23
      019924.275326.09279.34

      $ \alpha ^j $$ 1/j $$ 1/j^2 $, 或者取小于1的常数时, 使用DBN的神经网络得到的实验效果都优于使用BN的. 可以看出, 归一化时考虑过去训练周期使用过的数据集是有作用的, 但是, $ \alpha ^j $取0时, 测试误差很大, 可见只考虑过去训练周期使用过的数据, 而不考虑当前训练周期使用的数据是不可行的. 文中还对使用了BN和DBN之后, 算法的稳定性进行了分析, 实验发现, 使用$ \alpha ^j < 1 $时的DBN比BN算法更稳定, 而且$ \alpha ^j $越小, 算法越稳定, 但是不能取0. 可见, 归一化时越多考虑神经网络过去训练周期使用过的训练数据, DBN算法的效果越稳定.

    • DBN在训练时使用滑动平均的方式获得滑动平均均值$ \mu $和滑动平均标准差$ \sigma $, 训练和推理的过程中都考虑了多个mini-batch作用, 此时$ \mu $, $ \sigma $不仅和当前使用的mini-batch统计特性有关系, 和过去各个训练周期神经网络训练使用的mini-batch数据集也有关系, 归一化层的输出更能反映整个数据集的概率分布. 当取$ \alpha ^j $小于1时, 使用DBN的网络比使用BN的精度更高, 且$ \alpha ^j $取值越小(不可为0), 网络越稳定.

    • BN对于mini-batch数据集过分依赖, 无法应用到在线学习任务中(此时mini-batch数据集包含的样例个数为1), 在递归神经网络(Recurrent neural network, RNN)[34]中应用BN的效果也不明显, RNN多用于自然语言处理任务, 网络在不同训练周期内输入的句子, 句子长度往往不同, 在RNN中应用BN时, 在不同时间周期使用mini-batch数据集的大小都需要不同, 计算复杂, 而且如果一个测试句子比训练集中的任何一个句子都长, 在测试阶段递归神经网络预测性能会出现严重偏差. 文献[35]基于BN的思想提出层归一化(Layer normalization, LN), 针对单个样本对每一层内的神经元进行归一化. BN和LN的对比图如图7所示.

      图  7  批归一化和权重归一化对比图

      Figure 7.  Comparison graph of batch normalization and layer normalization

      在神经网络中应用BN时, 是对神经网络输入数据的每一维分别进行归一化处理, 使用多个输入样本的相同维数据计算出这一维数据的均值和方差, 用于对本维数据进行归一化处理, 所以对于mini-batch数据集的依赖性很强. 而在LN中, 使用单个样本对神经网络某一隐层的所有单元计算层归一化统计量, 在训练和推理阶段具有完全相同的计算过程, 应用到递归神经网络中时在每个训练周期内单独计算归一化统计量, 效果优于BN.

    • 考虑一个前馈神经网络的第$ l $个隐层, 令$ {{ z}}^l $表示这一层网络进行预激活之后得到的向量, 由本层输入向量$ {{ h}}^{l - 1} $和权重矩阵$ W^l $的向量积得到. 则隐层$ l $的第$ p $个神经元接收到的预激活标量值为

      $$ z_p^l = W_p^l {{ h}}^{l - 1} $$ (42)

      隐层$ l $$ p $个神经元的输出为

      $$ h_p^l = {f}\left(z_p^l + b_p^l \right) $$ (43)

      其中, $ {f} $是非线性激活函数, $ b_p^l $是神经网络$ l $层的第$ p $个神经元的输入偏置向量. LN算法结构如图8所示.

      图  8  层归一化算法结构图

      Figure 8.  Structure diagram of layer normalization

      LN使用的均值和标准差为

      $$ \mu ^l = \frac{1}{P}\sum\limits_{p = 1}^P {z_p^l } \quad\quad\quad\quad\quad$$ (44)
      $$ \sigma ^l = \sqrt {\frac{1}{P}\sum\limits_{p = 1}^P {\left(z_p^l - \mu^l \right)^2 } } $$ (45)

      其中, $ P $代表隐层$ l $神经元的个数, $ \mu ^l $$ \sigma ^l $都是标量. LN计算结果为

      $$ h_p^l = {f}\left(\frac{{z_p^l - \mu ^l }}{{\sigma ^l }} + b_p^l \right) $$ (46)

      当在RNN中应用LN层时, 会对隐层状态$ { h}^t $进行层归一化, 预激活值$ z^t $

      $$ {{ z}}^t = W_{hh} {{ h}}^{t - 1} + W_{xh}{{ x}} ^t $$ (47)

      其中, $ W_{hh} $是隐层到隐层连接边权值矩阵, $ W_{xh} $为输入到隐层的连接边权值矩阵. 则LN所用均值和方差为

      $$ \mu ^t = \frac{1}{P}\sum\limits_{p = 1}^P {z_p^t } \quad\quad\quad\quad\;\;$$ (48)
      $$ \sigma ^t = \sqrt {\frac{1}{P}\sum\limits_{p = 1}^P {\left(z_p^t - u^t \right)^2 } } $$ (49)

      归一化后隐层的输出为

      $$ h_p^t = { f}\left[\frac{g}{{\sigma _t }} \odot \left(z_p^t - \mu ^t \right) + b\right] $$ (50)

      其中, $ \odot $表示两个维数相同的向量对应分量逐元素乘积.

    • 文献[35]中针对RNN进行了层归一化实验, 包括图像–语言顺序嵌入[36]、机器问答[37]、语义属性编码[38]等. 在机器问答实验中, 基础网络使用Hermann等[39]构建的模型, 在其中的长短时记忆(Long short term memory, LSTM)[40]递归神经网络部分分别加入LN环节和BN层, 基础网络模型在400 000次迭代后误差稳定, 加入BN层后在140 000次迭代后误差稳定, 而基础网络加入LN环节后在60 000次迭代后实现误差稳定, 模型收敛速度更快, 而且模型分类正确率更高, 证明了LN在RNN中的促进作用.

      LN在生成式模型DRAW (Deep recurrent attention writer)[41]中也有一定的促进作用, 文中使用包含256个LSTM隐层单元的DRAW网络作为基础网络模型, 并在LSTM部分加入LN环节, LN-DRAW模型的收敛速度几乎是基础网络模型的2倍, 而且模型精度更高. 在CNN中也进行了实验验证, 实验表明在CNN中加入LN不如在CNN中加入BN的效果好.

    • LN对每一层内的神经元使用单一样例进行归一化, 在训练和推理阶段计算过程相同, 可以更好地应用到在线学习任务和RNN中. 应用LN时对神经网络中的所有层都使用LN, 对神经网络输入数据的计算过程和对隐层输入数据的计算过程相同. 在RNN中使用LN的效果明显优于使用BN的效果, 网络收敛速度更快, 训练精度更高. LN在生成式模型中也有极强的促进作用, 但是在CNN中, LN不如BN的效果好.

    • 文献[42]提出了连接边权值行向量归一化(Weight normalization, WN), 对神经网络中的连接边权值矩阵$ W = [{{{w}}}_1 ,{{{w}}}_2 , \cdots ,{{{w}}}_P ]^{\rm{T}} $的各个行向量$ {{{w}}}_p $, $ p \in \left\{ {1,2, \cdots , P} \right\} $进行重新参数化, 解耦行向量的长度和方向, 通过对神经网络中的连接边权值矩阵各个行向量的重新参数化, 可以约束梯度取值在一定范围内, 改善梯度下降过程的稳定性, 加快SGD的收敛速度. WN过程与mini-batch数据集的设置无关, 可以更好地应用到RNN和一些对噪声敏感的神经网络模型中, 如深度强化学习和深度生成式模型, 这些模型中使用BN的效果都不够好. 而且WN计算复杂度小, 允许在相同的时间内执行更多的迭代次数.

    • 一般的神经网络中每一个神经元$ p $的输出值为

      $$ h_p = {f}\left({{{w}}}_p {{ x}} + b_p \right) $$ (51)

      其中, $ {{ x}} $是神经元$ p $的输入向量, $ {{ x}} $可以是神经网络的输入, 也可以是神经网络中某一层的输入. $ {{{w}}}_p $是神经元$ p $的权值向量, $ b_p $是标量偏置项, $ h_p $是神经元$ p $的标量输出值. SGD优化神经网络目标函数时, 需求解目标函数对$ {{{w}}}_p $$ b_p $的偏导数.

      WN计算过程如下: 引入一个和$ {{{w}}}_p $维数相同的参数向量$ {{{v}}}_p $和一个标量$ g_p $, 对神经网络中的连接边权值行向量$ {{{w}}}_p $进行重新参数化

      $$ {{{w}}}_p = \frac{{g_p }}{{||{{{v}}}_p ||}}{{{v}}}_p $$ (52)

      其中, $ ||{{{v}}}_p || $表示$ {{{v}}}_p $的欧氏范数. 令$ g_p = ||{{{w}}}_p || $, 则$ g_p $独立于参数$ {{{v}}}_p $. WN对一般的神经网络结构进行的改进如图9所示.

      图  9  权重归一化算法结构图

      Figure 9.  Structure diagram of weight normalization

      图9所示为以神经网络某一层为例的WN处理过程, 左边为未使用WN的神经网络的一般结构, 右边为使用了WN的神经网络结构. 未使用批归一化时, 第$ p $个神经元节点的输出为$h_p = {f}({{{w}}}_p {{ x}} + $$ b_p ) $, 使用WN后, 对神经网络中的连接边权值矩阵行向量进行归一化$ {{{w}}}_p = \dfrac{{g_p }}{{||{{{v}}}_p ||}}{{{v}}}_p $, 则此时第$ p $个神经元的输出为

      $$ h_p = {f}\left(\left(\frac{{g_p }}{{||{{{v}}}_p ||}}{{{v}}}_p \right){{ x}} + b_p \right) $$ (53)

      WN对神经网络进行重新参数化后, SGD对目标函数$ \ell $进行优化时, 直接求解目标函数$ \ell $对两个新引入的参数$ {{{v}}}_p $$ g_p $的偏导数

      $$ \nabla _{g_p } \ell = \frac{{\nabla _{{{{w}}}_p } \ell \cdot {{{v}}}_p }}{{||{{{v}}}_p ||}} \quad\quad\quad\quad\quad\quad$$ (54)
      $$ \nabla _{{{{v}}}_p } \ell = \frac{{g_p }}{{||{{{v}}}_p ||}}\nabla _{{{{w}}}_p } \ell - \frac{{g_p \nabla _{g_p } \ell }}{{||{{{v}}}_p ||^2 }}{{{v}}}_p $$ (55)

      其中, $ \nabla _{{{{w}}}_p } \ell $$ \ell $对连接边权值矩阵行向量$ {{{w}}}_p $进行求导. 式(55)也可以用另一种方式表示

      $$ \nabla _{{{{v}}}_p } \ell = \frac{{g_p }}{{||{{{v}}}_p ||}}M_{{{{w}}}_p } \nabla _{{{{w}}}_p } \ell $$ (56)

      其中,

      $$ M_{{{{w}}}_p } = 1 - \frac{{{{{w}}}_p {{{w}}}_p^{\rm{T}} }}{{||{{{w}}}_p ||^2 }} $$ (57)

      其中, $ M_{{{{w}}}_p } $是一个投影矩阵, $ M_{{{{w}}}_p } $起到的作用是把某个向量投影到$ {{{w}}}_p $向量的补集上, 使得到的映射向量和$ {{{w}}}_p $正交. 使用WN后的梯度更新公式表明WN实现了两个目标: 1)使用$ \dfrac{{g_p }}{{||{{{v}}}_p ||}} $改变了权重梯度的大小; 2)使用投影矩阵$ M_{{{{w}}}_p } $把梯度向量映射到与$ {{{w}}}_p $正交的方向. 这两个目标可以使梯度$ \nabla _{{{{v}}}_p } \ell $的协方差矩阵近似不变, 更易于优化. 由于投影结果和$ {{{w}}}_p $正交, 则参数$ {{{v}}}_p $的更新公式为

      $$ {{{v}}}'_p = {{{v}}}_p + \Delta {{{v}}}_p $$ (58)

      其中, $ \Delta {{{v}}}_p \propto \nabla _{{{{v}}}_p } \ell $, 因为$ \nabla _{{{{v}}}_p } \ell $中含有$ M_{{{{w}}}_p } $, 则$ \Delta {{{v}}}_p $$ {{{w}}}_p $正交. 因为$ {{{v}}}_p $$ {{{w}}}_p $成比例, 则$ \Delta {{{v}}}_p $$ {{{v}}}_p $也正交, 因此使用勾股定理的方式增加范数. 如果$ ||\Delta {{{v}}}_p ||/||{{{v}}}_p || =c $, $ c $为一个比例常数, 那么, $ ||{{{v}}}'_p || = $ $\sqrt {||{{{v}}}_p ||^2 + c^2 ||{{{v}}}_p ||^2 } =$$ \sqrt {1 + c^2 } ||{{{v}}}_p || \geq||{{{v}}}_p || $, 增长率$ \sqrt {1 + c^2 } $取决于梯度$ \nabla _{{{{w}}}_p } \ell $的大小. 如果$ \nabla _{{{{w}}}_p } \ell $过大, 那么$ c $会较大, $ {{{v}}}_p $的范数$ ||{{{v}}}_p || $会迅速增加, 从而减少$ \dfrac{{g_p }}{{||{{{v}}}_p ||}} $的值, 则$ \nabla _{{{{v}}}_p } \ell $不会过大; 如果$ \nabla _{{{{w}}}_p } \ell $很小, 那么$ \sqrt {1 + c^2 } \approx 1 $, $ {{{v}}}_p $的范数$ ||{{{v}}}_p || $停止增加, 使得$ \nabla _{{{{v}}}_p } \ell $不会过小. 使用这种机制, 梯度$ \nabla _{{{{v}}}_p } \ell $可以保持在一定范围内, 不会发生梯度爆炸或消失的情况, 更有利于神经网络训练过程. 此外, WN使神经网络训练时对学习率更加鲁棒, 如果学习率很大, $ ||{{{v}}}_p || $会迅速增大使$ \nabla _{{{{v}}}_p } \ell $下降, 使得$ {{{v}}}_p $不会过大, 造成神经网络陷入激活函数饱和区, 直到达到一个适合的、有效的学习率, 即可以选择一个更大的学习率来训练神经网络, 加快神经网络训练过程的收敛速度.

    • 在神经网络中使用BN, 可以使网络对参数初始值不再敏感, 但是WN缺少这个属性, 使用WN的网络要注意参数初始化问题. 一种有效的方法为, 使用一个mini-batch数据集在网络中以如下形式进行前向传递. 首先令

      $$ z_p = \frac{{{{{v}}}_p {{ x}}}}{{||{{{v}}}_p ||}} $$ (59)

      求出标量$ z_p $在mini-batch的数据集上的均值$ \mu [z_p ] $和方差$ \sigma [z_p ] $, 对$ z_p $进行归一化后输入到非线性激活函数中

      $$ h_p = {f}\left(\frac{{z_p - \mu [z_p ]}}{{\sigma [z_p ]}}\right) $$ (60)

      则可以初始化神经元的偏置$ g_p $$ b_p $

      $$ g_p \leftarrow \frac{1}{{\sigma [z_p ]}} \quad $$ (61)
      $$ b_p \leftarrow \frac{{ - \mu (z_p )}}{{\sigma [z_p ]}} $$ (62)

      则此时

      $$\begin{split} h_p =\;& {f}\left({{{w}}}_p {{ x}} + b_p \right) = { f}\left(\left(\dfrac{{g_p }}{{||{{{v}}}_p ||}}{{{v}}}_p \right){{ x}} + b_p \right)=\\ &{f}\left(\frac{{z_p - \mu [z_p ]}}{{\sigma [z_p ]}}\right) \end{split} $$ (63)

      这种做法保证了在神经网络训练的初始时刻, 网络中所有的输入在输入到非线性激活函数之前都具有零均值和单位方差, 实验表明这种初始化方法很有效.

    • 为了证明WN在生成式模型中的作用, 文中基础网络选取深度卷积变分自编码(Deep convolutional variational autoencoders, CVAE)[43]模型, 应用于MINST数据集和CIFAR-10数据集上. 相比于基础网络, 加入了WN的CVAE模型具有更低的变分值86.0, 而基础网络的变分值是85.5, 而且加入WN的CVAE可以收敛到更稳定的状态.

      在强化学习网络模型中, WN也有较强的促进作用, 选取DQN (Deep Q-network)[44]作为基础网络, 实验结果如表4所示, 其中数字代表模型在某游戏中获得的最高评分(Reward).

      表 4  DQN + WN与DQN模型实验效果对比

      Table 4.  Comparison of experimental results of DQN + WN and DQN

      游戏DQNDQN + WN
      Breakout410403
      Enduro1 2501448
      Seaquest7 1887 357
      Space invaders1 7792 179

      加入WN后的DQN网络可以获得更高的评分, 对抗网络模型效果更好. 和LN类似, 在CNN中应用WN的效果不如应用BN的效果.

    • 在神经网络中应用BN, 需要保存每个使用过的mini-batch训练集的均值与方差, 效率低且内存需求大. WN则不需要额外的存储空间来保存mini-batch训练集的均值和方差, 正向和反向传播实现时额外的计算开销也更小. BN基于mini-batch数据集计算均值与方差, 而不是基于整个训练集, 在每次迭代中引入了随机性, 相当于在进行梯度计算时引入了噪声, 因此, BN不能用于对噪声敏感的生成式模型以及强化学习模型. 而WN通过引入标量和向量对神经网络连接边权值矩阵行向量进行重新表示, 相比BN引入的噪声要少得多. 在生成式模型和深度强化学习模型中应用WN比应用BN时神经网络训练过程收敛速度更快, 可以获得更好的优化效果. 使用WN的网络中可以使用dropout作为正则化手段, 但要对dropout的训练机制进行相应的更改[45]. WN不具备BN把网络每一层的输出限制在某个变化范围内的能力, 因此使用WN时需要注意参数初始化策略的选择.

    • 众所周知, CNN处理图像的能力很强, RNN很适合用于自然语言处理, 但是除了这两个方面, 如在Kaggle挑战赛上[46], 随机森林[47]和支持向量机[48]明显效果更好, 只有少数的前馈神经网络(Feedforward Neural Network, FNN)占据优势, 而且这些FNN层数都很少. 表现好的FNN网络一般都是浅层神经网络, 不能学习到数据的多层抽象表示. 在CNN和RNN中使用BN, LN等手段, 可使网络训练过程更稳定, 避免受到扰动影响. 但是加入这些归一化措施的FNN在训练时仍会受到扰动的影响, 训练误差仍会有很大的方差, 高方差会阻碍学习性能, 降低学习速度. 在FNN的目标函数中引入强正则化项也不可取, 这样做会进一步增加训练误差的方差, 导致学习过程发散. 一般认为这种对扰动的敏感性导致FNN性能不如RNN和CNN.

      文献[49]提出了自归一化神经网络(Self-Normalizing Neural Networks, SNN), SNN使用缩放指数线性单元激活函数(Scaled exponential Linear Units, SeLU)引入自归一化的性质, 根据巴拿赫不动点定理, 即使在有扰动和噪声的情况下, SNN中激活函数值通过网络很多层后得到的输出值的均值和方差最终会收敛到区间(0, 1)内的不动点. SNN是深度FNN, 可以获得数据更高层次的抽象表示. SNN的自归一化特性使网络对扰动具有很强的鲁棒性, 可避免梯度消失和爆炸问题.

    • SNN结构如图10所示, 图10给出SNN中某一层上的交换过程, 由于假设DNN的输入训练样例是随机向量, 假设DNN的某一更低层的激活函数输出向量$ {X} $是随机变量, 那么预激活函数输出向量$ {{{z}}} = W{{ x}} $和该层激活函数输出向量$ {{{h}}} = {f}({{{z}}}) $也是随机向量. 假定所有低层的激活函数标量输出为$ x_i , i=1,\cdots,n, n$为低层的神经元的个数. ${ x}_i$的均值为

      $$ \mu = {\rm E}[{x_i}] = \frac{1}{n}\sum\limits_{i = 1}^n { x_i } $$ (64)

      方差为

      $$ \sigma ^2 = {\rm{Var}}[{ x_i}] = \frac{1}{n}\sum\limits_{i = 1}^n {( x_i - \mu )^{\rm{T}} } ({x}_i - { \mu} ) $$ (65)

      图  10  自归一化神经网络结构图

      Figure 10.  Structure diagram of self-normalizing neural networks

      紧接着该低层的更高层的激活函数输出的均值和方差为$\tilde{\mu}$$\tilde{\sigma }^2 $. n个神经元上所有单个标量预激活函数值作为随机变量Z的标量实现z, 激活函数的单个标量预激活函数输入可表示为

      $$ z= { w}^{\rm T} { x} $$ (66)

      这里, 定义向量w的各个分量的均值的n倍为$\bar{w} =\displaystyle\sum\nolimits^n_{i=1}w_i,$定义向量w的各个分量的二阶矩值的n倍为$\tau = \displaystyle\sum\nolimits^n_{i=1}w^2_i,$所有单个标量预激活函数值z作为随机变量Z的标量实现的均值和方差分别为

      $$ {\rm E}[{{{Z}}}] = \frac{1}{n}\sum\limits_{i = 1}^n {z_j } =\frac{1}{n} \sum\limits_{j = 1}^n \sum\limits^n_{i=1}{w_i x_i} =\sum\limits^n_{i=1}w_i{{ \mu}}= {{ \mu}} \bar w \quad $$ (67)
      $$\begin{split} {\rm{Var}}[{{{Z}}}] =\;&{\rm{Var}}\left[\sum\limits_{i=1}^nw_i{ x}_i\right] \frac{1}{n}\sum\limits_{i = 1}^n {(w_i {{ x}}_i - {{ \mu}} \bar w)^{{\rm T}} } (w_i {{ x}}_i - \\ & {{ \mu}} \bar w)=\sum\limits_{i = 1}^n {w_i^2 {{ \sigma} }^2 } = {{ \sigma} } ^2 \tau \\[-20pt] \end{split} $$ (68)

      根据中心极限定理, Z服从正态分布: $z \sim {\rm N}(\mu \bar w)\sqrt {{{{\sigma}} } ^2 \tau },$概率密度函数为$p_N(Z;\mu \bar w,\sqrt {{{{\sigma}} } ^2 \tau }),n $越大, Z服从的分布越接近正态分布.

      文献[49]定义了一个全新的激活函数SeLU

      $$ {\rm{SeLU}}({{{x}} }) = \lambda \left\{ {\begin{array}{*{20}{l}} {{{x}} }, &\;\text{若}\;{{{x}} } > 0 \\ \alpha{\rm e}^{{{x}} } - \alpha , & \;\text{若}\;{{{x}} } \le 0 \end{array}} \right. $$ (69)

      SeLU用于构建一个映射$ {F} $. 使用映射$ {F} $实现输入随机变量$ {{{X}} } $的均值$ {{{\mu}} } $和方差$ {{{\sigma}} } ^2 $到输出随机变量$ {{{H}} } $的均值$ \tilde {{{\mu}} } $和方差$ \tilde {{{\sigma}} } ^2 $的映射:

      $$ \begin{split}\left( {\begin{array}{*{20}{c}} {\tilde {{{\mu}} }} \\ \tilde {{{\sigma}} } ^2 \end{array}} \right) = {F}\left( {\begin{array}{*{20}{c}} {{{\mu}} } \\ {{{\sigma}} } ^2 \end{array}} \right) \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\;\;\;\;\\[-20pt]\end{split}$$ (70)
      $$ \begin{split} & \tilde {{{\mu}} } ({{{\mu}} } ,\bar w,{{{\sigma}} } ^2 ,\tau ) = \\ & \quad \displaystyle\int_{- \infty }^{ + \infty } {\rm{SeLU}}({{{Z}} })p_N ({{{Z}} };{{{\mu}} } \bar w,\sqrt {{{{\sigma}} } ^2 \tau } ){\rm d}_{Z} \end{split} \quad\quad\quad\;\;$$ (71)
      $$ \begin{split} &\tilde {{{\sigma}} } ^2 ({{{\mu}} } ,\bar w,{{{\sigma}} } ^2 ,\tau )=\\ &\quad \displaystyle\int_{ - \infty }^{ + \infty } {\rm{SeLU}}({{{Z}} })^2 p_N ({{{Z}} };{{{\mu}} } \bar w,\sqrt {{{{\sigma}} } ^2 \tau } ){\rm d}_{{{Z}} } - \tilde{{\mu}}^2 \end{split} $$ (72)

      积分解析计算结果如下:

      $$ \begin{split} \tilde {{{\mu}} } = \ & \dfrac{1}{2}\lambda \left(({{{\mu}} } \bar w)erf\left(\dfrac{{{{{\mu}} } \bar w}}{{\sqrt 2 \sqrt {{{{\mu}} } {{{v}} } } }}\right) +\right.\\ &\alpha \;{\rm e}^{{{{\mu}} } \bar w + \frac{{{{{\sigma}} } \tau }}{2}} erfc\left(\dfrac{{{{{\mu}} } \bar w + {{{\sigma}} } ^2 \tau }}{{\sqrt 2 \sqrt {{{{\mu}} } \tau } }}\right) - \\&\alpha \;erfc\left(\dfrac{{{{{\mu}} } w}}{{\sqrt 2 \sqrt {{{{\mu}} } \tau } }}\right)+\\ & \Bigg.\sqrt {\dfrac{2}{\pi }} \sqrt {{{{\sigma}} } ^2 \tau } {\rm e}^{ - \frac{{({{{\mu}} } w)^2 }}{{2({{{\sigma}} } \tau )}}} + {{{\mu}} } w\Bigg) \end{split} $$ (73)
      $$ \begin{split} \tilde {{{\sigma}} } ^2 \!=\ & \dfrac{1}{2}\lambda ^2 \Biggr((({{{\mu}} } \bar w)^2 \!+\! {{{\sigma}} } ^2 \tau )\left(2 \!-\! erfc\left(\dfrac{{{{{\mu}} } \bar w}}{{\sqrt 2 \sqrt {{{{\sigma}} } ^2 \tau } }}\right)\right) \!+ \\ &\alpha ^2 \left( - 2\;{\rm e}^{{{{\mu}} } w + \frac{{{{{\sigma}} } ^2 \tau }}{2}} erfc\left(\dfrac{{{{{\mu}} } w + {{{\sigma}} } ^2 \tau }}{{\sqrt 2 \sqrt {\alpha \tau } }}\right) +\right.\\ &{\rm e}^{2({{{\mu}} } w + \omega \tau )} erfc\left(\dfrac{{{{{\mu}} } w + 2{{{\sigma}} } ^2 \tau }}{{\sqrt 2 \sqrt {{{{\sigma}} } ^2 \tau } }}\right) + \\ &\left.erfc\left(\dfrac{{{{{\mu}} } w}}{{\sqrt 2 \sqrt {{{{\sigma}} } ^2 \tau } }}\right)\right) +\\ &\sqrt {\dfrac{2}{\pi }} ({{{\mu}} } w)\sqrt {{{{\sigma}} } ^2 \tau } {\rm e}^{ - \frac{{({{{\mu}} } w)^2 }}{{2({{{\sigma}} } ^2 \tau )}}} \Biggr) -\tilde {{{\mu}} } ^2 \\[-20pt] \end{split} $$ (74)
    • 1)对于规范化的连接边权值矩阵, SNN的自归一化性质

      规范化的连接边权值矩阵应满足: $ \bar w = 0, $$ \tau = 1. $给定一个固定点, 根据式(73)和式(74), 可以求出$ \alpha $$ \lambda. $选择不动点$ ({{{\mu}} } ,{{{\sigma}} } {}^2) = (0, 1), $则在不动点$ \tilde {{{\mu}} } =$${{{\mu}} } \!=\! 0, \tilde {{{\sigma}} } ^2 \!=\! {{{\sigma}} } ^2 \!=\! 1,$可以解出$\alpha _{01} \!\approx \!1.6733 ,\lambda _{01} \!\approx\! 1.0507.$此时映射F$ 2 \times 2 $阶雅可比矩阵$ {J}({{{\mu}} } ,{{{\sigma}} } ^2 ) $在不动点$ (0, 1) $处为

      $$ {J}\left({{{\mu}} } ,{{{\sigma}} } ^2 \right) = \left( {\begin{array}{*{20}{l}} \partial \frac{{{{{\mu}} } ^{\rm new} \left({{{\mu}} } ,{{{\sigma}} } ^2 \right)}}{{\partial {{{\mu}} } }}&\partial \frac{{{{{\mu}} } ^{\rm new} \left({{{\mu}} } ,{{{\sigma}} } ^2 \right)}}{{\partial {{{\sigma}} } ^2 }} \\ \partial \frac{{{\left({{{\sigma}} } ^2 \right)} ^{\rm new} \left({{{\mu}} } ,{{{\sigma}} } ^2 \right)}}{{\partial {{{\mu}} } }}&\partial \frac{{{v} ^{\rm new} \left({{{\mu}} } ,{{{\sigma}} } ^2 \right)}}{{\partial {{{\mu}} } }} \end{array}} \right) $$ (75)
      $$ {J}(0, 1) = \left( {\begin{array}{*{20}{c}} 0.0&0.088834 \\ 0.0&0.782648 \end{array}} \right) \quad\quad\quad\quad\quad\quad\quad$$ (76)

      $ {J}(0, 1) $的谱范数(最大奇异值)为$ 0.7877 < 1 $, 意味着F是一个会使映射输出向量收敛到不动点$ (0, 1) $的映射, 且输出向量会稳定在不动点.

      2)对于非规范化的连接边权值矩阵, SNN的自归一化性质

      在训练过程中, 连接边权值矩阵$ w $很难保持规范化. 对于非规范化的连接边权值矩阵, F仍然可以使映射输出向量收敛到不动点. 如果将$ ({{{\mu}} } ,{{{\sigma}} } ^2 ,\bar w,\tau ) $限定在特定的范围内, $ {{{\mu}} } \in [ - 0.1,0.1] $, $ \bar w \in [ - 0.1,0.1] $, $ {{{\sigma}} } \in [0.8,1.5] $, $ \tau \in [0.95,1.1] $. 根据巴拿赫不动点理论可证明F$ 2 \times 2 $阶雅可比矩阵的最大奇异值仍小于1, F仍可以把输出向量映射到不动点, 此时不动点的均值$ \tilde {{{\mu}} } \in [ - 0.03106,0.06773] $, 方差$ \tilde {{{\sigma}} } ^2 \in [0.80009,$$ 1.48617] $, 且为一个唯一的、稳定的不动点.

    • 在UCI机器学习数据库[50]的121个数据集上测试加入SNN的FNN网络模型分类效果, 并与其他机器学习算法的分类效果进行对比, 如表5 所示. 其中平均秩差(Average rank difference)是指每一个模型都在121个数据集上进行实验, 然后将每一个任务的分类精度排名, 将排名进行求和平均, 再对排名的均值进行排序, 得到平均秩差, 平均秩差越小, 分类精度越高.

      表 5  FNN + SNN与相关模型实验效果对比(1)

      Table 5.  Comparing experimental results of FNN + SNN and related models (1)

      模型平均秩差
      FNN + SNN−6.7
      SVM−6.4
      Random forest−5.9
      FNN + LN−5.3

      FNN使用SNN算法的网络效果明显优于使用LN算法的网络效果, 而且优于随机森林和支持向量机等机器学习方法.

      在Tox21数据集[51]上比较FNN使用SNN、BN、WN、LN、ResNet (Residual networks)[52]的效果, 实验结果如表6所示, 数值是分类正确率(%).

      表 6  FNN + SNN与相关模型实验效果对比(2) (%)

      Table 6.  Comparing experimental results of FNN + SNN and related models (2) (%)

      方法网络层数
      24681632
      FNN + SNN83.784.283.984.583.582.5
      FNN + BN80.077.277.075.073.776.0
      FNN + WN83.782.282.581.978.156.6
      FNN + LN84.384.082.580.978.778.8
      FNN + ResNet82.280.581.281.881.280.4

      使用SNN的FNN网络在网络层数加深的过程中可以实现更好的分类效果, 且在一定层数的时候分类效果最好, 而使用其他算法的FNN在层数较浅时效果不错, 在网络层数逐渐加深的过程中, 模型效果逐渐变差.

    • SNN可以保证网络输入向量在网络逐层传递的过程中一直被规范化, 且随着网络层数的加深, 较高层输出向量的均值和方差离不动点越来越近, 较低层网络在训练过程中受到的扰动在更高层得到了抑制. 训练过程中要注意网络的初始化.

      SNN的收敛特性允许: 1)训练很多层的深度神经网络; 2)采用强正则化框架; 3)使学习更具鲁棒性. SNN在UCI机器学习数据库的121个任务上的作用效果明显优于其他FNN、随机森林和支持向量机. SNN在Tox21数据集上的效果比使用BN, LN等归一化算法的神经网络效果更好, 性能好的SNN网络一般都有较多层.

    • 在很多深度神经网络中应用BN的效果都很好, 但是BN也存在一些问题, 如学习结果依赖于mini-batch数据集的大小, mini-batch数据集中样本个数不能为1, 小批量数据集的统计分布无法代表整个训练数据集所服从的概率分布, 训练和推理时计算过程不同. 因此相继提出了很多与BN相关的归一化结构和算法, 这些算法避免了BN的一些缺陷, 在某些领域应用效果优于BN.

      归一化传播(NormProp)不依赖于mini-batch数据集的大小, 训练和推理时计算过程相同, 将服从正态分布的数据在神经网络中逐层传递, 使网络每一层的输出都服从标准正态分布, 解决了中间协变量迁移问题, 不需要在神经网络的每一层都计算mini-batch数据集的均值和方差, 计算速度上明显优于BN.

      批量重归一化(BR)在神经网络训练时, 归一化过程同时考虑了当前使用的mini-batch数据集和此前网络训练使用过的mini-batch数据集的作用, 避免了因为mini-batch数据集的统计分布和整个训练数据集所服从的概率分布不同而影响归一化过程的问题, 而且训练和推理时的计算过程更相近. 当mini-batch数据集很小或者包含服从非独立同分布的样本时, 使用BR比使用BN效果更好.

      逐步归纳批量归一化(DBN)证明了BN层的输出并不仅仅依赖于当前训练使用的mini-batch数据集, 也受此前网络训练使用过的mini-batch数据集的影响, DBN在训练和推理时计算过程相同, 算法稳定性优于BN, 在某些网络上的应用效果优于BN.

      层归一化(LN)使用单一样例对每一层内的神经元进行归一化, 在训练和推理时计算过程相同, LN可以应用于在线学习任务, 在RNN中应用效果优于BN, 但在CNN中应用效果不如BN.

      连接边权值行向量归一化(WN)不会像BN一样在网络中引入噪声, 可以应用到对噪声敏感的神经网络中, WN的计算复杂度和存储复杂度都相对较低, 训练和推理时计算过程相同, 因此在很多深度神经网络中应用效果都很好.

      自归一化神经网络(SNN)使用SeLU构造具有自归一化性质的网络, 网络输入样例经过网络的多层映射后, 得到的输出数据的均值和方差会收敛到稳定的固定点, 网络鲁棒性强, 可以获得数据更高层次的抽象表示.

      还有很多与BN相关的归一化结构和算法, 如文献[53]提出的余弦归一化(Cosine normalization), 一般的神经网络都对层输入和连接边权值矩阵进行点积运算, 改变了网络中每一层输出所服从的概率分布, 引起了中间协变量迁移问题, 导致网络训练过程收敛速度变慢. 余弦归一化使用余弦相似性或中心余弦相似性代替网络中常用的点积操作, 实验表明余弦归一化方法在一些神经网络上优于BN、LN和WN, 有很大的应用潜力. 文献[54]提出了黎曼几何BN方法, 因为BN对连接边权值向量比例缩放具有不变性, BN的连接边权值向量空间可以看成是黎曼流形, 文献[54]基于这个原理构建了黎曼几何BN方法, 并针对黎曼几何BN方法提出了有效的梯度下降算法和正则化方法, 实验表明黎曼几何BN方法在很多神经网络上应用效果都优于BN. 此外, 因为NormProp和WN也对连接边权值向量比例缩放具有不变性, 也可以构建相应的黎曼几何形式. BN是$ L_2 $范数BN, 文献[55]对BN可以起作用的原理和应用过程中会出现问题的原因进行了分析, 提出了$ L_1 $范数BN和$ L_\infty $范数BN, $ L_1 $范数BN和$ L_\infty $范数BN应用到神经网络中时, 允许网络使用更低精度的硬件进行训练, 而且网络训练的速度和精度不会比使用BN的网络差, 而使用低精度硬件训练应用BN网络时很容易在网络中引入噪声, 并且容易溢出. 文献[56]提出了中心连接边权值行向量归一化(Centered weight notmalization), 与WN的原理相近, 都是对网络连接边权值行向量进行重新参数化, 但同时进行了中心归一化操作, 相比于WN, 可以使网络具有更好的优化条件, 增强网路泛化能力. 最重要的是, 中心连接边权值行向量归一化计算复杂度低, 可以被包装成在很多神经网络中都能够应用的线性模块, 这些线性模块可以取代网络中的普通线性模块, 构建出具有更好的优化条件、泛化性能更好的深度神经网络结构.

      这些改进算法分别可以避免BN的很多问题, 在某些神经网络中应用效果优于BN, 但到目前为止, BN仍然是应用范围最广、最简单有效的一种神经网络训练归一化方法.

    • BN作为一种加速神经网络训练的手段, 已广泛应用于各种深度神经网络中, 例如近年的AlphaGo和AlphaGo Zero结构和算法, 都使用了BN技术, 以解决网络训练过程中的中间协变量迁移问题, 加快神经网络训练过程的收敛速度. 本节对BN在图11中所示的几个重要神经网络领域中的应用进行了概括总结.

      图  11  批归一化应用领域

      Figure 11.  Applications of batch normalization

    • CNN能够处理原始数据, 不需要人为特征提取过程, 在图像处理中效果好而应用广泛. 因为CNN的特殊结构, 应用BN时需要BN遵循卷积特性, 在卷积操作之后、激活函数之前加入BN. 在CNN中应用BN时的结构图如图12所示.

      图  12  在CNN中应用BN

      Figure 12.  Applications of BN in CNN

      使用图片数据集$ \{ a_i \in {\rm R}^{p \times q} \} _{i = 1}^N $对CNN进行训练, 假定每张图片大小为$ p \times q $, 深度为1. 一共选取了$ J $个mini-batch数据集, 假定第$ j $个mini-batch数据集为$ \{ a_i^j \} _{i = 1}^{m_j } $, 训练时$ a_i^j $分别使用$ K $个不同的卷积核进行卷积后得到$ K $个特征映射, 对$ m_j $张图片分别使用$ K $个卷积核进行卷积, 会得到$ m_j \times K $个特征映射, 然后对这些特征映射进行归一化操作. BN将每张图片使用个$ K $个卷积核生成的$ K $个特征映射的每一个都当成一维数据, 也就是说这$ m_j \times K $个特征映射相当于$ m_j $$ K $维数据, 应用BN时, 对这$ m_j $个数据的每一维分别求均值和方差. 其中第$ k $个卷积核$ w_k $对mini-batch数据集$ \{ a_i \} _{i = 1}^{m_j } $进行卷积后生成的一组特征映射的均值为

      $$ {{{\mu}} } _{., k}^j = \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {{{{b}}}_{i, k} } $$ (77)

      方差为

      $$ {{{\sigma}}} _{., k} ^2 = \frac{1}{{m_j }}\sum\limits_{i = 1}^{m_j } {({{{b}}}_{i, k} } - {{{\mu}} } _{., k} )^2 $$ (78)

      其中, 将特征映射$ b_{i, k} $数据矩阵转化成列向量进行计算, 则归一化后得

      $$ \hat {{{b}}}_{{ \cdot , k} }^j = \frac{{{{{b}}}_{{i, k} }^j - {{{\mu}} } _{{ \cdot , k} }^j }}{{\left({{{\sigma}}} _{ \cdot , k}^j \right)^2 }} $$ (79)

      然后针对学习一组$ {{{\gamma}} } _{{ \cdot , k} }^j $$ {{{\beta}}} _{{ \cdot , k} }^j $, 则BN层的输出为

      $$ \tilde {{{b}}}_{ \cdot , k}^j = {{{\gamma}} } _{{ \cdot , k} }^j \hat {{{b}}}_{ \cdot , k}^j + {{{\beta}}} _{{ \cdot , k} }^j $$ (80)

      其中, $ a $可以代表CNN的输入数据, 也可以代表CNN的隐层输入数据, 在CNN中应用BN时一般在所有层都使用BN.

      文献[57]将BN应用在基于CNN的语音识别混合神经网络−隐马尔科夫模型(Neural network (NN)−Hidden Markov model (HMM))中, 作用在中文演讲数据集wm50 (时长为50小时的数据集)和wm100 (时长为100小时的数据集)上, 实验效果如表7所示.

      表 7  CNN + BN与CNN模型分类效果对比

      Table 7.  Comparing experimental results of CNN + BN and CNN

      数据集激活函数模型学习率错误率 (%)
      wm50ReLUCNN + BN0.0833.4
      wm50ReLUCNN0.00835.32
      wm50SigmoidCNN + BN0.0835.52
      wm50SigmoidCNN0.00842.80
      wm100ReLUCNN + BN0.0832.90
      wm100ReLUCNN0.00833.10
      wm100SigmoidCNN + BN0.0833.77
      wm100SigmoidCNN0.00838.50

      在两个数据集上且使用不同的激活函数时, 加入BN层的CNN语音识别词错误率都小于基础CNN模型, 验证了BN在CNN中的促进作用.

      文献[7]验证了BN在Inception卷积神经网络中的作用, BN成倍数地加快了Inception神经网络训练过程的收敛速度. 文献[58]验证了BN在用于行人检测的快速区域卷积神经网络 (Region CNN, R-CNN)中的性能[59]. 文献[60]在编码–解码卷积神经网络中应用BN, 验证了BN在不具有全连接层的卷积神经网络中也提升了性能. 大多数CNN中都会应用到BN, 以减少网络训练过程中的中间协变量迁移现象. 在每一个卷积操作和激活函数之间进行BN, 规范了每一层的输入, 使网络不易陷入局部最小值, 使得层Jacobian矩阵保持奇异值接近于1, 避免发生梯度消失和爆炸的问题, BN可在一定程度上增加卷积神经网络的泛化性能, 提升模型精度.

    • CNN、分片线性神经网络等网络中存在中间协变量迁移现象, 使用BN来解决中间协变量迁移时效果显著, 在RNN中, 网络深度一般比较深, 中间协变量迁移问题很严重, 但是BN无法直接在RNN中使用.

      对于RNN, 输入序列变量$ ({{{x}} }^1 , \cdots ,{{{x}} }^T ) $, 可以得到隐层状态变量$ ({{{h}}}^1 , \cdots ,{{{h}}}^{{T}} ) $

      $$ {{{h}}}^t = {f}\left(W_{{{{h}}}{{{h}}}} {{{h}}}^{t - 1} + W_{{{{x}}}{{{h}}}} {{{x}}}^t \right) $$ (81)

      其中, $ W_{{{{h}}}{{{h}}}} $是递归神经网络连接边权值矩阵, $ W_{{{{x}}}{{{h}}}} $是输入到隐层的连接边权值矩阵, $ {f} $是激活函数.

      在每一个时间步骤$ t $中, 模型结构如图13所示.

      图  13  RNN结构图

      Figure 13.  Structure diagram of RNN

    • 在RNN中应用BN, Laurent等在文献[61]中提出了两种方式, 一种方式是在隐层到隐层和输入到隐层的数据传递过程中都应用BN

      $$ {{{h}}}^t = {f}\left({\rm BN}\left(W_{{{h}}{{{h}}}} {{{h}}}^{t - 1} + W_{{{{x}}}{{{h}}}} {{{x}}}^t \right)\right) $$ (82)

      实验表明这种方式并不有利于RNN训练, 于是文献[61]提出另一种方式, 只在输入到隐层的数据传递过程中应用BN

      $$ {{{h}}}^t = {f}\left(W_{{{{h}}}{{{h}}}} {{{h}}}^{t - 1} + {\rm BN}\left(W_{{{{x}}}{{{h}}}} {{{x}}}^t \right)\right) $$ (83)

      实验表明只在输入到隐层的数据传递过程中应用BN可以加快RNN训练过程的收敛速度. 在LSTM中以第2种方法应用BN的效果也很好. 但在语言处理的RNN中应用BN时, 要注意mini-batch数据集大小的设置问题, 不能把训练过程中所有使用的mini-batch数据集的大小都设置为相同的, 因为这样可能造成长句子被截断的问题, 于是文中提出了sequence-wise BN, 计算均值和方差的公式为

      $$ \mu _k = \frac{1}{n}\sum\limits_{i = 1}^m {\sum\limits_{t = 1}^T {x_{i, k}^t } } \qquad\qquad $$ (84)
      $$ \sigma _k^2 = \frac{1}{n}\sum\limits_{i = 1}^m \sum\limits_{t = 1}^T \left(x_{i, k}^t - \mu _k \right)^2 $$ (85)

      其中, $ T $是每一个序列语句的长度, $ m $是mini-batch数据集中序列语句的个数, $ n $是mini-batch数据集中总共需要更新的单词数. 在用于语言处理的RNN中使用sequence-wise BN得到的模型预测效果更好. 在RNN输入到隐层的数据传递过程中应用BN后, 模型训练过程收敛速度加快, 但是模型容易过拟合, 泛化能力较差. 因为没有在RNN的所有层都使用BN, 在RNN中应用BN后不允许网络使用更大的学习率进行训练.

    • 只在RNN的输入到隐层中应用BN不能充分发挥BN的效果. Laurent等在文献[62]中证明BN也可以应用于递归神经网络隐层到隐层的数据传递过程中, 但只应用在LSTM, LSTM模型结构如图14所示.

      图  14  LSTM结构图

      Figure 14.  Structure diagram of LSTM

      这里定义:

      $$ \left( {\begin{array}{*{20}{c}} f^t \\ i^t \\ g^t \\ o^t \end{array}} \right) = W_{{{{x}}}{{{h}}}} {{{x}}}^t + W_{{{{h}}}{{{h}}}} {{{h}}}^{t - 1} + {{{b}}} \quad\quad$$ (86)
      $$ \left\{ {\begin{aligned} & f^t = w_{{{{x}}}f} {{{x}}}^t + w_{{{{h}}}f} {{{h}}}^{t - 1} + {{{b}}}_f \\ &i^t = w_{{{{x}}}i} {{{x}}}^t + w_{{{{h}}}i} {{{h}}}^{t - 1} + {{{b}}}_i \\ & g^t = w_{{{{x}}}g} {{{x}}}^t + w_{{{{h}}}g} {{{h}}}^{t - 1} + {{{b}}}_g \\ &o^t = w_{{{{x}}}o} {{{x}}}^t + w_{{{{h}}}o} {{{h}}}^{t - 1} + {{{b}}}_o \end{aligned}} \right.\quad\quad\quad $$ (87)
      $$ c^t = \sigma \left(f^t \right) \odot c^{t - 1} + \sigma \left(i^t \right) \odot \tanh \left(g^t \right) $$ (88)
      $$ h^t = \sigma \left(o^t \right) \odot \tanh \left(c^t \right)\quad\quad\quad\quad\quad\quad\quad $$ (89)

      其中, $ {{{x}}} \in {\bf R}^{d_{{{h}}} } $, $ W_{{{{x}}}{{{h}}}} \in {\bf R}^{4d_{{{h}}} \times d_{{{h}}} } $, $ W_{{{{h}}}{{{h}}}} \in {\bf R}^{4d_{{{h}}} \times d_{{{h}}} } $, $ {{{b}}} \in {\bf R}^{4d_{{{h}}} } $. 网络初始状态为 $ {{{h}}}_0 \in {\bf R}^{d_{{{h}}} } $, $ {{{\sigma}}} $是sigmoid激活函数. LSTM和普通RNN的不同之处在于, LSTM有一个记忆单元$ c^t $, $ c^t $在网络训练过程中几乎可以线性更新, 使梯度反向传播过程更容易. LSTM的更新受到各个门控单元的控制. 遗忘门$ f^t $决定前面训练周期获得的哪些信息会被留下来, 输入门$ i^t $决定从当前输入的$ {{{x}}}^t $中获取哪些信息, 输出门$ o^t $决定从记忆单元$ c^t $中读取哪些信息. 输入挤压单元是对$ {{{x}}}^t $$ {{{h}}}^{t - 1} $计算加权之后, 按tanh进行非线性变换, 产生值向量输入到$ c^t $中, 输出挤压单元对记忆单元的内部状态$ c^t $按tanh函数激活, 输入到输出门控单元. 这些改进都使得LSTM处理长序列信息时具有更强的鲁棒性. 使用BN对LSTM归一化

      $$ \begin{split} \left( {\begin{array}{*{20}{c}} f^t \\ i^t \\ g^t \\ o^t \end{array}} \right)=\ &{\rm BN}\left(W_{{{x}}} {{{x}}}^t ;{{{\gamma}}} _{{{x}}} ,{{{\beta}}} _{{{x}}} \right) +\qquad\quad \\ &{\rm BN}\left(W_{{{h}}} {{{h}}}^{t - 1} ;\gamma _{{{h}}} ,\beta _{{{h}}} \right) + {{{b}}} \end{split} $$ (90)
      $$ c^t = \sigma \left(f^t \right) \odot c^{t - 1} + \sigma \left(i^t \right) \odot \tanh \left(g^t \right) $$ (91)
      $$ {{{h}}}_t = {{{\sigma}}} \left(o^t \right) \odot \tanh \left({\rm BN}\left(c^t ;{{{\gamma}}} _c ,{{{\beta}}} _c \right)\right)\qquad $$ (92)

      这里分别归一化$ W_{{{{x}}}{{{h}}}} {{{x}}}^t $$ W_{{{{h}}}{{{h}}}} {{{h}}}^{t - 1} $, 分别作用可以更好地控制额外添加的参数$ {{{\gamma}}} _{{{h}}} $$ {{{\gamma}}}_{{{x}}} $, 为避免冗余参数, 这里一般设$ {{{\beta}}} _{{{{{h}}}}} = {{{\beta}}} _{{{x}}} = 0 $. 为了使$ c^t $中梯度平稳计算, 不在其中加入BN.

      与Laurent等[63]和Amodei等[64]认为无法在RNN隐层到隐层的数据传递过程中应用BN的论证相反, 文献[62]证明同时在RNN输入到隐层和隐层到隐层的数据传递过程中应用BN可以明显提升网络训练性能. 文献[62]中将BN应用到语言模型和问答模型的LSTM网络中, 实验结果如表8所示. 其中PPL (Perplexity)值表示困惑度, PPL越小, 期望的句子出现的概率就越高, 模型预测准确率也越高.

      表 8  LSRM + BN模型与相关模型实验效果对比

      Table 8.  Comparing experimental results of LSRM + BN and related models

      模型PPL
      小型LSTM78.5
      小型LSTM + BN62.5
      中型LSTM49.1
      中型LSTM + BN41.0
      大型LSTM49.3
      大型LSTM + BN35.0

      使用BN的语言模型PPL值更小, 模型预测准确率更高, 而且模型训练过程收敛速度比单一的LSTM网络更快. 文献[62]指出在RNN中成功应用BN的关键是正确进行初始化, 以前在RNN中应用BN失败的原因大多因为初始化不正确.

      文献[65]证明了BN在基于LSTM的神经网络Seq2Seq (Sequence to sequence)中的重要作用, Seq2Seq网络在端到端语言处理上表现很好, 但是很多的Seq2Seq网络都是浅层的编码–解码神经网络, 文献[65]基于LSTM、CNN和残差网络, 构造出深度较深的Seq2Seq网络, 但是因为网络深度较深, 过拟合问题很严重, 网络中加入BN后, 解决了网络过拟合问题, 增强了网络的泛化能力, 得到的深度Seq2Seq网络效果远远优于以前的浅层Seq2Seq网络.

    • 分片线性深度神经网络是使用分片线性激活函数的FNN, 现阶段取得了很多其他深度神经网络无法达到的成果. 分片线性函数和深度神经网络的结合, 可以对任意复杂的函数进行估计, 获得数据更高层次的抽象表示. 但是分片线性深度神经网络要求输入分片线性激活函数的数据具有均匀的数据分布, 否则分片线性激活单元将会退化成线性激活单元, 导致网络学习复杂函数的能力下降, 而且随着网络层数的加深, 不平衡的初始数据分布会使模型出现病态. 因此一般会在深度分片线性神经网络中使用BN, 使得激活函数的每个区域都有与之相对应的大量的样本.

      分片线性神经网络模型一般结构如下:

      $$ \begin{split} {F}({{{x}}},\theta ) =& {f}^{\rm out} \circ {f}^l \circ {\rm BN}^l \circ {z}^l \circ \cdots \circ {f}^1 \circ\\& {\rm BN}^1 \circ {z}^1 ({{{x}}}) \end{split} $$ (93)

      其中,$ {z}^l ({{{x}}}) = W^l {{{x}}}^{l - 1} + b^l $表示预激活函数, $ {\rm BN}^l ( \cdot ) $表示归一化函数, $ {f}^l ( \cdot ) $表示分片线性激活函数, $ {f}^{\rm out} $是网络最后一层的激活函数.

      文献[66]在NIN网络的基础上提出了深度分片线性神经网络 – MIM (Maxout network in maxout network)网络. MIM网络使用maxout作为激活函数

      $$ {f}({{{h}}}_i ) = \max \{ h_{i,1} ,\cdots, h_{i, k} \} $$ (94)

      maxout在$ k $个输入值中找到最大的值作为激活函数的输出值. MIM在每一个maxout激活函数之前使用BN单元. 使用MIM网络进行分类实验, 作用于CIEAR-10和MINST数据集, 并和其他模型进行对比. 实验结果如表9所示. 表中的数据表示测试误差.

      表 9  MIM模型与相关模型实验效果对比(%)

      Table 9.  Comparing experimental results of MIM and related models (%)

      模型CIFAR-10MNIST
      maxout11.680.47
      NIN10.410.45
      RCNN-160[67]8.690.35
      MIM8.520.31

      实验表明, 没有使用BN的MIM网络在刚开始训练时效果很好, 但是很快会出现病态. 在MIM网络中加入BN之后, 可以使网络测试误差下降, 因为输入数据对于激活函数域分布的更均匀, 使得maxout激活单元在各个函数域内可以平衡使用, 不会出现激活单元易饱和的现象. 使用BN允许MIM用更大的学习率, 促进MIM网络训练过程收敛速度加快, 网络预测精度也有一定程度的提升, 模型性能优于Maxout、NIN和CNN等网络.

    • 深度神经网络(Deep neural network, DNN)训练过程中需要大量的有标签数据优化网络目标函数. 为了一个新的图像辨识任务训练DNN是非常费时费力的, 因为需要重新获取大量有标签数据. 一个普遍的做法是使用相近的有标签数据, 或者在搜索引擎中根据关键词获得的数据进行训练, 然后把学习到的特征迁移到所要学习的对象上. 但有两个原因导致训练困难: 1)源域的分布通常和目标域所服从的概率分布是不同的; 2) DNN很擅长获取数据不同层次的抽象特征, 容易导致网络过拟合, 训练集和测试集的不完全匹配最终会导致很差的表示学习结果.

      域自适应学习能够解决训练集和测试集之间概率分布不同的问题, 但是很多常用的域自适应学习方法[68-70]需要在网络训练过程中添加很多额外的步骤和参数, 增加DNN训练负担. Li等[71]基于BN提出一种简单有效的域自适应学习方法, 即自适应归一化(Adaptive batch normalization, AdaBN), AdaBN不需要在神经网络训练过程中添加过多的步骤和参数, 解决域自适应学习问题效果显著.

      文献[71]中认为域相关知识被存储在训练数据所服从的概率分布中, 因此通过对源域数据进行BN可以很容易地将源域数据迁移到所需要的目标域中. AdaBN的具体做法是: 分别对测试集数据和训练集数据进行批归一化, 使所有数据服从相同的概率分布. 要注意的是, 训练集样例要使用训练集数据进行归一化, 即mini-batch数据集都来源于训练集, 相应地, 测试集样例要使用测试集数据进行归一化. 将归一化后的源域数据和目标域数据用于目标对象特征学习, AdaBN处理过程如图15所示.

      图  15  AdaBN域自适应过程

      Figure 15.  Domain adaptive process of AdaBN

      在office数据集[72]上进行域自适应实验, 数据集包含3个域, 即A域(Amazon)、D域(DSRL)和W域(Webcam). 实验在这3个域之间分别进行域自适应转移, 实验结果如表10所示, 表中数据表示域转移后分类正确率.

      表 10  AdaBN与相关模型实验效果对比(%)

      Table 10.  Comparing experimental results of AdaBN and related models (%)

      模型A$ \to $ WD$ \to $ WW $ \to $DA$ \to $ D
      AlexNet[73]61.695.499.063.8
      DDC[74]61.895.098.564.4
      DAN[75]68.568.599.067.0
      Inception BN70.394.310070.5
      GFK[76]66.797.099.470.1
      AdaBN74.295.799.873.1

      实验表明, AdaBN总体上优于其他域自适应学习方法, 不仅可以解决单源域的问题, 扩展到多源域和半监督学习问题时, 也可以获得很好的分类效果. AdaBN也可以和其他域自适应学习方法共同使用, 相互促进, 以实现更好的训练效果.

    • 本节将BN在CNN、RNN、分片线性深度神经网络和域自适应学习四个重要神经网络领域中的应用进行了总结分析. 在CNN中使用BN时, 由于CNN独特的结构, 故需要注意BN的mini-batch数据集设置要对应于特征映射, BN在很多CNN网络中都能发挥重要作用. 在RNN中应用BN时, 主要问题是RNN处理的数据一般是时序的, 因此BN的mini-batch数据集设置也要做出相应的调整. 在普通RNN中的输入到隐层和隐层到隐层的数据传递过程中同时应用BN时效果不好, 只在输入到隐层的数据传递过程中应用BN时网络训练过程中收敛速度加快, 但网络不能使用更大学习率进行训练, 泛化能力差. 在LSTM网络中, 可以同时在输入到隐层和隐层到隐层的数据传递过程中应用BN, 网络训练过程收敛速度比普通LSTM更快, 网络泛化能力也有提升. 在深度分片线性神经网络中BN起到了关键性作用, 可以使激活函数在每个区域内都有与之相对应的大量样本, 充分发挥分片线性激活函数的性能, 保证了网络的学习性能. BN可以作为一种实施域自适应学习的手段, 计算复杂度低, 效果上好于很多复杂的域自适应方法.

      BN在其他类型的深度神经网络中也可以起到重要作用, 如深度残差网络[77]. 网络深度相同的情况下, 残差网络可以实现比很多普通神经网络更优越的性能, 在深度很深的情况下残差网络也可以正常训练. 残差网络相当于浅层网络的集合, 这种集合是动态的, 在刚开始训练时, 网络的深度可能比最终网络深度的一半还浅, 随着训练的逐渐推进, 网络的深度越来越深, 网络中加入BN操作可以帮助推进残差网络的集成过程, 构建深度更深的残差网络. 在生成对抗神经网络(Generative adversarial networks, GAN)中, BN也常常作为网络中重要的一部分[78-79]. GAN是一种典型的非监督学习模型结构, 由生成器和判别器构成, 在GAN中加入BN, 可以使得网络训练过程对参数初始值敏感性降低, 有利于网络训练过程中的梯度传播过程, 可以防止GAN过拟合, 过拟合是GAN常常崩溃的最主要原因. 但是不能直接在GAN的所有层中都应用BN, 否则会导致模型不稳定, 一般会避免在生成器的输出层和判别器的输入层使用BN. 在深度强化学习(Reinforcement learning)[80]中应用BN, 也可以帮助改进网络性能. 由于向量的各个维度代表的意义是完全不同的(如位置和速度), 深度强化学习从这些向量中学习特征表示时常常遇到困难, 因为很难找到可以同时概括环境和状态值的超参数. 在深度强化学习网络中使用BN, 可以针对训练数据的每一维分别进行归一化, 使网络可以从包含不同单元的向量中分别学习到各种特征. 当然, 对于GAN和深度强化学习网络, 应用LN和WN可以在某些方面获得优于使用BN的效果.

    • 表11对未加归一化的网络、批归一化(BN)、归一化传播(NormProp)、批量重归一化(BR)、逐步归纳批量归一化(DBN)、层归一化(LN)、连接边权值行向量归一化(WN)和自归一化神经网络(SNN) 的收敛速度、计算复杂性、优势、缺点和应用领域进行了总结.

      表 11  批归一化及其相关算法功能对比

      Table 11.  An exampletable in one column

      归一化方法收敛速度
      (训练周期)
      计算量优势缺点应用领域
      未加归一化的
      网络
      批归一化 (BN)相比于未加批归一化的网络, 收敛速度加快10倍以上适中减少网络训练过程中的中间协变量迁移问题, 使网络训练过程对参数初始值不再敏感, 可以使用更高的学习率进行训练, 加快网络训练过程收敛速度依赖 mini-batch 数据集的大小, 训练和推理时计算过程不同在CNN、分片线性神经网络等FNN中效果较好, 对RNN促进效果相对较差
      归一化传播 (NormProp)比BN更稳定、收敛速度明显更快少于BN减少中间协变量迁移现象, 不依赖于mini-batch数据集大小, 网络中每一层的输出都服从正态分布, 训练和推理阶段计算过程相同没有正则化效果, 也不能和其他正则化手段如Dropout
      共用
      理论上可以应用到使用任何激活函数、目标函数的网络, 网络可以使用任何梯度传播算法进行训练, 但具体效果还需要进一步
      证实
      批量重归一化 (BR)mini-batch数据集中含有的数据量很少或包含服从非独立同分布的样本时, 比BN更稳定, 收敛更快计算量稍多于BN减少中间协变量迁移现象, 使网络训练对参数初值不再敏感, 可以使用更高的学习率进行训练, mini-batch中数据量很少或服从非独立同分布时, 使用BR的网络性能明显优于使用BN的网络,收敛速度更快, 训练精度更高计算量稍多于BN在mini-batch数据量很少或包含服从非独立同分布的样例时, 应用效果优于BN
      逐步归纳批量归一化 (DBN)比BN更稳定, 收敛速度类似BN计算量多于BN减少中间协变量迁移, 将神经网络的训练和推理过程关联起来, 使得网络在训练时不仅考虑当前使用的mini-batch数据集, 会同时考虑过去网络训练使用过的mini-batch数据集对mini-batch数据集仍有一定的依赖性理论上可以应用BN的网络, 都可以应用DBN, 但是因为没有从根本上克服BN的问题, 在应用上同样会受到一定的限制
      层归一化 (LN)比BN鲁棒性强, 收敛速度更快计算量少于BNLN对每一层内的神经元使用单一样例进行归一化, 在训练和推理阶段计算过程相同, 应用到在线学习任务和RNN中的效果明显优于其他归一化方法, 可减少训练时间, 提升网络性能在CNN等神经网络中的效果不如BN层归一化对于稳定RNN中的隐层状态很有效, 可进一步推广, 但在CNN等前馈神经网络中的效果不如BN
      连接边权值行向量归一化 (WN)比BN收敛速度更快计算量少于BN对mini-batch数据集没有依赖性, 不需要对过去处理过的情况进行记忆, 计算复杂度低. 网络训练和推理时计算过程相同, 不会像BN一样引入过多噪声对网络没有正则化效果可以更好地应用到RNN和一些对噪声敏感的网络中, 如深度强化学习和深度生成式模型, 这些模型中使用BN的效果都不够好
      自归一化神经网络 (SNN)适中使用SeLU构造网络, 输入数据经过SNN的多层映射后, 网络中每一层输出的均值和方差可以收敛到固定点, 具有归一化特性, 网络鲁棒性强需要使用特定的激活函数SeLU才能构成网络, 在网络中使用dropout等手段会破坏网络结构, 使网络失去自归一化特性理论上可以构建任何前馈神经网络和递归神经网络, 但网络需要使用SeLU激活函数, 且不能破坏对数据均值和方差的逐层特征映射
    • 除了BN等归一化方法之外, 还有很多可以加速神经网络训练、提升训练精度的重要手段, 表12对这些方法进行了归纳总结.

      表 12  深度神经网络加速训练方法

      Table 12.  Accelerated training method of deep neural network

      名称    作用     代表文献
         Dropout防止网络过拟合, 是最常用的正则化方法   文献 [8191]
         正则化防止网络过拟合   文献 [92106]
         数据增广 (Data augmentation)通过数据变换增加训练样本数量   文献 [107118]
         改进梯度下降算法选用合适的梯度下降算法, 更有利于神经网络训练   文献 [119133]
         激活函数选择选择适当的激活函数, 更有利于网络训练   文献 [134145]
         学习率选择选择适当的学习率可以加速神经网络训练   文献 [146154]
         参数初始化好的参数初始化更易于神经网络训练   文献 [155158]
         预训练对网络进行预训练, 适当加入先验信息, 更易于网络训练   文献 [159162]
         二值化网络 (Binarized neural networks)节省神经网络训练过程所需存储空间和训练时间   文献 [163167]
         随机深度神经网络缓解深度过深的神经网络训练困难的问题   文献 [168171]
         深度神经网络压缩在不影响网络精度的情况下减少神经网络训练所需存储要求   文献 [172178]
    • BN及其变种已经广泛应用于神经网络结构和训练过程中, 但是BN及其变种仍然存在许多问题亟待解决.

      1) BN过程目前主要还是在各输入层和隐层的各维(神经元)上归一化, 没有保持整个层向量上的白化效果, 实际没有实现整个向量上的归一化, 需对归一化各维得到的结果和归一化整个向量得到的结果之间的异同进行理论分析, 真正论证BN的实现机制;

      2) BN应用于各种神经网络结构中时, 如前向神经网络、递归神经网络和卷积神经网络, 各个类型的网络的BN结构和处理过程均不太一样, 学习的结果依赖于初始值的设置、mini-batch数据集大小的设置, 甚至是mini-batch数据集训练过程的先后顺序, 急需研究统一的、通用的和规避了各种影响因素的BN结构和训练过程;

      3) 在生成式模型神经网络, 如玻尔兹曼机、和–积网络还不能运用BN过程, 急需开发对这些神经网络的BN结构和训练过程, 在这些生成式模型神经网络上, 研究实现中间协变量迁移的机制;

      4) 研究深度神经网络中间协变量迁移的理论机制, 分析形成的原因及对神经网络训练过程的影响, 从理论上给出中间协变量迁移定量分析, 指导归一化设计过程;

      5) BN的变种归一化算法应用领域一般相对单一, 计算复杂度高, 使其应用受到限制, 需要将这些算法进行改进, 使其更加简单、应用领域更广.

    • 深度神经网络训练过程中存在一个严重问题: 中间协变量迁移, 使网络训练过程对参数初值敏感, 不能使用更大的学习率进行训练, 训练过程收敛速度变慢. BN可以解决中间协变量迁移问题, 加快神经网络训练过程收敛速度. 本文首先对BN的原理、可以解决的主要问题、添加BN层的神经网络的梯度更新过程和BN的优点进行了详细分析. BN虽然简单实用, 但也存在一些问题, 如学习结果依赖于小批量数据集的大小、训练和推理时计算过程不同等, 于是相继提出了很多与BN相关的归一化结构和算法. 本文对归一化传播、批量重归一化、逐步归纳批量归一化、层归一化、连接边权值行向量归一化和归一化神经网络等几种重要归一化结构和算法的原理、优势和主要应用领域进行了分析和归纳. 最后对BN在各个神经网络领域的应用方法进行了概括总结, 并且对其他常用于提升神经网络训练性能的手段进行了归纳. 随着近年来深度神经网络逐渐趋于大型化、训练数据集为大数据集、网络训练时中间协变量迁移问题越来越严重, 归一化手段逐渐成为训练深度神经网络过程中必不可少的一部分, 提出更有效的归一化方法仍是深度学习领域的未来重点研究方向.

参考文献 (178)

目录

    /

    返回文章
    返回