谷歌 | 宽模型 和 深模型 学到的,一样吗?
作者|Thao Nguyen, AI Resident, Google Research
来自|AI公园 编译|ronghuaiyang
提高模型容量可以从宽度和深度着手,但是,宽模型和深模型学到的是相同的东西吗?用各自适用的场景吗?
论文链接:https://arxiv.org/abs/2010.15327
提高神经网络性能并使其适应可用计算资源的一个常见做法是调整体系结构的深度和宽度。事实上,流行的神经网络家族,包括EfficientNet, ResNet和Transformers,由一套灵活的深度和宽度的架构组成。然而,除了对准确性的影响之外,对于这些结构设计的基本选择如何影响模型的理解有限,比如对其内部表示的影响。
在“Do Wide and Deep Networks Learn the Same Things? Uncovering How Neural Network Representations Vary with Width and Depth”这篇文章中,我们通过其隐藏表示和最终输出,对来自同一结构的宽网络和深度网络之间的相似性进行了系统研究。在非常宽或非常深的模型中,我们在它们的内部表征中发现了一个典型的块结构,并在这种现象和模型过参数化之间建立了联系。模型之间的比较表明,没有块结构的模型在相应层的表示之间表现出显著的相似性,而包含块结构的模型表现出高度不同的表示。当在相同的测试集上对宽和深模型进行评估时,内部表示的这些属性反过来转化为在类和样本级别上的不同的系统性错误。
比较表示相似性与CKA
通过利用我们先前开发的Centered Kernel Alignment (CKA)技术,我们扩展了之前的分析表示的工作,该技术提供了一个健壮的、确定任意一对神经网络层所学习的表示之间的相似性的可扩展的方法。CKA将两层的表示(即激活矩阵)作为输入,并输出0(完全不相似)和1(相同的表示)之间的相似性得分。
我们在ResNets家族上应用CKA,使用不同的深度和宽度,在常见的基准数据集上训练(CIFAR-10和ImageNet),并使用表示热图来说明结果。考虑模型的层中每个热图的x和y轴,从输入到输出,每一项(i, j)是层i和层j之间的CKA相似度评分。
我们使用CKA计算单个模型(即网络1和网络2相同时)和跨模型(即网络1和网络2使用不同的随机初始化训练,或具有完全不同的架构时)中所有层对的表示相似性。
下面是我们在一个深度26,宽度乘法器1的ResNet中比较每一层和其他每一层的表现时产生的热图的一个例子。在这里使用的设计约定中,规定的深度仅指网络中卷积层的数量,但我们分析了现有的所有层,宽度乘法器适用于每个卷积中滤波器的数量。请注意热图中的checkerboard模式,它是由体系结构中的跳跃连接(层之间的直接连接)引起的。
Block结构的出现
在更深或更宽网络的表示热图中,最突出的是出现了一组具有高度相似表示的连续层,这些层在热图中以黄色方块的形式出现(即具有高CKA分数的区域)。这种现象,我们称之为“block结构”,表明底层在逐步细化网络表示方面可能没有我们预期的那么有效。实际上,我们证明了在block结构中任务性能变得停滞不前,并且可以在不影响最终性能的情况下修剪一些底部的层。
块结构,一个大的,连续的层集具有高度相似的表示-随着宽度或深度的增加而出现。每个热图平面上显示了单个神经网络中所有层对之间的CKA相似性。虽然它的大小和位置在不同的训练中可能会有所不同,但块结构是一种稳健的现象,在较大的模型中始终如一地出现。
通过附加的实验,我们表明,相比于模型的相对于训练数据集的大小,块结构与模型的绝对大小的关系较小。随着我们减小训练数据集的大小,块结构开始出现在更浅更窄的网络中:
猜您喜欢:
附下载 |《TensorFlow 2.0 深度学习算法实战》