在现在的标准技术下,例如过度参数化,批量标准化和添加残差链接,“现代”神经网络训练(至少用于图像分类任务和许多其他任务)通常非常稳定。使用标准的神经网络体系结构和训练算法(通常是带有动量的SGD),学习的模型不仅在训练精度方面,而且甚至在测试精度方面,都始终表现良好,无论训练过程中使用哪种随机初始化或随机数据顺序。例如,如果使用不同的随机种子在CIFAR-100数据集上训练相同的WideResNet-28-10体系结构10次,则平均测试准确度为81.51%,而标准偏差仅为0.16%。
在一篇名为“在深度学习中理解集合体,知识蒸馏和自我蒸馏”的新论文中,我们专注于研究纯粹由随机化引起的训练过程中神经网络的差异。我们提出以下问题:除了测试准确性方面的小偏差外,通过不同随机初始化训练的神经网络是否实际上学习了非常不同的功能?如果是这样,差异来自何处?我们如何减少这种差异并使神经网络更稳定甚至更好?事实证明,这些问题并非无关紧要,它们涉及深度学习中广泛使用的三种技术的奥秘。
谜团1:合奏。观察到使用不同随机种子(尽管测试性能非常相似)的学习网络\(F_1 \),…\(F_ {10} \)与非常不同的功能相关联。确实,使用一种称为“集成”的众所周知的技术,该技术仅获取这些经过独立训练的网络的输出的未加权平均值,就可以在许多深度学习应用程序中极大地提高测试时间性能。 (请参见下面的图1。)这意味着各个函数\(F_1 \),…\(F_ {10} \)必须不同。但是,为什么合奏会突然提高性能?或者,如果一个人直接直接训练(\(F_1 \)+⋯+ \(F_ {10} \))/ 10,为什么性能提升就消失了?
谜团2:知识升华。尽管集成可以极大地改善测试时间性能,但在推理时间(即测试时间)中它变得慢了10倍:我们需要计算10个神经网络的输出,而不是1个。当我们在低能耗的移动环境中部署此类模型时,这是一个问题。为了解决这个问题,提出了一种称为知识蒸馏的开创性技术。也就是说,知识提炼只是训练另一个单独的模型来匹配集合的输出。在这里,猫图像上的合奏(也称为黑暗知识)的输出可能看起来像“ 80%猫+ 10%狗+ 10%汽车”,而真正的训练标签是“ 100%猫”。 (请参见下面的图2。)
事实证明,经过如此训练的单个模型可以在很大程度上匹配10倍以上集成体的测试时间性能。但是,这导致了更多的问题。与匹配真实标签相比,为什么匹配集合的输出可以为我们提供更好的测试准确性?此外,我们可以在知识提炼后对模型进行整体学习以进一步提高测试准确性吗?
神秘之三:自我蒸馏。请注意,至少从直觉上讲,知识升华是有意义的:教师合奏模型的测试准确度为84.8%,因此学生个人模型可以达到83.8%。以下现象被称为“自我提炼”(或“成为您自己的老师”),这非常令人惊讶-通过对具有相同体系结构的单个模型进行知识提炼,还可以提高测试准确性。 (请参见上面的图2。)请考虑以下问题:如果训练一个单独的模型仅能提供81.5%的测试准确度,那么“如何再次使用自己作为老师的同一个模型来训练相同的模型”突然将测试准确度始终提高到83.5%?
关于集合的大多数现有理论仅适用于单个模型根本不同(例如,变量的不同子集所支持的决策树)或在不同数据集上受过训练(例如自举)的情况。他们无法证明深度学习世界中的上述现象是合理的,在深度学习世界中,经过单独训练的神经网络具有相同的架构,并且使用相同的训练数据,它们的唯一区别来自训练期间的随机性。
也许深度学习中最接近匹配集合的现有定理是随机特征映射的集合。一方面,将随机(指定)特征的多个线性模型组合在一起可以提高测试时间性能,因为这会增加特征数量。另一方面,在某些参数范围内,神经网络权重可以保持非常接近其初始化值(称为神经正切核或NTK范围),并且所得网络仅在规定的特征映射上学习线性函数,完全由随机初始化决定(请参见本工作)。当将两者结合时,可能会推测深度学习中的集合具有随机特征映射中的集合原理。这就引出了以下问题:
与随机特征映射(即NTK特征映射)相比,集成/知识蒸馏在深度学习中是否以相同的方式工作?
答:并非如此,如下面图3中的实验所示。该图将深度学习中的集成和知识提炼与随机特征映射上的线性模型中的集合和知识提炼进行了比较。在这两种情况下合奏都可以工作。但是,图3中的准确度清楚地表明,它们的工作原因完全不同。特别:
与深度学习情况不同,无法将集合在随机特征设置中的出色性能提炼为单个模型。例如,在图3中,神经正切核(NTK)模型的集成在CIFAR-10数据集上达到了70.54%的准确度,但是在知识提炼后,它下降到了66.01%,甚至比测试的66.68%的准确度差。个人模型。
在深度学习中,与训练单个模型\(F_i \)相比,直接训练模型(\(F_1 \)+⋯+ \(F_ {10} \))/ 10的平均值没有好处。而在随机特征设置中,训练均值的效果优于单个模型及其整体。例如,在图3中,NTK模型的整体准确度达到70.54%,但比直接训练10个模型的平均准确度为72.86%还要差。
这是因为神经网络正在执行分层特征学习-每个单独的模型\(F_i \)尽管具有不同的随机初始化,但仍然能够学习与其他模型相同的特征集。因此,与单个网络相比,它们的平均值几乎不提供额外的容量。但是,在线性设置中,每个\(F_i \)使用一组不同的规定特征;因此,尽管结合使用这些功能(使用集成或直接训练平均值)确实提供了优势,但由于功能的缺乏,它们无法通过提炼成单独的模型。
除了随机特征的集合外,还可以推测,由于神经网络的高度复杂性,每个单独的模型\(F_i \)可以学习函数\(F_i \)\((x)= y +ξ_i\) ,其中\(ξ_i\)是一些噪声,取决于训练过程中使用的随机性。古典统计表明,如果所有\(ξ_i\)都是大致独立的,则对其求平均即可大大降低噪声量。从而,
“合奏减少差异”是否可以成为合奏性能提升的原因?
答:我们的证据表明,在深度学习的背景下,减少方差的假设非常可疑:
Ensemble不会永远提高测试精度:与超过10个单独模型的集成相比,超过100个单独模型的集成通常没有任何区别。因此,与10个\(ξ_i\)相比,平均100个\(ξ_i\)不再减小方差-表示这些\(ξ_i\)是(1)可能不是独立的,和/或(2)可以有偏差,因此均值不为零。在(1)的情况下,很难争论通过将这些\(ξ_i\)
即使一个人希望接受理想主义的信念,即(1)不会出现,所以所有这些\(ξ_i\)都只是有偏差的,或者在符号中,\(F_i(x)= y +ξ+ξ+ξ_i\)'其中\(ξ\)是一个常见错误,\(ξ_i\)'是一个单独的独立错误,那么,知识提炼为何起作用?合奏后,我们期望网络输出具有共同偏置\(ξ\)的y +ξ。那么,为什么带有错误ξ(又称为暗知识)的输出要比原始的用于训练的真实标签更好?
在图4中,我们看到神经网络的集成学习并不总是会提高测试的准确性-至少当输入是高斯型的时候。换句话说,“平均这些”不会导致这些网络的任何准确性提高。因此,我们需要比诸如“减少差异”之类的通用语句更仔细地理解深度学习中的整体。
由于合奏不太可能在非结构化随机输入下工作(请参见图4),因此我们必须查看数据中的特殊结构以正确理解它。
在我们的新工作中,我们建议研究一种通用结构,该结构可以在深度学习擅长的许多数据集中找到。特别是在视觉数据集中,通常可以使用多个视图对对象进行分类。例如,通过查看前灯,车轮或窗户,可以将汽车图像分类为汽车。对于图像中汽车的典型放置,我们可以观察到所有这些特征,并且使用其中一个特征将其归类为汽车就足够了。但是,有一些从特定角度拍摄的汽车图像,其中缺少一个或多个这些特征。例如,面向前方的汽车的图像可能缺少车轮特征。我们在图5中给出了真实的例子。
我们将此结构称为“多视图”,其中数据的每个类别都具有多个视图功能。在大多数数据中,几乎所有视图功能都会显示,但是在某些数据中,某些视图功能可能会丢失。 (更广泛地说,“多视图”结构不仅在输入像素空间中显示,而且在中间层中也显示;我们有兴趣的读者可以参考本文的图6以获得实验依据)。
我们建立了一个定理,表明在多视图数据下的神经网络训练过程中,该网络将:
根据学习过程中使用的随机性,快速学习这些视图功能的子集。
记住使用这些视图功能无法正确分类的少量剩余数据。
第一点意味着不同网络的集合将收集所有这些可学习的视图特征,从而实现更高的测试准确性。第二点意味着,各个模型不是学习所有视图特征,不是因为它们没有足够的容量,而是因为没有足够的训练数据来学习这些视图。大多数数据已使用现有视图特征正确分类,因此在此训练阶段它们基本上不提供渐变。
在这项新工作中,我们继续展示知识提炼的工作原理。在现实生活中,与其他图像相比,某些汽车图像可能看起来“更像猫”:例如,某些汽车图像上的前灯可能看起来像猫眼。发生这种情况时,集成模型可以提供有意义的黑暗知识:例如,“汽车图像X像猫一样占10%”。
现在是关键观察。在训练单个神经网络模型时,如果未学习“大灯”视图,则即使其余视图仍可以正确地将图像X标记为汽车,也无法将其用于匹配黑暗知识,“图像X为10%一只猫。”换句话说,在知识提炼过程中,个体模型被迫学习每个可能的视图特征,以匹配整体表现。请注意,深度学习中知识升华的症结在于,作为神经网络的单个模型正在执行特征学习,因此能够学习集合的所有特征。这与我们在实践中观察到的一致。 (参见图6。)
在这项新工作中,我们还为知识的自我提炼提供了理论支持(请参见图3)。训练单个模型以匹配另一个相同的单个模型的输出(但使用不同的随机种子)会以某种方式提高性能。
在较高的层次上,我们认为自我蒸馏是将集成和知识蒸馏以更紧凑的方式结合在一起的方法。当从随机初始化中学习单个模型\(F_2 \)以匹配单独训练的单个模型\(F_1 \)的输出时,可以期望\(F_2 \)根据自身的随机初始化来学习特征的子集。 。除此之外,\(F_2 \)还具有学习\(F_1 \)已经学习的特征子集的动机。换句话说,可以将这一过程视为“集成学习两个单独的模型\(F_1 \),\(F_2 \)并将其提炼为\(F_2 \)”。最终的学习模型\(F_2 \)不一定涵盖数据集中的所有可学习视图,但是它有潜力至少学习通过对两个单独的模型进行整体学习可以覆盖的所有视图。这就是测试时间性能提升的来源! (回想一下图2和图3。)
在这项工作中,我们尽我们所能展示了理解集成在深度学习中如何工作的第一个理论证明。我们还提供了经验证据来支持我们的理论和“多视图”数据假设。我们相信我们的框架可以应用于其他设置。例如,使用随机裁剪进行的数据增强可能会被视为强制网络学习“多视图”的另一种方法。我们希望在实践中,我们对神经网络在训练过程中如何拾取特征的新理论见解也能帮助设计新的,有原则的方法,以提高神经网络的测试准确性,从而有可能与整体性匹配。