0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BatchNorm是一种旨在通过固定层输入的分布来改善神经网络训练的技术

nlfO_thejiangme 来源:未知 作者:李倩 2018-07-03 14:37 次阅读

由于BatchNorm可以加速训练并获得更加稳定的结果,近年来成为了一项在深度学习优化过程中被广泛使用的技巧。但目前人们对于它是如何在优化过程中起作用的还没有达成共识。MIT的研究人员从优化过程中对应空间的平滑性这一角度为我们带来的全新的视角。

在过去的十年中,深度学习在计算机视觉语音识别、机器翻译和游戏博弈等众所周知的各种艰巨任务中都取得了令人瞩目的进步。这些进步离不开硬件、数据集、算法以及网络结构等方面重大进展,批标准化/规范化(Batch Normalization,简称BatchNorm)的提出更是为深度学习的发展作出了巨大贡献。BatchNorm是一种旨在通过固定层输入的分布来改善神经网络训练的技术,它通过引入一个附加网络来控制这些分布的均值和方差。BatchNorm可以实现深度神经网络更快更稳定的训练,到目前为止,无论是在学术研究中(超过4,000次引用)还是实际应用配置中,它在大多数深度学习模型中都默认使用。

尽管BatchNorm目前被广泛采用,但究竟是什么原因导致了它这么有效,尚不明确。实际上,现在也有一些工作提供了BatchNorm的替代方法,但它们似乎没有让我们更好地深入理解该问题。目前,对BatchNorm的成功以及其最初动机的最广泛接受的解释是,这种有效性源于在训练过程中控制每层输入数据分布的变化以减少所谓的“Internal Covariate Shift”。那什么是Internal Covariate Shift呢,可以理解为在神经网络的训练过程中,由于参数改变,而引起层输入分布的变化。研究人员们推测,这种持续的变化会对训练造成负面影响,而BatchNorm恰好减少了Internal Covariate Shift,从而弥补这种影响。

虽然这种解释现在被广泛接受,但似乎仍未出现支持的具体证据。尤其是,我们仍不能理解Internal Covariate Shift和训练性能之间的联系。在本文中,作者证明了BatchNorm带来的性能增益与Internal Covariate Shift无关,在某种意义上BatchNorm甚至可能不会减少Internal Covariate Shift。相反,作者发现了BatchNorm对训练过程有着更根本的影响:它能使优化问题的解空间更加平滑,而这种平滑性确保了梯度更具预测性和稳定性,因此可以使用更大范围的学习速率并获得更快的网络收敛。

作者证明了在一般条件下,在具有BatchNorm的模型中损失函数和梯度的Lipschitzness(也称为β-smoothness)得到了改善。最后,作者还发现这种平滑效果并非与BatchNorm唯一相关,许多其他的正则化技术也具有类似的效果,甚至有时效果更强,都能对训练性能提供类似的效果改善。

研究人员表示深入理解BatchNorm这一基本概念的根源有助于我们更好地掌握神经网络训练潜在的复杂性,反过来,也能促进广大学者们在此基础上进一步地研究深度学习算法。

作者探讨了BatchNorm,优化和Internal Covariate Shift三者之间的关系。作者在CIFAR-10数据集上分别使用和不使用BatchNorm来训练标准的VGG网络,如上图显示用BatchNorm训练的网络在优化和泛化性能方面都有着显著改进。但是,从上图最右侧我们发现在有和没有BatchNorm的网络中,分布(均值和方差的变化)的差异似乎是微乎其微的。那么,由此引发以下的问题:

1)BatchNorm的有效性是否确实与Internal Covariate Shift有关?

2)BatchNorm固定层输入的分布是否能够有效减少Internal Covariate Shift?

首先我们训练网络时,刻意在BatchNorm层后注入随机噪声,由此产生明显的covariate shift。因此,层中的每个单元都会在各个时刻经历不同的输入分布。然后,我们测量这种引入的分布不稳定性对BatchNorm性能的影响。下图显示了标准网络、加上BatchNorm层的网络以及在BatchNorm层后加噪声的网络的训练结果。我们发现,后两者的性能差异可以忽略,并且都比标准网络要好。在标准网络中加BatchNorm之后,即便噪声的引入使得分布不稳定,但在训练性能仍比标准网络好。所以,BatchNorm的有效性与Internal Covariate Shift并没有什么联系。

仅从输入分布的均值和方差来看,Internal Covariate Shift似乎与训练性能并没有直接联系,那么从更广泛的概念上理解,Internal Covariate Shift是否与训练性能有着直接的联系呢?如果有,BatchNorm是否真的有效减少了Internal Covariate Shift。把每层看作是求解经验风险最小化的问题,在给定一组输入并优化损失函数,但对任何先前层的参数进行更新必将改变后面层的输入,这是Ioffe和Szegedy等研究人员关于Internal Covariate Shift理解的核心。此处,作者更从底层的优化任务角度深入探究,由于训练过程是一阶方法,因此将损失的梯度作为研究对象。

为了量化每层中参数必须根据先前层中参数更新“调整”的程度,我们分别测量更新前和更新后每层梯度的变化。作者通过实验测量了带有和不带BatchNorm层的Internal Covariate Shift程度。为分离非线性效应和梯度随机性,作者还对使用全批梯度下降训练的(25层)深度线性网络(DLN)进行分析。最终,我们发现,在网络中添加BatchNorm层应该是增加了更新前和更新后层梯度之间的相关性,从而减少Internal Covariate Shift。但令人惊讶的是,我们观察到使用BatchNorm的网络经常表现出Internal Covariate Shift的增加(参见下图),DLN尤其显著。从优化的角度来看,BatchNorm可能甚至不会减少Internal Covariate Shift。

图中蓝色线为添加了BatchNorm的结果,右侧描述了对应Internal covariate shift的变化。

那BatchNorm究竟发挥了什么作用呢?

事实上,我们确定了BatchNorm对训练过程的关键影响:它对底层优化问题再参数化,使其解空间更加平滑。首先,损失函数的Lipschitzness得到改进,即损失函数能以较小的速率变化,梯度的幅度也变小。然而效果更强,即BatchNorm的再参数化使损失函数的梯度更加Lipschitz,就有着更加“有效”的β-smoothness。这些平滑效果对训练算法的性能起到主要的影响。改进梯度的Lipschitzness使我们确信,当我们在计算梯度的方向上采取更大步长时,此梯度方向在之后仍是对实际梯度方向的精准估计。

因此,它能使任何基于梯度的训练算法采取更大的步长之后,防止损失函数的解空间突变,既不会掉入梯度消失的平坦区域,也不会掉入梯度爆炸的尖锐局部最小值。这也就使得我们能够用更大的学习速率,并且通常会使得训练速度更快而对超参数的选择更不敏感。因此,是BatchNorm的平滑效果提高了训练性能。

为了证明BatchNorm对损失函数稳定性的影响,即Lipschitzness,对训练过程中每步,我们计算损失函数的梯度,并测量当我们朝梯度方向移动时损失函数如何变化。见下图中(a),我们看到,与用BatchNorm的情况相反,vanilla网络的损失函数的确有着大幅波动,特别是在训练的初始阶段。同样为了证明BatchNorm对损失函数的梯度稳定性/ Lipschitzness影响,我们在下图中(b)绘制了vanilla网络和BatchNorm 整个训练过程中的“有效”β-smoothness(“有效”在这里指,朝梯度方向移动时测量梯度的变化),结果差异性很大。

为了进一步说明梯度稳定性和预测性的增加,我们测量在训练给定点处的损失梯度与沿着原始梯度方向的不同点对应的梯度之间的L2距离。如下图中(c)显示了vanilla网络和BatchNorm网络之间的这种梯度预测中的显着差异(接近两个数量级)。我们还考察了线性深度网络,BatchNorm也有着很好的平滑效果。要强调的是,即使我们值集中探索了沿着梯度方向的损失解空间情况,对于其他任意方向,也有一致的结论。

文中从理论上论证了增加BatchNorm可以降低参数的灵敏度,并很好的改善优化问题的解空间。

不同norm下VGG网络的激活直方图

那么BatchNorm是平滑解空间最好且唯一的方法吗?答案当然不是,作者研究了一些基于自然数据统计的正则化策略,类似BatchNorm修正激活函数一阶矩的方案,用p范数均值进行正则化。不同的是,对于这些正则化方案,层输入的分布不再是高斯(见上图)。因此,用这种p范数进行正则化并不能保证对分布矩和分布稳定性有任何控制。实验结果如下图所示,可以观察到所有的正则化方法都提供了与BatchNorm相媲美的性能。事实上,对于深度线性网络来说,'L1正则化表现的要比BatchNorm更好。

值得注意的是,p范数正则化方法会导致更大的分布covariate shift。但所有这些技术都提高了解空间的平滑度,这点与BatchNorm的效果相似。以上表明BatchNorm对训练的积极影响可能实属偶然。因此,对类似的正则化方案的设计进行深入探索十分有必要,可以为网络训练更好的性能。

综上所述,作者研究了BatchNorm能提高深度神经网络训练有效性的根源,并发现BatchNorm与internal covariate shift之间的关系是微不足道的。特别是,从优化的角度来看,BatchNorm并不会减少internal covariate shift。相反,BatchNorm对训练过程的关键作用在于其重新规划了优化问题,使其Lipschitzness稳定和β-smoothness更有效,这意味着训练中使用的梯度更具有良好的预测性和性能,从而可以更快速、有效地进行优化。

这种现象同时也解释了先前观察到的BatchNorm的其他优点,例如对超参数设置的鲁棒性以及避免梯度爆炸或消失。作者也展示了这种平滑效果并不是BatchNorm特有的,其他一些自然正则化策略也具有相似的效果,并能带来可比较的性能增益。我们相信这些新发现不仅可以消除关于BatchNorm的一些常见误解,而且还会使我们在真正意义上理解这种基本技术以及更加好的处理深度网络的训练问题。

最后,作者表明虽然重点在于揭示BatchNorm对训练的影响,但其发现也可能揭示BatchNorm对泛化能力的改进。具体来说,BatchNorm重新参数化的平滑效应可能会促使训练过程收敛到更平坦的极小值,相信这样的极小值会促进更好的泛化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98742
  • 计算机视觉
    +关注

    关注

    8

    文章

    1600

    浏览量

    45615
  • 深度学习
    +关注

    关注

    73

    文章

    5237

    浏览量

    119904

原文标题:深度 | BatchNorm是如何在深度学习优化过程中发挥作用的?

文章出处:【微信号:thejiangmen,微信公众号:将门创投】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    人工神经网络原理及下载

    人工神经网络是根据人的认识过程而开发出的一种算法。假如我们现在只有输入和相应的输出,而对如何由输入得到输出的机理并不清楚,那么我们可以把
    发表于 06-19 14:40

    MATLAB神经网络工具箱函数

    网络newrbe 设计严格的径向基网络newgrnn 设计广义回归神经网络newpnn 设计
    发表于 09-22 16:10

    神经网络解决方案让自动驾驶成为现实

    使用最为有利的系统。训练往往在线下通过基于 CPU 的系统、图形处理器 (GPU) 或现场可编程门阵列 (FPGA) 完成。由于计算功能强大且设计人员对其很熟悉,这些是用于神经网络
    发表于 12-21 17:11

    从AlexNet到MobileNet,带你入门深度神经网络

    取得了良好的性能。可以说,DNN其实是一种架构,是指深度超过几个相似神经网络结构,般能够达到几十,或者由
    发表于 05-08 15:57

    AI知识科普 | 从无人相信到万人追捧的神经网络

    工智能。几乎是夜间,神经网络技术从无人相信变成了万人追捧。神经网络之父Hiton1、人工神经网络是什么?人工神经网络:是
    发表于 06-05 10:11

    基于BP神经网络的手势识别系统

    网络。  BP 网络的学习规则是使用最速下降法,通过反向传播不断调整网络的权值和阈值,使网络
    发表于 11-13 16:04

    【PYNQ-Z2试用体验】神经网络基础知识

    能在外界信息的基础上改变内部结构,是一种自适应系统,通俗的讲就是具备学习功能。现代神经网络一种非线性统计性数据建模工具。简单来说,就是给定输入
    发表于 03-03 22:10

    【案例分享】ART神经网络与SOM神经网络

    一种常用的无监督学习策略,在使用改策略时,网络的输出神经元相互竞争,每时刻只有个竞争获胜的神经
    发表于 07-21 04:30

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入
    发表于 07-12 08:02

    分享一种400×25×2的三BP神经网络

    本文首先简单的选取了少量的样本并进行样本归化,这样就得到了可供训练训练集和测试集。然后训练了400×25×2的三BP
    发表于 07-12 06:49

    matlab实现神经网络 精选资料分享

    神经神经网络,对于神经网络的实现是如何直没有具体实现下:现看到个简单的
    发表于 08-18 07:25

    隐藏技术: 一种基于前沿神经网络理论的新型人工智能处理器

    一种寻找这种子网络技术是隐藏神经网络(HNN)算法,该算法使用初始化随机权值上的 AND 逻辑(只有当所有输入都高时输出才高)和
    发表于 03-17 19:15

    一种基于高效采样算法的时序图神经网络系统介绍

    图数据是一种非结构化的数据,但能够蕴含很多结构化数据中无法蕴含的信息。图数据无处不在,世界上大部分数据都能够用图数据表达。为了高效的提取图特征,图神经网络一种非常重要的图特征提取方
    发表于 09-28 10:34

    如何进行高效的时序图神经网络训练

    现有的图数据规模极大,导致时序图神经网络训练需要格外长的时间,因此使用多GPU进行训练变得成为尤为重要,如何有效地将多GPU用于时序图神经网络训练
    发表于 09-28 10:37

    卷积神经网络简介:什么是机器学习?

    列文章将只关注卷积神经网络 (CNN)。CNN的主要应用领域是输入数据中包含的对象的模式识别和分类。CNN是一种用于深度学习的人工神经网络。此类网络
    发表于 02-23 20:11