首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >让学生网络相互学习,为什么深度相互学习优于传统蒸馏模型?| 论文精读

让学生网络相互学习,为什么深度相互学习优于传统蒸馏模型?| 论文精读

作者头像
AI科技大本营
发布于 2019-10-24 06:55:41
发布于 2019-10-24 06:55:41
2.7K0
举报

作者 | Ying Zhang,Tao Xiang等

译者 | 李杰

出品 | AI科技大本营(ID:rgznai100)

蒸馏模型是一种将知识从教师网络(teacher)传递到学生网络(student)的有效且广泛使用的技术。通常来说,蒸馏模型是从功能强大的大型网络或集成网络转移到结构简单,运行快速的小型网络。本文决定打破这种预先定义好的“强弱关系”,提出了一种深度相互学习策略(deep mutual learning, DML)。

在此策略中,一组学生网络在整个训练过程中相互学习、相互指导,而不是静态的预先定义好教师和学生之间的单向转换通路。作者通过在CIFAR-100和Market-1501数据集上的实验,表明DML网络在分类和任务重识别任务中的有效性。更重要的是,DML的成功揭示了没有强大的教师网络是可行的,相互学习的对象是由一个个简单的学生网络组成的集合。

简介

深度神经网络已经广泛应用到计算机视觉的各个任务中,并获得了很好的性能表现,但是,这种SOTA通常是依靠深度堆叠网络层数,增加网络宽度实现,这种结构设计会产生大量的参数,一方面,会拖慢运行速度和执行效率,另一方面,需要很大的存储空间进行存储。这两方面也限制了很多网络在实际应用中落地。

因此,如何在保证效果的情况下设计更小,更快速的网络,就成了我们关注的重点。基于这种思想,涌现了很多好的工作,蒸馏模型(model distillation)就是其中的代表,为了更好地学习小型网络,蒸馏方法从一个强大的(更深或更宽)教师网络开始,然后训练一个更小的学生网络来模仿教师网络。下图是蒸馏模型的一个结构表示:

蒸馏模型

符号表示:

  • Big Model:复杂强大的教师网络
  • Small Model:轻巧简单的学生网络
  • soft targets:输入x经过教师网络后得到的softmax层输出
  • hard targets:输入数据对应的label标签
  • softmax公式表示:

其中,qi是第i类的概率, Zi和Zj分别表示softmax层输出,T是温度系数,控制着输出概率的软化(soft)程度,T越大,不同类别输出概率在不改变相对大小关系的情况下,差值会越小,也就是更加soft。

定义好基本概念后,实现步骤可以表示为:

1.设置一个较大的 T,输入x训练一个教师网络,经过softmax层后生成soft targets。

2.使用步骤1得到的soft targets来训练学生网络。

3.最终模型的目标函数由soft targets和学生网络的输出数据的交叉熵,hard targets 和学生网络的输出数据的交叉熵两部分共同组成。

这些训练步骤,能够保证学生网络和教师网络的结果尽可能一致,也就代表学生网络学到了教师网络的知识;能够保证学生网络的结果和实际类别标签尽可能一致,也就代表学生网络的能力很强。

在本文中,作者剥离了教师,学生网络的概念,提出了一个与蒸馏模型不同但又相关的概念——相互学习(mutual learning)。通过上文的介绍我们知道,蒸馏模型从一个强大的、预先培训过的教师网络开始,然后将知识传递给一个小的、未经训练的学生网络,这种传递方式是一条单向的通路。与之相反,在相互学习中,从一组未经训练的学生网络开始,它们同时学习,共同解决任务。

在训练过程中,每个学生网络的损失函数由两部分组成:(1)传统的监督学习损失(2)模仿损失,使每个学生的预测类别与其他学生的类别预测概率保持一致。实验证明,在这种基于同伴教学(peer-teaching)的训练中,每个学生网络的学习效果都比在传统的监督学习场景中单独学习要好得多。此外,虽然传统的蒸馏模型需要一个比预期学生网络更大、更强大的教师网络,但事实证明,在许多情况下,几个大型网络的相互学习也比独立学习提高了性能。

你可能会有这样的疑问:为什么这种相互学习的策略会比蒸馏模型更有用?如果整个训练过程都是从一个小的且未经预训练的网络开始,那么网络中额外的知识从哪里产生?为什么它会收敛的好,而不是被群体思维所束缚,造成“瞎子带领瞎子"(theblind lead the blind)的局面?

针对这些疑问,作者给出了相应的解释:每个学生网络主要受传统的监督学习损失的指导,这意味着他们的表现通常会提高,而且也限制了他们作为一个群体任意地进行群体思维的能力。有了监督学习,所有的网络很快就可以为每个训练实例预测相同的标签,这些标签大多是正确且相同的。

但是由于每个网络从不同的初始条件开始,它们对下一个最有可能的类的概率的估计是不同的,而正是这些secondary信息,为蒸馏和相互学习提供了额外的知识。在相互学习网络中,每个学生网络有效地汇集了他们对下一个最有可能的类别的集体估计,根据每个训练实例找出并匹配其他最有可能的类会增加每个学生网络的后验熵,这有助于得到一个更健壮和泛化能力更强的网络。

综上所述,相互学习通过利用一组小的未经训练的网络协作进行训练,可以简洁而有效的提高网络的泛化能力。实验结果表明,与经过预训练的静态大型网络相比,同伴相互学习可以获得更好的性能。此外,作者认为相互学习还有以下几点优势:

1.网络效果随队列中网络的数量增加而增加;

2.相互学习适用于各种网络架构,以及由不同大小的混合网络组成的异构群组;

3.与独立训练相比,即使是在队列中相互训练的大型网络也能提高性能;

4.虽然作者的重点是获得一个单一有效的网络,但整个队列也可以整合为一个高效的集成模型。

深度相互学习

*为表述方便,本文以两个网络为例进行说明。

  • DML通用表示

如下图所示,本文提出的DML网络,在队列中有两个网络θ1,θ2。给定来自 M个类别的 N个样本,表示为:

其对应的标签集合为:

那么θ1网络中某个样本 xi属于类别 m的概率可以表示为:

其中,

是θ1网络中经过softmax层后输出的预测概率。

对于多目标分类任务而言,θ1网络的目标函数可以用交叉熵表示:

其中, 相当于一个指示函数,如下式所示,如果标签值和预测值相同,置为1,否则置为0:

传统的监督损失训练能够帮助网络预测实例的正确标签,为了进一步提升网络θ1的泛化能力,DML引入了同伴网络θ2,θ2同样会产生一个预测概率p2,在这里引入KL散度的概念,相信了解过GAN网络的小伙伴对KL应该不会陌生,KL 散度是一种衡量两个概率分布的匹配程度的指标,两个分布差异越大,KL散度越大。作者采用KL散度,衡量这两个网络的预测p1和p2是否匹配。

p1和p2的KL散度距离计算公式为:

综上,对于θ1网络来说,此时总的损失函数就由两部分构成:自身监督损失函数,来自θ2网络的匹配损失函数:

同理,θ2可以表示为:

  • 算法优化

DML在每次训练迭代中,都计算两个模型的预测,并根据另一个模型的预测更新两个网络的参数。θ1和θ2网络一直在迭代直至收敛,整个训练优化细节如下图所示:

输入:

训练集 X,标签集 Y,学习率 γ1,γ2

初始化:

θ1,θ2不同初始化条件

步骤:

从训练集 X中随机抽样 x

1.根据上文中的概率计算公式p,分别计算两个网络的在当前batch的预测p1和p2,得到θ1的总损失函数 Lθ1

2.利用随机梯度下降,更新θ1参数:

3. 根据上文中的概率计算公式p,分别计算两个网络的在当前batch的预测p1和p2,得到θ2的总损失函数Lθ2

4. 利用随机梯度下降,更新θ2参数:

重复以上步骤直至网络收敛

  • 学生网络的扩展

前几节我们用两个网络θ1和θ2说明了DML的结构,算法。其实DML不仅在两个网络中有效,还可以扩展到多个网络中去。假定我们要训练一个有K(K>2)个学生网络的互相学习网络,那么对于其中的某个网络θk而言,总的损失函数可以表示为:

该公式说明,每个学生网络都能够从另外的K-1个网络中学到知识,换而言之,对于一个学生网络,另外的K-1个网络都能作为该网络的教师网络。K=2就是该扩展网络的特例。注意,在上式中,对于其他网络的KL散度和,前面添加了权重系数1/(K-1),这是为了确保整个训练过程主要以监督学习的真正标签为指导。

对于两个以上的网络,除了DML训练策略外,在K个网络的训练中,对于一个学生网络,我们还可以将所有其他的k-1个网络集成作为一个单独的教师网络来提供综合平均的学习知识。这种思想与蒸馏模型类似,但是在参数更新上,在每个mini-batch上进行更新。基于这种思想,一个学生网络θk的损失函数可以表示为:

实验

主要是两方面的实验,利用CIFAR-100和Market-1501两个数据集分别进行目标分类和人物重识别任务测试。

  • Results on CIFAR-100

在CIFAR-100上进行top-1指标测试。首先对只有两个网络的DML进行测试,。采用不同的网络结构,结果如下表所示,可以看到,相比独立的分类网络,基于任何组合方式的,添加DML策略的网络,表现都有所提升;体量较小的网络(如ResNet-32),从DML中提升更多;在大网络(如WRN-28-10)中添加DML策略,也会使得性能得到提升,与传统的蒸馏模型相比,可以看到一个大型的预培训的教师网络并非必要条件。

  • Results on Market-1501

在Market-1501上进行mAP和rank-1指标测试。每个MobileNet在一个双网络队列中训练,并计算队列中两个网络的平均性能。如下表所示,与单独学习相比,DML显著的提升了MobileNet的性能,我们还可以看到,使用两个MobileNet训练的DML方法的性能显著优于先前最主流的方法。

  • Comparison with Distillation

本文提出的DML模型与蒸馏模型密切相关,因此作者对比了这两个模型的效果。如下表所示,设置了三组网络,分别是:独立网络net1,net2;蒸馏模型net1为教师网络,net2为学生网络;DML模型,net1和net2相互学习。从实验结果分析,意料之中,传统的蒸馏方法从一个强大的预训练的教师网络指导学生网络的确实提升了性能。但结果同样表明,预训练的强大教师网络不是必要条件,与蒸馏模型相比,在DML中一起训练的两个网络也获得了明显的提升。

  • DML的有效性

上述实验部分证明了DML的有效性,我们再从理论上讨论一下DML为什么能够提升以及通过哪些方法进行提升。

(1)更鲁棒的最小值

与传统的优化方法相比,DML不是帮助我们找到一个更好的或者更深层次的训练损失最小值,而是帮助我们找到一个更广泛或者更可靠的最小值,它能更好地概括测试数据,更加健壮。作者利用Market-1501数据集和MobileNet主干网络做了一个小实验来证明DML能够找到更鲁棒的最小值。

作者比较了DML模型和独立模型在添加高斯噪声前后训练的损失变化。从图(a)可以看出两个模型的极小值的深度是相同的,但是在加入高斯噪声后,独立模型的训练损失增加较多,而DML模型的训练损失较少。这表明DML模型找到了一个更广泛,健壮的最小值,进而提供更好的泛化性能。

(2)怎样找到更好的最小值?

那么DML是怎样找到这个广泛健壮的最小值的呢?DML会要求每个网络匹配其同伴网络的概率估计,如果给定网络预测为零,而其对等网络预测为非零,则该网络将受到严重惩罚。总体上,DML是指,当每个网络独立地将一个关注点放在一个小的次概率集合上时,DML中的所有网络都倾向于聚合它们对次级概率的预测。也就是说所有的网络把重心放在次概率上,并且把更多重心放在更明显的次概率上。因此,DML是通过对“合理的”次概率预测的相互概率匹配来寻找更宽泛的最小值。

结论

本文提出了一种简单且普适的方法DML来提高深度神经网络的性能,方法是将几个网络一起训练,相互蒸馏。用这种方法,可以获得紧凑的网络。实验证明,DML相比传统的蒸馏模型更好更健壮。此外,DML也能提高大型网络的性能,并且以这种方式训练的网络队列可以作为一个集成来进一步提高性能。

论文链接:

https://arxiv.org/abs/1706.00384

代码链接

YingZhangDUT/Deep-Mutual-Learninggithub.com

(*本文为 AI科技大本营编译文章,请微信联系 1092722531)

推荐阅读

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于知识蒸馏,这三篇论文详解不可错过
导语:继《从Hinton开山之作开始,谈知识蒸馏的最新进展》之后,作者对知识蒸馏相关重要进行了更加全面的总结。在上一篇文章中主要介绍了attention transfer,FSP matrix和DarkRank,关注点在于寻找不同形式的“知识”。
AI科技大本营
2019/07/30
4K0
关于知识蒸馏,这三篇论文详解不可错过
机器学习:知识蒸馏(Knowledge Distillation,KD)
知识蒸馏(Knowledge Distillation,KD)作为深度学习领域中的一种模型压缩技术,主要用于将大规模、复杂的神经网络模型(即教师模型)压缩为较小的、轻量化的模型(即学生模型)。在实际应用中,这种方法有助于减少模型的计算成本和内存占用,同时保持相对较高的性能和准确率。本文将详细介绍知识蒸馏的原理、C++实现代码、以及其在实际项目中的应用。
用户11289931
2024/10/16
7.4K0
机器学习:知识蒸馏(Knowledge Distillation,KD)
【知识蒸馏】Deep Mutual Learning
引言 首先感谢:https://github.com/AberHu/Knowledge-Distillation-Zoo
BBuf
2021/11/19
9240
【知识蒸馏】Deep Mutual Learning
万字综述 | 一文读懂知识蒸馏
近年来,深度神经网络在工业界和学术界都取得了成功,尤其是在计算机视觉任务方面。深度学习的巨大成功主要归因于其可扩展性以编码大规模数据并操纵数十亿个模型参数。但是,将这些繁琐的深度模型部署在资源有限的设备(例如,移动电话和嵌入式设备)上是一个挑战,这不仅是因为计算复杂性高,而且还有庞大的存储需求。为此,已经开发了多种模型压缩和加速技术。作为模型压缩和加速的代表类型,知识蒸馏有效地从大型教师模型中学习小型学生模型。它已迅速受到业界的关注。本文从知识类别,训练框架,师生架构,蒸馏算法,性能比较和应用的角度对知识蒸馏进行了全面的调查。此外,简要概述了知识蒸馏中的挑战,并讨论和转发了对未来研究的评论。
AI异构
2020/12/22
16.7K0
离线蒸馏奢侈?在线蒸馏难?都不再是问题DKEL统统帮你解决,蒸馏同质化问题也解决!
近年来,深度学习逐渐在计算机视觉领域占据主导地位。计算机视觉的主流任务,如图像分类和目标检测,在深度学习技术的帮助下也取得了惊人的成功。庞大的网络由于其强大的表示能力,在上述任务中往往能获得更好的特征提取性能。然而,考虑到系统的实时性能和用户体验,这样的庞大网络很难满足产品的要求。
集智书童公众号
2024/01/03
8070
离线蒸馏奢侈?在线蒸馏难?都不再是问题DKEL统统帮你解决,蒸馏同质化问题也解决!
知识蒸馏综述:蒸馏机制
Knowledge Distillation A Suvery的第二部分,上一篇介绍了知识蒸馏中知识的种类,这一篇介绍各个算法的蒸馏机制,根据教师网络是否和学生网络一起更新,可以分为离线蒸馏,在线蒸馏和自蒸馏。
BBuf
2021/12/09
1.8K0
知识蒸馏综述:蒸馏机制
综述 | 知识蒸馏(1)
近年来,深度神经网络在工业和学术界都取得了较大成功,尤其是在计算机视觉任务方面:主要归因于其可扩展性以编码大规模数据(提取特征),并操纵数十亿个模型参数。然而,将这些繁琐的深度模型部署在资源有限的设备(例如,移动电话和嵌入式设备)上也是一个挑战:不仅计算复杂度高,且存储需求大。为此,多种模型压缩和加速技术被提出;其中,知识蒸馏可以有效地从大型“教师”模型学习小型的“学生”模型,迅速受到重视。本文从知识的类别、训练的策略、蒸馏的算法和应用等角度,对知识蒸馏进行了全面调研。此外,简述了知识蒸馏的挑战,并对未来研究进行讨论。
公众号机器学习与AI生成创作
2020/07/24
1.6K0
综述 | 知识蒸馏(1)
「知识蒸馏」最新2022研究综述
每天给你送来NLP技术干货! ---- 来自:专知 华南师范大学等《知识蒸馏》最新综述论文 高性能的深度学习网络通常是计算型和参数密集型的,难以应用于资源受限的边缘设备. 为了能够在低 资源设备上运行深度学习模型,需要研发高效的小规模网络. 知识蒸馏是获取高效小规模网络的一种新兴方法, 其主要思想是将学习能力强的复杂教师模型中的“知识”迁移到简单的学生模型中. 同时,它通过神经网络的互 学习、自学习等优化策略和无标签、跨模态等数据资源对模型的性能增强也具有显著的效果. 基于在模型压缩和 模型增强上的优越特
zenRRan
2022/03/24
3K0
知识蒸馏
蒸馏指的是把不纯净的水加热变成蒸汽,蒸汽冷凝之后变成冷凝水。知识蒸馏也是把有杂质的东西,大的东西变成小的东西,纯的东西。把一个大的模型(教师模型)里面的知识给萃取蒸馏出来浓缩到一个小的学生模型上。
算法之名
2022/03/24
6870
知识蒸馏
超越KL!大连理工发布Wasserstein距离知识蒸馏新方法|NeurIPS 2024
自Hinton等人的开创性工作以来,基于Kullback-Leibler散度(KL-Div)的知识蒸馏一直占主导地位。
新智元
2025/02/15
1680
超越KL!大连理工发布Wasserstein距离知识蒸馏新方法|NeurIPS 2024
【深度学习】深度学习中的知识蒸馏技术(上)简介
在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的。化学蒸馏条件:(1)蒸馏的液体是混合物;(2)各组分沸点不同。
黄博的机器学习圈子
2021/04/16
6.7K0
【深度学习】深度学习中的知识蒸馏技术(上)简介
DeepMind详解新WaveNet:比原来快千倍,语音更自然 | 附论文
夏乙 编译自 DeepMind Blog 量子位 出品 | 公众号 QbitAI 上个月,Google Assistant英语和日语版终于用上了DeepMind一年前推出的语音合成算法:WaveNet
量子位
2018/03/23
2.8K0
知识蒸馏(Knowledge Distillation)
本文主要罗列与知识蒸馏相关的一些算法与应用。但首先需要明确的是,教师网络或给定的预训练模型中包含哪些可迁移的知识?基于常见的深度学习任务,可迁移知识列举为:
全栈程序员站长
2022/07/01
3K0
知识蒸馏(Knowledge Distillation)
首次将「教导主任」引入模型蒸馏,大规模压缩优于24种SOTA方法
面对越来越深的深度学习模型和海量的视频大数据,人工智能算法对计算资源的依赖越来越高。为了有效提升深度模型的性能和效率,通过探索模型的可蒸馏性和可稀疏性,本文提出了一种基于 “教导主任 - 教师 - 学生” 模式的统一的模型压缩技术。
机器之心
2022/12/16
3420
首次将「教导主任」引入模型蒸馏,大规模压缩优于24种SOTA方法
【科普】联邦知识蒸馏概述与思考
随着深度学习与大数据的进一步发展,效果好的模型往往有着较大的规模和复杂的结构,往往计算效率与资源使用方面开销很大,无法部署到一些边缘设备、移动终端或者嵌入式设备上。因此,如何在保证模型性能的前提下减少模型的参数量以及加快模型前向传播效率,这是一个重要的问题,总的来说不同的模型压缩与加速技术具体可以分为以下四类:
CV君
2022/03/30
1.4K0
【科普】联邦知识蒸馏概述与思考
常用模型蒸馏方法:这 N 个核心,你都知道吗?(上)
Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景 - 构建高效、灵活、健壮的模型技术体系。
Luga Lee
2025/05/13
1630
常用模型蒸馏方法:这 N 个核心,你都知道吗?(上)
深度学习知识蒸馏的研究综述
【导读】大家好,我是泳鱼。知识蒸馏用大白话说就是将一个大神经网络模型的知识转移到另外一个小模型上面,得到一个“小而美”的模型。本文就近些年来知识蒸馏的主要研究成果进行梳理并加以总结,分析该领域所面临的挑战,详细阐述知识蒸馏的学习框架,从多种分类角度对知识蒸馏的相关工作进行对比和分析,文末附相关论文下载。
算法进阶
2023/09/25
2.7K0
深度学习知识蒸馏的研究综述
DeiT:使用Attention蒸馏Transformer
题目:Training data-efficient image transformers & distillation through attention
BBuf
2021/10/08
1.2K0
【AI系统】知识蒸馏原理
本文将介绍知识蒸馏(Knowledge Distillation, KD)的原理,这是一种通过从大型的教师模型向小型的学生模型转移知识来实现模型压缩和优化的技术。知识蒸馏的核心思想是利用教师模型在大量数据上积累的丰富知识,通过特定的蒸馏算法,使学生模型能够学习并吸收这些知识,从而达到与教师模型相似的性能。
用户11307734
2024/12/05
3540
【目标检测】YOLOv5遇上知识蒸馏
知识蒸馏(Knowledge Distillation)由深度学习三巨头Hinton在2015年提出。
zstar
2022/11/12
2.7K0
【目标检测】YOLOv5遇上知识蒸馏
推荐阅读
相关推荐
关于知识蒸馏,这三篇论文详解不可错过
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档