Guangyong Chen等作者张倩 淑婷 杜伟编译

批归一化和Dropout不能共存?这篇研究说可以

批归一化提出以来,Dropout 似乎就失去了用武用地,流行的深度架构也心照不宣地在批归一化上不采用 Dropout。今天介绍的这篇论文另辟蹊径,提出新型 IndependentComponent(IC)层,将批归一化Dropout 结合起来,加快模型收敛速度。此外,在 Keras 中只需几行 Python 代码即可轻松实现 IC 层。

现代深度神经网络的高效训练很难实现,因为你往往要输入数百万条数据。因此,开发新的技术来提高 DNN 的训练效率一直是该领域比较活跃的研究主题。

近期,来自腾讯、港中文和南开大学的研究者提出了一种新的训练技术,将两种常用的技术——批归一化(BatchNorm)和 Dropout 结合在一起。新技术可以使神经网络的输入相互独立,而这两种技术单独都无法实现这一点。

这两种技术的结合给我们提供了一个新视角,即如何利用 Dropout 来训练 DNN,并实现白化每一层输入的原始目标 (Le Cun et al., 1991; Ioffe & Szegedy, 2015)。

该研究的主要贡献如下:

  • 在其新提出的独立组件(Independent Component,IC)层中结合了两种流行的技术:批归一化Dropout。该 IC 层可以降低任意一对神经元之间的交互信息和相关系数,这能加快网络的收敛速度。

  • 为了证实该理论分析,研究者在 CIFAR10/100 和 ILSVRC2012 数据集上进行了广泛的实验。实验结果证明,本文的实现在三个方面提升了当下网络的分类性能:i) 更稳定的训练过程,ii) 更快的收敛速度,iii) 更好的收敛极限。

为什么要将 Dropout批归一化结合?

该研究的动机是重新寻找一种白化每一个输入层的高效计算方法。

白化(whitening)神经网络的输入能够实现较快的收敛速度,但众所周知,独立的激活函数必须白化。

研究者试图使每一个权重层的网络激活函数更加独立。最近的神经科学发现表明:神经系统的表征能力随群体中独立神经元数量的增加而线性增加(Moreno-Bote et al., 2014; Beaulieu-Laroche et al., 2018),这一发现可以支持以上做法。因此,研究者使得权重层的输入更加独立。独立的激活函数的确使得训练过程更加稳定。

生成独立组件的直观解决方案是引入一个附加层,该层在激活函数上执行独立组件分析(ICA)。Huang 等研究者(2018)也曾探索过类似的想法,他们采用零相位组件分析(ZCA)来白化网络激活函数,而不是使其独立。ZCA 总是作为 ICA 方法的第一步,但 ZCA 本身需要大量计算,对于宽神经网络来说尤其如此。

为了解决这一棘手的问题,研究者发现批归一化Dropout 可以结合在一起,为每个中间权重层中的神经元构建独立的激活函数

Dropout批归一化怎么结合?

为表述方便,本文将 {-BatchNorm-Dropout-} 表示为独立组件(IC)层。IC 层以一种连续的方式将每对神经元分开,应用 IC 层可以使得神经元更加独立。本文所用的方法可以直观地解释为:

BatchNorm 归一化网络激活函数,使它们的均值和单位方差为零,就像 ZCA 方法一样。Dropout 通过在一个层中为神经元引入独立的随机门来构造独立的激活函数,允许神经元以概率 p 输出其值,否则输出 0 来停用它们。直观上来说,一个神经元的输出传递的信息很少一部分来自其他神经元。因此,我们可以假设这些神经元在统计上是彼此独立的。3.1 节在理论上证明,本文中提到的 IC 层可以将任意两个神经元输出之间的相互信息减少 p^2 倍,相关系数减少 p,其中 p 为 Dropout 概率。作者表示,据他们所知,以前从未有研究者提出 Dropout 的这种用法。

与 ICA 和 ZCA 等传统的无监督学习方法不同,研究者不需要从独立特征中恢复原始信号或保证这些特征的独特性,只需要提取一些有用特征即可,这样有助于实现监督学习任务。他们的分析表明,提出的 IC 层应置于权重层而非激活层之前。

图 1:(a)在权重层和激活层之间执行白化运算(或称为 BatchNorm)的常见做法。(b)研究者提出将 IC 层置于权重层之前。

为评估 IC 层的实际使用情况,研究者利用 IC 层改进 ResNet 架构,发现这些架构的性能可以得到进一步提升。

CIFAR10/100 和 ILSVRC2012 数据集上的实证表明,提出的 IC 层能够提升当前网络的泛化性能。

IC 层的实现使得研究者重新思考 DNN 设计中将 BatchNorm 置于激活函数之前的常见做法。一些研究者已经论证了这样处理 BatchNorm 的有效性,但还没有分析来解释如何处理 BatchNorm 层。BatchNorm 的传统用法已被证明能够使得优化过程更加平滑,并使梯度行为的预测性更强且更稳定。

但是,BatchNorm 的此类用法依然阻止网络参数在梯度方向上进行更新,而这是实现最小损失的最快方法,并且呈现出一种曲折的优化行为。与之前批归一化Dropout 在激活层之前同时被使用不同,本文研究者提出,批归一化Dropout 的作用类似于 ICA 方法,所以应置于权重层之前。如此一来,训练深度神经网络时会实现更快的收敛速度。理论分析和实验结果表明,批归一化Dropout 应结合作为 IC 层,这样将来能够广泛应用于训练深度网络。

IC 层可以用几行 Python 代码轻松实现,如下图所示:

图 2:基于 Keras 用几行 Python 代码实现 IC 层。

实验

在本文中,研究者尝试用一堆 -IC-Weight-ReLU- 层来实现 ResNet。遵循 (He et al., 2016b),研究者研究了三种不同类型的残差单元,每种都有其独特的短路径,如图 3(b)所示,且旨在找到最好的残差单元。

图 3:(a) 经典的 ResNet 架构,其中 + 表示求和。(b) 用 IC 层重构的 ResNet 架构。

研究者在基准数据集上实现了重构的 ResNet 架构,以评估 IC 层的实际效用。这些测试集包括 CIFAR10/100 和 ILSVRC2012 数据集。为了公平比较,研究者还为 IC 层引入了一对可训练的参数,该参数缩放和变换由 BatchNorm 归一化的值,这样重构的 ResNet 将具有与相应的基线架构相同数量的可训练参数

表 1:训练结束时,在 CIFAR10/100 数据集上 ResNet 和用 IC 层实现的 ResNet-B 的测试结果对比。

图 4:训练不同的 epoch 时,在 CIFAR10/100 数据集上 ResNet 和用 IC 层实现的 ResNet-B 的测试准确率。(a) 在 CIFAR 10 上实现的 ResNet110;(b) 在 CIFAR 10 上实现的 ResNet164;(c) 在 CIFAR 10 上实现的 ResNet-B 110;(d) 在 CIFAR 10 上实现的 ResNet-B 164;(e) 在 CIFAR 100 上实现的 ResNet110;(f) 在 CIFAR 100 上实现的 ResNet164;(g) 在 CIFAR 100 上实现的 ResNet-B 110;(h) 在 CIFAR 100 上实现的 ResNet-B 164。 

图 5:在 ImageNet 验证集上的 Top-1 和 Top-5(1-crop testing)误差率。


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

理论深度神经网络Dropout批归一化
1
相关数据
激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

Dropout技术

神经网络训练中防止过拟合的一种技术

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

神经科学技术

神经科学,又称神经生物学,是专门研究神经系统的结构、功能、发育、演化、遗传学、生物化学、生理学、药理学及病理学的一门科学。对行为及学习的研究都是神经科学的分支。 对人脑研究是个跨领域的范畴,当中涉及分子层面、细胞层面、神经小组、大型神经系统,如视觉神经系统、脑干、脑皮层。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

批归一化技术

批归一化(Batch Normalization,BN)由谷歌于2015年提出,是一个深度神经网络训练的技巧,它不仅可以加快模型的收敛速度,还能在一定程度上缓解深层网络中的“梯度弥散”问题,从而使得训练深层网络模型更加容易和稳定。目前BN已经成为几乎所有卷积神经网络的标配技巧了。从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

腾讯机构

腾讯科技股份有限公司(港交所:700)是中国规模最大的互联网公司,1998年11月由马化腾、张志东、陈一丹、许晨晔、曾李青5位创始人共同创立,总部位于深圳南山区腾讯大厦。腾讯由即时通讯软件起家,业务拓展至社交、娱乐、金融、资讯、工具和平台等不同领域。目前,腾讯拥有中国国内使用人数最多的社交软件腾讯QQ和微信,以及中国国内最大的网络游戏社区腾讯游戏。在电子书领域 ,旗下有阅文集团,运营有QQ读书和微信读书。

http://www.tencent.com/
推荐文章
暂无评论
暂无评论~