\

通过代理归一的激活消除卷积神经网络中的批次依赖性

作者:

分享  

Share on weixin
Share on weibo
Share on linkedin

订阅

Graphcore Research解释了他们的新技术“Proxy Norm”(代理规范)是如何为以存储高效的方式训练卷积神经网络铺平道路的。Graphcore的新论文发现,Proxy Norm保留了批次归一化(Batch Normalisation)的优点,同时消除了导致以前执行效率低下的批次依赖性的并发问题。随着机器学习模型尺寸的不断增长和数据集的不断扩大,Proxy Norm可以帮助人工智能工程师确保未来的执行效率。

归一化的挑战

归一化(Normalisation)对于将神经网络成功扩展到大型和深度模型至关重要。虽然归一化的范围最初仅限于输入处理(Lecun等人,1998年),但随着在整个网络中保持中间激活归一的批次归一化(Batch Normalisation)技术(Batch Normalisation)技术(Ioffe和Szegedy,2015年)的引入,这个想法被提升到另一个层次。

Batch Norm(批次规范)强加的特定归一化是通道归一化(Channel-Wise Normalisation)。这具体意味着Batch Norm通过减去通道均值并除以通道标准偏差对中间激活进行归一。值得注意的是,Batch Norm在不改变神经网络的表达性的情况下实现了这种通道归一化。这意味着批次归一的网络的表达性与非归一网络的表达性相同。我们会发现,这两个特性,即通道归一化保持表达性(Preservation of Expressivity),都是有益的。

遗憾的是,Batch Norm带来了同样严重的并发问题:批次依赖性(Batch Dependence)。由于整个数据集的通道均值和方差不容易计算,Batch Norm通过将当前小批次作为整个数据集的代理来近似估算这些统计数据(参见图1)。鉴于在Batch Norm的计算中使用了小批次统计,神经网络与给定输入相关联的输出不仅取决于该输入,还取决于小批次中的所有其他输入。换言之,全批次统计与小批次统计求近似的做法在神经网络的计算中造成了批次依赖性

图1:每个子图对应于一种特定的归一化技术,其特征在于其组件组,以蓝色突出显示,共享相同的归一化统计数据。在每个子图中,中间激活的张量由批次轴N、通道轴C和空间轴(H,W)组成。图来自(Wu & He,2015)。

让我们更加详细地看看Batch Norm,以便了解通道归一化和保持表达性是有益的,以及为什么批次依赖性是一个并发的问题。然后,我们将介绍Graphcore Research在我们的论文《代理归一化激活以匹配批次归一化,同时去除批次依赖性》(“Proxy-Normalizing Activations to Match Batch Normalization while Removing Batch Dependence”)中提出的新颖方法Proxy Norm,以及Proxy Norm如何被用来在消除批次依赖性的同时保留Batch Norm的这两个优点。

Batch Norm的第一个优点:通道归一化

如上所述,Batch Norm在每一层保持中间激活被通道归一至“接近”非线性。这一通道归一化有两个优点:

  1. 由于非线性“作用于”接近归一化的通道分布,因此对于这些通道分布,它可以是有效的非线性。然后每一层都增加了表达能力,神经网络有效地利用了它的整个深度。
  2. 由于不同的通道具有可比的方差,所以通道平衡良好,神经网络有效地利用了它的整个宽度。

简言之,通道归一化允许神经网络有效地利用其全部容量。然而,这种优势并没有保留在与批次无关的、Batch Norm原型替代方案中(见图1)。事实上,虽然通道归一化保留在Instance Norm(实例规范)中,但它没有保留在Layer Norm(层规范)或Group Norm(组规范)中。在图2的左上角图中,这转化为不可忽略的、具有Layer Norm和Group Norm的通道平方均值。

Batch Norm的第二个优点:保持表达性

如前所述,使用Batch Norm的通道归一化不会以改变神经网络的表达性为代价。这意味着如果Batch Norm的比例和移位参数选择适当,任何非归一化网络都可以等效地表达为批次归一化网络(在全批次设置中)。相反地,如果卷积权重和偏差选择适当的话,任何批次归一化网络(在全批次设置中)都可以等效地表达为非归一化网络。简言之,Batch Norm相当于对神经网络的解空间进行简单的重新参数化。

保持表达性是Batch Norm的第二个优点。要想领会到为什么这种保持表达性是有益的,一个有用的方法就是了解为什么使用与批次无关的、Batch Norm替代方案来改变表达性是有害的。在Instance Norm和Group Norm的情况下,表达性改变的一个症状是实例均值和标准差没有方差,如图2最右边的两个子图所示。这种实例统计数据没有方差的情况不利于学习,因为它往往与神经网络深层中高级概念的表达不相容。

图2:在具有各种Norm(规范)的ResNet-50的ImageNet训练的所有时期平均的实例均值(顶部)和实例标准差(底部)的平方均值(左)和方差(右)。在不同层深度(x轴)的归一化之后计算实例统计数据。

Batch Norm的并发问题:批次依赖性

Batch Norm的批次依赖性的主要症状是存在噪声,该噪声源于每个小批次中不同输入的随机选择。当全批次统计数据与小批次统计数据近似时,这种噪声会在Batch Norm的层之间传播,并在每个Batch Norm的层被“激发”。因此,小批次越小,噪声就越强。这种现象转化为Batch Norm的特定正则化(Luo等人,2019),其强度取决于噪声振幅,因而也取决于小批次的尺寸。

遗憾的是,这种正则化不容易控制。当目标是降低这种正则化的强度时,实现这一目标的唯一方法是增加小批次的尺寸。根据任务和所需的正则化强度,Batch Norm接下来对与最佳性能兼容的小批次的尺寸施加下限。当“计算”小批次的尺寸低于此下限时,保持最佳性能需要在多个节点之间进行“昂贵”的统计同步,以产生比“计算”小批次更大的“归一化”小批次(Yin等人,2018)。因此,批次依赖性可能导致的主要问题是执行效率低下。

在使用Graphcore的IPU时,解决这个问题的过程就变得非常不同了,因为IPU提供的额外加速和节能是通过更严格的存储限制来获取的。即使使用较少依赖本地存储的替代加速器,这个问题在未来也可能变得至关重要。随着数据集变得越来越大,我们确实预计使用越来越大的模型将施加更加强烈的存储约束。对于给定的模型尺寸,使用更大的数据集也意味着需要更少的正则化,导致需要越来越大的“归一化”小批次,以确保在使用依赖于批次的Norm(如Batch Norm)时的最佳性能。

Proxy Norm:保持Batch Norm的优点,同时消除批次依赖性

那么我们如何在消除批次依赖性的同时保持Batch Norm的优点呢?

Batch Norm的两个优点(即通道归一化和保持表达性)无法和Batch Norm的与批次无关的原型替代方案同时保留。一方面,Layer Norm在保持表达性方面做得很好,但代价是通道非归一化。另一方面,Instance Norm确保了通道归一化,但代价是表达性的剧烈改动。虽然Group Norm可以在Layer Norm的问题和Instance Norm的问题之间实现更好的权衡,但它仍然无法解决问题。总之,Batch Norm的所有与批次无关的原型替代方案都会导致性能下降。

为了解决这个问题,我们需要一个与批量无关的归一化,它可以避免通道非归一化,同时保持表达性。我们可以通过注意以下几点来使这两个要求更加精确:

  1. 造成通道非归一化的主要操作是:(i)遵循归一化操作的可学习仿射变换;(ii)激活函数。
  2. 在神经网络中插入仿射操作时保留了表达性;
    这些观察结果指导了我们对新技术“Proxy Norm”的设计工作。Proxy Norm将归一化操作的输出同化为高斯“代理”变量,该变量假定接近于通道归一化。这个高斯代理被输入到与真实激活相同的两个相同的操作中,即相同的可学习仿射变换和相同的激活函数。在这两个操作之后,代理的均值和方差最终被用于对真实激活本身进行归一化。图3对此有所描述。
图3:通过在预先存在的黑色操作之上添加“便宜”的红色操作,将Proxy Norm合并到神经网络中

Proxy Norm能够保持表达性,同时补偿通道非归一化的两个主要来源,即,可学习的仿射变换和激活函数。这引发我们采用与批次无关的归一化方法,将Proxy Norm与Layer Norm相结合,或者将Group Norm与少量组相结合。从图2中可以看出,这种与批次无关的归一化方法保留了通道归一化,同时最大限度地减少了对表达性的任何改动。通过这种方法,我们保留了Batch Norm的优点,同时消除了对批次的依赖性。

接下来的问题是,这种方法在实践中是否也能带来良好的性能。将Batch Norm和与批次无关方法进行比较需要特别小心,才能正确解释因Batch Norm的批次依赖性而增加的正则化。为了“减除”这种正则化效应,我们在每个实验中都加入了额外的正则化。

从图4中可以看出,当特别注意时,我们的与批次无关的方法产生的ImageNet性能在各种模型类型和尺寸上始终达到或超过Batch Norm的性能。(请注意,我们的EfficientNet变体在之前的博文和本篇论文中有过介绍。)这意味着我们的批次无关方法不仅在行为上而且在性能上都达到了Batch Norm的水平!

作为我们分析工作的一个副产品,我们发现,虽然有效的归一化对于良好的ImageNet性能是必要的,但它还必须带有适当的正则化。在更大的数据集上,我们预计有效的归一化本身就足够了,因为需要的正则化比较少(Kolesnikov 等人,2020 年Brock 等人,2021 年)。

图4:使用Batch Norm、Group Norm和Group Norm + Proxy Norm的各种类型和尺寸的模型的ImageNet性能

结论

在这项研究中,我们深入探讨了卷积神经网络中归一化的内部工作原理。我们收集了理论和实验证据,证明有效的归一化应该:(i)保持通道归一化和(ii)保持表达性。虽然Batch Norm保留了这两个特性,但它也带来了批次依赖性。

在研究Batch Norm的与批次无关的原型替代方案时,我们发现通道归一化和保持表达性很难同时实现。这引发我们设计了新技术Proxy Norm,它在保持通道归一化的同时保持了表达性。接下来,我们采用了基于Proxy Norm与Layer Norm结合或Group Norm与少量组结合的、与批次无关的归一化方法。我们发现这种方法在行为和性能方面始终达到Batch Norm的水平,同时始终保持批次无关性。

我们的方法为以更加存储高效的方式训练卷积神经网络铺平了道路。这种存储效率为加速器(例如Graphcore的IPU)提供了显著的优势,这些加速器利用本地存储来提高执行效率。从长远来看,我们预计即使在替代硬件上,这种存储效率也至关重要。

阅读论文

本文最初发布于Towards Data Science

More Posts

ChatGPT开源平替:OpenAssistant OASST1微调版Pythia-12B

Flan-T5:用更小且更高效的LLM实现出色效果

详细攻略:在IPU上以float16精度运行FLAN-T5-XL推理

较小模型,超高性能:DeBERTa和自然语言理解的未来

PackedBert:如何用打包的方式加速Transformer的自然语言处理任务

Pienso为企业提供由云上IPU支持的高效大型语言模型访问

获取最新的GRAPHCORE资讯

在下方注册以获取最新的资讯和更新:




    获取最新的GRAPHCORE资讯

    在下方注册以获取最新的资讯和更新: