看完也许能进一步了解Batch Normalization

技术

picture.image

向AI转型的程序员都关注了这个号👇👇👇

标题:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

论文链接:https://arxiv.org/pdf/1502.03167.pdf

训练深度神经网络非常复杂,因为在训练过程中,随着先前各层的参数发生变化,各层输入的分布也会发生变化,导致调参工作要做的很小心,训练更加困难,论文中将这种现象称为“internal covariate shift”,而Batch Normalization正式用来解决深度神经网络中internal covariate shift现象的方法。

介绍

Batch Normalization是在每个mini-batch进行归一化操作,并将归一化操作作为模型体系结构的一部分,使用BN可以获得如下的好处:

picture.image

虽然随机梯度是简单有效的,但它需要仔细调整模型的超参数,特别是优化中使用的学习速率以及模型参数的初始值。训练的复杂性在于每层的输入受到前面所有层的参数的影响——因此当网络变得更深时,网络参数的微小变化就会被放大。如果我们能保证非线性输入的分布在网络训练时保持更稳定,那么优化器将不太可能陷入饱和状态,训练将加速。

BN之前的一些减少Covariate Shift的方法

对网络的输入进行白化,网络训练将会收敛的更快——即输入线性变换为具有零均值和单位方差,并去相关。当每一层观察下面的层产生的输入时,实现每一层输入进行相同的白化将是有利的。通过白化每一层的输入,我们将采取措施实现输入的固定分布,消除Internal Covariate Shift的不良影响。那么如何消除呢?考虑在每个训练步骤或在某些间隔来白化激活值,通过直接修改网络或根据网络激活值来更改优化方法的参数,但这样会弱化梯度下降步骤。

picture.image

通过白化操作,我们可以减缓ICS的问题,进而固定了每一层网络输入分布,加速网络训练过程的收敛。但是白话过程的计算成本太高,并且在每一轮训练中的每一层我们都需要做如此高成本计算的白化操作,这未免过于奢侈。而且白化过程由于改变了网络每一层的分布,因而改变了网络层中本身数据的表达能力,底层网络学习到的参数信息会被白化操作丢失掉。

BN算法描述

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

Batch Normalization的反向传播

讲反向传播之前,我们先来简单的写一下正向传递的代码,如下:

picture.image

我们都知道,对于目前的神经网络计算框架,一个层要想加入到网络中,要保证其是可微的,即可以求梯度。BatchNorm的梯度该如何求取?反向传播求梯度只需抓住一个关键点,如果一个变量对另一个变量有影响,那么他们之间就存在偏导数,找到直接相关的变量,再配合链式法则,公式就很容易写出了。

picture.image

picture.image

picture.image

通过链式法则,我们可以对上面的正向传递的代码进行运算,得到反向传播的代码,如下(结合代码理解更方便):

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

picture.image

总结

Batch Normalization的加速作用体现在两个方面:一是归一化了每层和每维度的scale,所以可以整体使用一个较高的学习率,而不必像以前那样迁就小scale的维度;二是归一化后使得更多的权重分界面落在了数据中,降低了overfit的可能性,因此一些防止overfit但会降低速度的方法,例如dropout和权重衰减就可以不使用或者降低其权重。

BN层的有效性已有目共睹,但为什么有效可能还需要进一步研究,还需要进一步研究,这里整理了一些关于BN为什么有效的论文,贴在这:

How Does Batch Normalization Help Optimization? :

BN层让损失函数更平滑

https://arxiv.org/pdf/1805.11604.pdf

论文中通过分析训练过程中每步梯度方向上步长变化引起的损失变化范围、梯度幅值的变化范围、光滑度的变化,认为添加BN层后,损失函数的landscape(loss surface)变得更平滑,相比高低不平上下起伏的loss surface,平滑loss surface的梯度预测性更好,可以选取较大的步长。如下图所示:

picture.image

An empirical analysis of the optimization of deep network loss surfaces

https://arxiv.org/pdf/1612.04010.pdf

BN更有利于梯度下降

论文中绘制了VGG和NIN网络在有无BN层的情况下,loss surface的差异,包含初始点位置以及不同优化算法最终收敛到的local minima位置,如下图所示。没有BN层的,其loss surface存在较大的高原,有BN层的则没有高原,而是山峰,因此更容易下降。

picture.image

机器学习算法AI大数据技术

搜索公众号添加: datanlp

picture.image

长按图片,识别二维码


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

《深度学习:基于Keras的Python实践》PDF和代码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

搜索公众号添加: datayx

picture.image

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎多媒体处理框架的探索与实践
王少飞|火山引擎多媒体处理资深研发工程师
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论