集成,知识蒸馏和蒸馏?深度学习果然不简单

在深度学习的“国度”,会将训练好的模型,用自己蒸馏一下,就能提高性能,是不是很神奇,这里面的原理到底是什么呢,这要从模型集成开始说起。

集成,知识蒸馏和蒸馏?深度学习果然不简单

在现在的标准技术下,例如过参数化、batch-normalization和添加残差连接,“现代”神经网络训练 —— 至少对于图像分类任务和许多其他任务来说 —— 通常是相当稳定的。但在一篇新论文“Towards Understanding Ensemble, Knowledge Distillation, and Self-Distillation in Deep Learning“中,我们专注于研究神经网络在训练过程中纯粹由于随机化产生的差异。于是引发了以下问题:除了测试准确性上的微小偏差外,从不同随机初始化中训练出来的神经网络是否学习了非常不同的函数?如果是这样,差异从何而来?我们如何减少这种差异,使神经网络更稳定,甚至更好?这些问题并非微不足道,它们与深度学习中广泛使用的三种技术有关。

深度学习的三个“秘密”

使用不同随机种子的学习网络F1,…F10 —— 尽管具有非常相似的测试性能 —— 被观察到与非常不同的函数相关联。实际上,使用一种著名的技术叫做集成(ensemble),只需对这些独立训练的网络的输出进行无加权的平均,就可以在许多深度学习应用中获得测试时性能的巨大提升。(参见下面的图1。)这意味着单个函数F1,…F10必须是不同的。然而,为什么集成的效果会突然提高呢?另外,如果一个人直接训练(F1+⋯+F10)/10,为什么性能提升会消失?

集成,知识蒸馏和蒸馏?深度学习果然不简单

尽管集成在提高测试时性能方面非常出色,但在推理时间(即测试时间)上,它的速度会慢10倍:我们需要计算10个神经网络的输出,而不是一个。当我们在低能耗、移动环境中部署这样的模型时,这是一个问题。为了解决这个问题,提出了一种叫做知识蒸馏的开创性技术。也就是说,知识蒸馏只需要训练另一个单独的模型就可以匹配集成的输出。在这里,对猫图像的集成输出(也称为“dark knowledge”)可能是类似“80% cat + 10% dog + 10% car”,而真正的训练标签是“100% cat”。(参见下面的图2。)

事实证明,经过训练的单个模型,在很大程度上,可以匹配10倍大的集成测试时的表现。然而,这导致了更多的问题。为什么与真实的标签相比,匹配集成的输出能给我们更好的测试精度?此外,我们是否可以对知识蒸馏后的模型进行集成学习以进一步提高测试精度?

集成,知识蒸馏和蒸馏?深度学习果然不简单

知识蒸馏:让单个模型去学习多个视图

在这项新工作中,我们继续展示知识蒸馏的工作原理。在现实生活中,一些汽车图像可能比其他图像看起来“更像猫”:例如,一些汽车图像的前灯看起来像猫的眼睛。当这种情况发生时,集成模型可以提供有意义的dark knowledge:例如,“汽车图像X有10%像一只猫。”

现在来看看关键的观察结果。当训练一个单独的神经网络模型时,如果“前照灯”视图没有被学习,那么即使剩余的视图仍然可以正确地将图像X标记为一辆车,它们也不能用来匹配“dark knowledge”图像X是10%像一只猫。换句话说,在知识蒸馏过程中,个体模型被迫学习每一个可能的视图特征,以匹配集成的性能。请注意,深度学习中知识提炼的关键是,作为神经网络的单个模型正在进行特征学习,因此能够学习集成的所有特征。这与我们在实践中观察到的情况是一致的。

集成,知识蒸馏和蒸馏?深度学习果然不简单

注意,知识蒸馏至少直观上是有意义的:教师集成模型的测试准确率为84.8%,所以单个学生模型的测试准确率可以达到83.8%。下面的现象,被称为自蒸馏(或“Be Your Own Teacher”),是完全令人惊讶的 ——通过对同一架构的单个模型执行知识蒸馏,测试的准确性也可以得到提高。(请参见上面的图2。) 考虑一下这个问题:如果训练一个单独的模型只能得到81.5%的测试准确率,那么为什么“再次训练同一个模型把自己当作老师”突然可以把测试准确率提高到83.5%呢?

自蒸馏:隐式地结合集成和知识蒸馏

在这项新工作中,我们还为知识自蒸馏提供了理论支持(参见图3)。训练一个单个模型以匹配另一个相同单个模型的输出(但使用不同的随机种子),以某种方式提高了性能。

在较高的层次上,我们把自蒸馏看作是集成蒸馏和知识蒸馏更紧密的结合。当从随机初始化学习单个模型F2以匹配单独训练的单个模型F1的输出时,可以期望F2根据它自己的随机初始化学习特征的子集。除此之外,F2也有动机去学习F1已经学习过的特征子集。换句话说,人们可以把这个过程看作是“集成学习两个单独的模型F1和F2,并将其蒸馏为F2。最终的学习模型F2可能不一定涵盖数据集中所有的可学习视图,但它至少有潜力学习所有可以通过集成学习覆盖两个单独模型的视图。这就是测试时性能提升的来源。

文章部分素材来源:人工智能与算法学习

展开阅读全文

页面更新:2024-03-19

标签:深度   知识   神经网络   子集   准确率   视图   初始化   函数   模型   图像   差异   特征   性能   测试   技术

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top