查看原文
其他

​BatchNorm的“平替”?TUM提出KNConvNets,消除CNN中BatchNorm的缺点

Jason PaperWeekly 2022-07-18


©PaperWeekly 原创 · 作者 | Jason

研究方向 | 计算机视觉



现有的深度卷积神经网络(CNN)结构通常依赖于 batch normalization(BatchNorm)来有效地训练模型。BatchNorm 显著提高了模型性能,但在小 batch 情况下性能较差。为了克服这一局限性,作者提出了核归一化(kernel normalization)和核归一化卷积层,并将它们作为主要的构建块集成到核归一化卷积网络(KNConvNets)中。 

作者实现了与最先进的 CNN(如 ResNet 和DenseNet)相对应的 KNConvNets,同时放弃了 BatchNorm 层。通过大量实验,作者表明,KNConvNet 在准确性和收敛速度方面始终优于 BatchNorm,GroupNorm 和 LayerNorm,同时保持了有竞争力的计算效率。




论文和代码地址



论文标题:
Kernel Normalized Convolutional Networks

论文地址:

https://arxiv.org/abs/2205.10089



Motivation

卷积神经网络(CNN)是计算机视觉任务中的标准架构。深层 CNN,包括 ResNet、DenseNet 和 Efficentnet,在对具有挑战性的数据集(如 ImageNet)进行分类方面取得了优异的性能。这些 CNN 的主要构建块之一是 batch normalization(BatchNorm)。BatchNorm 层通过平滑优化空间和解决梯度消失的问题,大大增强了深层 CNN 的性能。



然而,BatchNorm 的缺点是打破了 batch 中样本之间的独立性。这是因为 BatchNorm 沿着 batch 维度执行归一化(上图 a),因此,与给定样本相关的归一化值取决于 batch 中其他样本的统计信息。因此,BatchNorm 的有效性在很大程度上取决于 batch 大小。使用大 batch,BatchNorm 可以更准确地估计 batch 统计信息,从而有效地训练模型,但会产生较高的内存开销。另一方面,对于小 batch,BatchNorm 会导致模型精度的大幅降低。

为了克服 BatchNorm 的局限性,引入了与 Batch 无关的归一化层,包括层归一化(LayerNorm),instance 归一化(InstanceNorm),group 归一化(GroupNorm),位置归一化(PositionalNorm),局部上下文归一化(LocalContextNorm)。它们分别对 batch 中的每个样本执行归一化。虽然这些层没有 BatchNorm 的缺点,但它们通常无法实现与 BatchNorm 相当的性能。因此,尽管存在上述限制,BatchNorm 仍然是大多数深层 CNN 中的归一化层。这促使作者开发与 batch 无关但与 BatchNorm 一样有效的替代层。

本文的主要贡献是提出了两个新的 batch 处理无关层,称为核归一化(KernelNorm)层和核归一化卷积(KNConv)层,以进一步提高深层 CNN 的性能。KernelNorm 类似于池化层,但是它对核窗口指定的元素进行归一化,而不是计算元素的平均值/最大值(如上图g)。

KNConv 是 KernelNorm 与卷积层的组合,在这里它将 KernelNorm 应用于输入,并将 KernelNorm 的输出馈送到卷积层(如下图)。从另一个角度来看,KNConv 与卷积层相同,但是 KNConv 首先对核窗口指定的输入元素进行归一化,然后计算归一化元素与核权重之间的卷积。KNConv 在上述两种形式中的计算效率都不高,因为它会导致非常多的归一化单元,因此,相当大的计算开销来归一化相应的元素。



为了解决这个问题,作者提出了一种计算效率高的 KNConv,其中卷积的输出使用归一化单位的均值和方差进行调整。这样,就不需要对元素进行归一化,从而将计算时间提高了几个数量级。以 KernelNorm 和计算效率高的 KNConv 为主要构建块,作者实现了与流行的 CNN(包括 VGG、DenseNet 和 ResNet)相对应的核归一化卷积网络(KNConvNets)。

使用不同的数据集,包括 CIFAR-10 和 Imagenette/Imagewoof,作者证明,KNCOVnets 在准确性和收敛速度方面始终优于 BatchNorm、GroupNorm 和 LayerNorm,同时提供了可比的计算效率。




方法

3.1 KernelNorm

KernelNorm 将核大小 、步长、填充 和 dropout 概率 p 作为超参数。如果指定了 padding,则用零填充输入。KernelNorm 沿着通道、高度和宽度维度执行规范化,但与 batch 维度无关(上图g)。KernelNorm 沿着通道、高度和宽度维度执行归一化,但独立于 Batch 维度。

KernelNorm 的归一化单位是形状为   的张量,即,除了由核窗口从高度和宽度维度指定的元素的子集之外,通道维度中的所有元素。KernelNorm 将随机 Dropout 应用于归一化单元以获得 dropped-out 单元,计算 dropped-out 单元的均值和方差,以及使用均值和方差来归一化原始归一化单元:



式中,p 是 dropout 概率, 是 dropout 操作,U 是归一化单位, 是 dropped-out 单位, 区域和 dropout 单位的平均值和方差, 是 normalized 单位。KernelNorm 在训练过程中引入了正则化效果,通过使用对 dropped-out 单元 ′ 计算的统计量,归一化原始单元 U 的元素,提高了模型的泛化能力。

KernelNorm 的第一个归一化单元被限定到由高度和宽度维度中的对角线点(1,1)和 指定的窗口。下一个归一化单元的坐标是 ,这是通过沿宽度尺寸滑动窗口 个元素获得的。如果在宽度维度中没有足够的元素用于 kernel,则窗口将在高度维度中按 个元素滑动,并重复上述过程。

请注意,KernelNorm 处理形状为 的输入,其中 是填充大小。KernelNorm 的输出是归一化单位 U 沿高度和宽度维度的 concat 结果。KernelNorm 的行为与池化层类似,但有一个主要区别:KernelNorm 归一化核窗口指定的元素,而不是计算元素的最大值/平均值。KernelNorm 的输出是形状 ,它总共有 个归一化单位,其中 的计算如下:



KernelNorm 是一个 batch 无关的局部归一化层,但与现有的归一化层有两个不同之处:

1)输入中的原始元素与输出中的归一化元素之间不一定存在一一对应关系。如果步长小于 kernel 大小,则某些输入元素会在输出中使用多次。对于大于 kernel 大小的步长值,在归一化过程中会完全忽略一些输入元素。因此,KernelNorm 的输出形状可能与输入形状不同;

2)KernelNorm 不需要移位和缩放可训练参数,因为它的输出通常提供给卷积或平均池层,而不是非线性激活函数,如 ReLU。

3.2 KNConv



如上图所示,KNConv 是 KernelNorm 和传统卷积层的组合。它采用与卷积层完全相同的输入通道数 、输出通道数 、核大小 、步长 和 padding 以及 dropout 概率 p 作为超参数。KNConv 首先将带有核大小、步长、padding 和 dropout 概率 p 的 KernelNorm 应用于输入张量。

接下来,它将具有 通道、 滤波器、内核大小、步长 和零填充的卷积层应用于 KernelNorm 的输出。也就是说,卷积层的内核大小和步长值都与 KernelNorm 中使用的核大小相同。

从另一个角度来看,KNConv 与卷积层相同,只是它在计算卷积之前归一化了核窗口指定的输入元素。假设形状为 的 U 包含核窗口指定的输入元素, 是 KernelNorm 中 U 的归一化版本,Z 是给定过滤器的内核权重, 是卷积(或滑动点积)运算,b 是 bias 值。KNConv 计算输出如下:



KNConv(或实际上的 KernelNorm)导致了非常多的归一化单元,从而导致了显著的计算开销。与卷积层相比,KNConv 的额外计算开销源自计算每个归一化单元的平均值和方差,以及通过平均值和标准偏差对元素进行归一化。
3.3 Computationally-efficient KNConv
计算效率高的 KNCOV 重新定义了计算过程,从而完全消除了归一化元素的开销:




因此,KNCOV 将卷积层应用于原始单位,计算单位的平均值和标准偏差以及核权重之和,并最终使用计算出的统计信息调整卷积输出。这样,就不需要对元素进行归一化,从而将 KNCOV 的计算时间提高了几个数量级。
3.4 KNConvNets
KNCOVnets 采用 KernelNorm 和计算效率高的 KNCOV 作为主要构建块。考虑以下一般规则,我们可以实现与现有深度 CNN 架构(如 DenseNets 或 Resnet)相对应的 KNCOVnet:(1)用具有相同核大小、步长和 padding、dropout 概率 0.1 和 bias 值为 True 的 KNConv 替换卷积层,(2)移除所有 BatchNorm 层,(3)在每个 KNConv 层之后插入 ReEU 激活,(5)放置具有核大小(1,1)、步长(1,1)、padding(0,0)和 dropout 概率 0.2 的 KernelNorm 层,然后在最后的自适应平均池化层之前插入 ReEU 激活。




实验




上图和上表展示了不同数据集上 batch-size 和准确率的关系。我们发现,对于所有 batch 大小,KNConvNet 始终优于 GroupNorm 和 LayerNorm,对于大多数 batch 大小由于 BatchNorm。基于 BatchNorm 的模型的准确性受到较小 Batch 的显著影响,而基于 KernelNorm、GroupNorm 和 LayerNorm 的模型则不是这样,因为它们与 Batch 无关。




上图和上表展示了 batch 大小为 32 的训练损失和测试精度与 epoch 的关系。我们发现,在所有案例研究中,KNCOVnets 的收敛速度远远快于 GroupNorm 和基于 LayerNorm 的网络。与 BatchNorm 相比,KNConvNets 的收敛速度略高。




总结

BatchNorm 显著提高了模型的收敛速度和精度,但对于较小的 batch 大小,其性能较差。尽管 GroupNorm 和 LayerNorm 等与 batch 无关的替代方案不会受到这些缺陷的影响,但它们无法与 BatchNorm 的性能竞争。

为了应对这一挑战,作者提出了两个新的 batch 处理无关层 KernelNorm 和 KNConv,并将它们用作 KNConvNets 的主要构建块。通过广泛的实验,作者表明 KNConvNet 在小 batch 和大 batch 情况下都提供了出色的性能,并且在精度和收敛速度方面始终优于 BatchNorm、LayerNorm 和 GroupNorm,同时保持了相当的计算效率。


更多阅读




#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编




🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



·

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存