,可以分为离线蒸馏,在线蒸馏和自蒸馏。 感性上理解三种蒸馏方式: 离线蒸馏可以理解为知识渊博的老师给学生传授知识。 在线蒸馏可以理解为教师和学生一起学习。 自蒸馏意味着学生自己学习知识。 1. 使用在线蒸馏的时候,教师网络和学生网络的参数会同时更新,整个知识蒸馏框架是端到端训练的。 自蒸馏 Self-Distillation 在自蒸馏中,教师和学生模型使用相同的网络。自蒸馏可以看作是在线蒸馏的一种特殊情况,因为教师网络和学生网络使用的是相同的模型。 4. 教师学生架构 在知识提炼中,师生架构是形成知识传递的通用载体。换句话说,从教师到学生的知识获取和提炼的质量是由设计教师和学生网络的方式 决定的。
知识蒸馏概述 蒸馏指的是把不纯净的水加热变成蒸汽,蒸汽冷凝之后变成冷凝水。知识蒸馏也是把有杂质的东西,大的东西变成小的东西,纯的东西。 把一个大的模型(教师模型)里面的知识给萃取蒸馏出来浓缩到一个小的学生模型上。 教师网络是一个比较大的神经网络,它把知识传递给了小的学生网络。这个过程称之为蒸馏或者叫迁移。 这就是知识蒸馏的核心目的。 现在的预训练大模型的参数往往都是成指数型增加。 知识蒸馏的过程 我们来看一下学生网络、教师网络到底是怎么样来进行蒸馏学习的,首先有一个已经训练好的教师网络,然后我们把很多数据喂给教师网络,这里会给一个温度为t的时候的softmax。 知识蒸馏是把一个模型的知识迁移到另一个模型上。 知识蒸馏的原理 上图中大的绿色的矩形为非常大的教师网络,中间的蓝色的矩形是学生网络。
一个是知识蒸馏的方法用于深度学习,同时也需要深入学习;另一个则是本文的核心:蒸馏中如何合理运用温度,让隐藏的知识更好地挥发和凝结。 蒸馏模型 模型蒸馏或知识蒸馏,最早在 2006 年由 Buciluǎ 在文章 Model Compression [14] 中提出(很多博主把人名都写错了。 先简要概括一下模型蒸馏在做什么。出于计算资源的限制或效率的要求,深度学习模型在部署推断时往往需要进行压缩,模型蒸馏是其中一种常见方法。 transfer: Federated learning of large cnns at the edgehttps://proceedings.neurips.cc/paper/2020/file/a1d4c20b182ad7137ab3606f0e3fc8a4 v=tOItokBZSfU [4] What is the role of temperature in Softmax?
1.1 模型蒸馏原理知识蒸馏是一种模型压缩常见方法,指的是在teacher-student框架中,将复杂、学习能力强的网络(teacher)学到的特征表示"知识"蒸馏出来,传递给参数量小、学习能力弱的网络 实验表明通用蒸馏阶段和任务蒸馏阶段的蒸馏loss不匹配时,学生模型的效果会受到影响。 实验表明 4 层 ERNIE-Tiny 在 GLUE 基准测试的基础上保持其 12 层教师 BERT 的 98.0% 以上的性能,超过最先进的 (SOTA) 1.0% 的 GLUE 分数相同数量的参数。 如果已提供的通用蒸馏学生模型尺寸符合需求,用户可以主要关注接下来的任务蒸馏过程。 教师模型和通用数据继续用通用蒸馏的方式蒸馏学生模型,进一步提升学生模型的效果;a.
1.1 模型蒸馏原理 知识蒸馏是一种模型压缩常见方法,指的是在teacher-student框架中,将复杂、学习能力强的网络(teacher)学到的特征表示"知识"蒸馏出来,传递给参数量小、学习能力弱的网络 实验表明通用蒸馏阶段和任务蒸馏阶段的蒸馏loss不匹配时,学生模型的效果会受到影响。 实验表明 4 层 ERNIE-Tiny 在 GLUE 基准测试的基础上保持其 12 层教师 BERT 的 98.0% 以上的性能,超过最先进的 (SOTA) 1.0% 的 GLUE 分数相同数量的参数。 如果已提供的通用蒸馏学生模型尺寸符合需求,用户可以主要关注接下来的任务蒸馏过程。 fine-tuned教师模型和通用数据继续用通用蒸馏的方式蒸馏学生模型,进一步提升学生模型的效果; a.
蒸馏扩展定律的外推。蒸馏扩展定律适用于一系列损失为 LT 的教师的弱学生模型(L_S > 2.3)。 如果要蒸馏多个学生模型,或者已有教师模型,蒸馏在计算水平上优于监督预训练,直到计算水平随着学生模型规模的增加而可预测地增长。如果要蒸馏一个学生模型且还需要训练教师模型,则应采用监督学习。 此外,作者在大规模蒸馏研究中提供了深入的见解,这些见解增加了我们对蒸馏的理解,并为实验设计提供了信息。 本文的目标是理解教师模型在蒸馏过程中的作用,因此,该研究在纯蒸馏情况下(λ = 1,公式 7)进行蒸馏,以避免数据带来的混淆。本文验证了 λ = 1 的选择能够产生与最优 λ∗ 统计相似的结果。 其中两个学生模型的交叉熵结果如图 4 所示。 此外,本文还需要确定蒸馏扩展定律的函数形式。
知识蒸馏系列文章继续更新啦!在上一篇文章中,我们介绍了三类基础知识蒸馏算法,今天我们一起来学习知识蒸馏的迁移学习应用。 本文内容 1 前言 2 蒸馏特征的迁移学习 3 蒸馏参数的迁移学习 4 总结 1. (feature-based)的知识蒸馏 基于样本或特征层间关系(relation-based)的知识蒸馏 1.3 蒸馏知识迁移的优点及应用领域 相对于基于实例的迁移和基于关系的迁移,蒸馏知识迁移具有的主要优势如下 蒸馏特征的迁移学习 蒸馏特征的迁移学习通过在源域教师模型和目标域学生模型间寻找输出 logits 或中间层特征作为迁移目标的蒸馏知识,实现不同数据域和任务域间的教师—学生关系间的知识蒸馏。 Proceedings of the IEEE, 2020, 109(1): 43-76. [4] Li J, Fu K, Zhao S, et al.
为此,研究人员通常通过微调(finetuning)或蒸馏(distillation)训练更小的任务特定模型,但这两种方法都需要大量的训练数据。 本文提出了一种新的方法——逐步蒸馏(Distilling Step-by-Step),它通过提取LLM生成的推理过程作为监督信号,训练小模型并显著减少数据需求。 逐步蒸馏方法:采用多任务学习方式,将标签预测和理由生成结合起来,训练小模型同时具备预测能力和推理能力。 3.实验部分 3.1数据集 论文中使用了4个流行的基准数据集,涵盖3种不同的自然语言处理(NLP)任务,具体数据集和任务如下: 3.1.1自然语言推理(Natural Language Inference /t5-efficient-mini --dataset cqa --model_type task_prefi 3.3实验结果 在wandb可以看到实验结果 4.核心代码 class TaskPrefixTrainer
4 蒸馏的策略 根据教师模型是否与学生模型同时更新,知识蒸馏的学习方案可以直接分为三大类:离线蒸馏,在线蒸馏和自蒸馏,如图6所示 ? 它也可视为在线蒸馏的特殊情况。 为了进一步直观地了解蒸馏,还可以从人类教师-学生学习的角度总结离线,在线和自蒸馏。 离线蒸馏意味着知识渊博的老师向新生传授知识;在线蒸馏是指师生在老师为主要监督下互相学习;自蒸馏是学生无需老师就能自学知识。这三种蒸馏方法可以结合起来进行优势互补。 Mishra和Marr,2017;Wei等,2018; Shin等人,2019);3)具有高效基本操作的小型网络(Howard等,2017; Zhang等,2018a; Huang等人,2017);4) 6 蒸馏算法 7 蒸馏应用
03 Localization Distillation 位置蒸馏 3.1 使用概率分布表示目标框 使用表示目标框,中的4个元素分别表示目标框上边沿、下边沿、左边沿和右边沿到采样点的距离,按照论文 显然,可以使用目标框中4个边框的概率分布来衡量预测框的不确定性。 3.2 位置蒸馏 在LD中,同样有教师模型和学生模型。 为预测目标框中某个边框,教师网络和学生网络分别输出和,对它们进行softmax操作,得到概率分布和,可以用下面的公式表示边框的蒸馏损失: 回归框中4个边框的蒸馏损失表示为: 上述关于位置蒸馏的表述可以用下图表示 5.2 Self-LD对baseline检测器的性能提升 在COCO数据集上使用ResNet-18、ResNet-50和ResNeXt-101-32x4d-DCN这3个模型进行评估,评估它们使用Self-LD 从上图中最后4行可以看出,使用方式训练学生网络,得到的学生网络性能要高于传统的方式,说明使用ResNet-101和ResNet-34作为Teacher Assistant确实能提高学生网络的性能。
我开源了一个 Claude Code Skill:cross-verified-feature-development 这个 Skill 的核心逻辑是:在实施和合并之间,强制插入 4 轮独立视角的验证。 每一轮验证用的是不同的视角、不同的信息范围、不同的 agent 上下文——4 种视角发现的 bug 集合接近并集而不是重复集合。 Phase 4:4 轮独立验证,每一轮发现的 Bug 都不一样 Round 4.1:自我系统调试 这一轮用 superpowers:systematic-debugging 框架,以**"假如此刻存在 Q:Phase 4 的 4 轮验证都必须做吗? Phase 4.1(自查)和 4.2(冷评审)是强制的。4.3(行为 diff)只在改造已有流程时必做,纯新增可跳过。 多出的时间基本都花在 Phase 4 的验证和 Phase 5 的修复上。但 Phase 4.2 平均找到 5-15 个 bug——如果这些 bug 上了生产,排查和修复的时间远不止这几天。
模型蒸馏一. 核心问题由于知识蒸馏在训练过程中,有两个模型(teacher模型和student模型),3个loss(teacher loss、student loss、蒸馏loss),因此如何平衡不同模型之间的训练会是影响模型效果的重要因素 优势特征(Privileged Features): 区分度高、但只能离线获取的特征, 特征主要包含用户行为特征、用户特征、商品特征和交叉特征4个部分, 其中:所有的交叉特征为优势特征: 比如用户过去24 模型有以下特点:学生网络和教师网络共享底层参数 [[公式]]教师网络使用更复杂的模型结构 [[公式]]蒸馏目标是logits输出,学生网络logits拟合教师网络logits蒸馏误差表示如下:[image 模型蒸馏实战说明: keras官方提供的蒸馏方案是一个标准的MD方案, teacher和student使用相同的输入, 通过teacher和student的输出拟合来将teacher的信息迁移到student
TinyBERT[1]是一种针对transformer-based模型的知识蒸馏方法,以BERT为Teacher模型蒸馏得到一个较小的模型TinyBERT。 算法原理 为了能够将原始的BERT模型蒸馏到TinyBERT,因此,在[1]中提出了一种新的针对Transformer网络特殊设计的蒸馏方法,同时,因为BERT模型的训练分成了两个部分,分别为预训练和针对特定任务的 知识蒸馏 知识蒸馏(knowledge distillation)[2]是模型压缩的一种常用的方法,对于一个完整的知识蒸馏过程,有两个模型,分别为Teacher模型和Student模型,通过学习将已经训练好的 Transformer-layer Distillation Transformer-layer的蒸馏由Attention Based蒸馏和Hidden States Based蒸馏两部分组成,具体如下图所示 : 其中,在BERT中多头注意力层能够捕获到丰富的语义信息,因此,在蒸馏到TinyBERT中,提出了Attention Based蒸馏,其目的是希望使得蒸馏后的Student模型能够从Teacher模型中学习到这些语义上的信息
TinyBERT[1]是一种针对transformer-based模型的知识蒸馏方法,以BERT为Teacher模型蒸馏得到一个较小的模型TinyBERT。 算法原理为了能够将原始的BERT模型蒸馏到TinyBERT,因此,在1中提出了一种新的针对Transformer网络特殊设计的蒸馏方法,同时,因为BERT模型的训练分成了两个部分,分别为预训练和针对特定任务的 知识蒸馏知识蒸馏(knowledge distillation)[2]是模型压缩的一种常用的方法,对于一个完整的知识蒸馏过程,有两个模型,分别为Teacher模型和Student模型,通过学习将已经训练好的 Transformer-layer DistillationTransformer-layer的蒸馏由Attention Based蒸馏和Hidden States Based蒸馏两部分组成,具体如下图所示 :图片其中,在BERT中多头注意力层能够捕获到丰富的语义信息,因此,在蒸馏到TinyBERT中,提出了Attention Based蒸馏,其目的是希望使得蒸馏后的Student模型能够从Teacher模型中学习到这些语义上的信息
and three augmented samples batch = int(x.size(0) / 4) nor_index = (torch.arange(4*batch) % 4 == 0). cuda() aug_index = (torch.arange(4*batch) % 4 ! ,考虑了中间层Feature Maps之间的关系,可参考: 结合量化的知识蒸馏(Quantization Mimic)_AI Flash-CSDN博客 ——– 知识蒸馏与Hint Learning相结合 ,可以训练精简的Faster-RCNN,可参考: 目标检测网络的知识蒸馏_AI Flash-CSDN博客_目标检测 知识蒸馏 ——– 网络结构搜索(NAS)也可以采用蒸馏操作,改善搜索效果,可参考(Cream NAS的Inter-model Distillation): 自蒸馏One-shot NAS——Cream of the Crop_AI Flash-CSDN博客 ——– 知识蒸馏在Transformer
,现有的图数据蒸馏(图压缩)方法往往是将面向图像数据的数据蒸馏方法简单扩展到图数据上,忽视了图结构在图数据蒸馏中的关键作用。 现有方法的问题 现有的图数据蒸馏(图压缩)方法往往是将面向图像数据的数据蒸馏方法简单扩展到图数据上,忽视了图结构信息在图数据压缩中的重要影响。 整体算法流程如下: 4. 实验结果 4.1 节点分类/异常检测/链接预测实验 我们在9个数据集,3种不同任务上测试了SGDD的性能。 4.3 神经⽹络架构搜索实验 此外,在数据压缩典型的应⽤场景—神经⽹络架构搜索(NAS)中,SGDD也取得了相较于GCond更⾼的性能表现以及⽪尔逊相关系数指数(⻅表4)。 总结 面向图数据的蒸馏目前仍为一个较新的方向,我们的研究着眼于图结构保持对图数据蒸馏的重要性,期望此工作能够引起领域对该方向更多的研究和探讨。 6.
我们将探讨知识蒸馏的不同知识类型,包括基于响应的、基于特征的和基于关系的知识点,以及不同的知识蒸馏方式,如离线蒸馏、在线蒸馏和自蒸馏。 此外,还将解读 Hinton 提出的经典知识蒸馏算法,以及知识蒸馏与自然界中物理蒸馏过程的相似之处。 用学习过程比喻,离线蒸馏是知识渊博的老师向学生传授知识;在线蒸馏是老师和学生一起学习、共同进步;自蒸馏是学生自学成才。 自蒸馏的提出主要是为了解决传统两阶段蒸馏方法的一些问题。 该算法流程主要可以概括为以下 4 个步骤: 训练教师模型; 教师模型的 logits 输出,在高温 T 下生成 soft target; 使用 \mathcal{L}_{soft} 与 \mathcal 知识蒸馏与物理蒸馏的相似之处: 知识蒸馏通过 T 系数控制模型输出的熵;物理蒸馏通过温度改变混合物的形态,影响物理系统的熵 温度系数 T 训练时提高,最后变回 1;物理蒸馏时温度先上升使液体变为气体,气体再回到常温变回液体
【GiantPandaCV导语】 收集自RepDistiller中的蒸馏方法,尽可能简单解释蒸馏用到的策略,并提供了实现源码。 1. Distilling the Knowledge in a Neural Network 链接:https://arxiv.org/pdf/1503.02531.pd3f 发表:NIPS14 最经典的,也是明确提出知识蒸馏概念的工作 全称:Fitnets: hints for thin deep nets 链接:https://arxiv.org/pdf/1412.6550.pdf 发表:ICLR 15 Poster 对中间层进行蒸馏的开山之作 4. Congruence for Knowledge Distillation 链接:https://arxiv.org/pdf/1904.01802.pdf 发表:ICCV19 CC也归属于基于关系的知识蒸馏方法
离线知识蒸馏是一种需要昂贵资源训练教师网络,然后将知识蒸馏到学生网络进行部署的两阶段 Pipeline 。另一方面,在线知识蒸馏是一种一阶段策略,通过互相学习和合作学习来缓解这种需求。 2 Related work 知识蒸馏通常用于模型压缩,这被分为离线和在线知识蒸馏: 离线知识蒸馏需要一个预训练的教师网络和一个学生网络,学生网络同时学习教师网络和真实值。 \tag{4} 在学生每次迭代后,使用EMA更新教师参数。 如图4(b)所示,这种初始化将 t^{[2]} 调整到与 s^{[1]} 在 P^{*} 同侧的位置,作为参考。 Datasets 为评估作者提出的算法,作者在几个数据集上进行了实验,包括CIFAR-10,CIFAR-100 [13]和TinyImageNet [4]。
feature distillation): +0.18 DML(deep mutual learning): + 2.24 (ps: 这里教师网络已经训练好了,与DML不同) DML也是传统知识蒸馏的扩展 但是不同于传统知识蒸馏的单向蒸馏(教师→学生),DML认为可以让学生互相学习(双向蒸馏),在整个训练的过程中互相学习,通过这种方式可以提升模型的性能。 如果传统的知识蒸馏是由教师网络指导学生网络,那么DML就是让两个学生互帮互助,互相学习。 DML 小型的网络通常有与大网络相同的表示能力,但是训练起来比大网络更加困难。 那么先训练一个大型的网络,然后通过使用模型剪枝、知识蒸馏等方法就可以让小型模型的性能提升,甚至超过大型模型。 以知识蒸馏为例,通常需要先训练一个大而宽的教师网络,然后让小的学生网络来模仿教师网络。 在Reid数据集Market-1501上也进行了测试: 发现互学习目标越多,性能呈上升趋势: 结论 本文提出了一种简单而普遍适用的方法来提高深度神经网络的性能,方法是在一个队列中通过对等和相互蒸馏进行训练