如果采用数据蒸馏策略,又需要提供海量未标注数据,可能并不具备客观条件。因此,本专题采用主流的知识蒸馏的方案来压缩模型,在满足用户预测性能、预测效果的需求同时,不依赖海量未标注数据,提升开发效率。 知识蒸馏通过在一组数据上将知识从大老师转移到小得多的学生来解决这个问题。我们认为选择三个关键组成部分,即教师、训练数据和学习目标,对于蒸馏的有效性至关重要。 具体来说,第一阶段,General Distillation,在预训练的老师、一般数据和潜在蒸馏损失的指导下进行蒸馏。 教师模型和通用数据继续用通用蒸馏的方式蒸馏学生模型,进一步提升学生模型的效果;a. 因此,我们基于数据蒸馏技术构建了数据蒸馏系统。其原理是通过数据作为桥梁,将ERNIE模型的知识迁移至小模型,以达到损失很小的效果却能达到上千倍的预测速度提升的效果。
最近,图数据集蒸馏/图压缩(Graph Dataset Distillation / Graph Condensation)方法引起了广泛关注,它旨在将庞大的原始图数据蒸馏至一个极小规模且信息丰富的生成图 ,现有的图数据蒸馏(图压缩)方法往往是将面向图像数据的数据蒸馏方法简单扩展到图数据上,忽视了图结构在图数据蒸馏中的关键作用。 现有方法的问题 现有的图数据蒸馏(图压缩)方法往往是将面向图像数据的数据蒸馏方法简单扩展到图数据上,忽视了图结构信息在图数据压缩中的重要影响。 总结 面向图数据的蒸馏目前仍为一个较新的方向,我们的研究着眼于图结构保持对图数据蒸馏的重要性,期望此工作能够引起领域对该方向更多的研究和探讨。 6. 杨贝宁 yangbeining@buaa.edu.cn 北京航空航天大学计算机学院 大数据科学与脑机智能高精尖创新中心 研究兴趣 图神经网络 图数据集蒸馏 作者 / 杨贝宁 编辑 / 薛欣 刘虹庆
如果采用数据蒸馏策略,又需要提供海量未标注数据,可能并不具备客观条件。 知识蒸馏通过在一组数据上将知识从大老师转移到小得多的学生来解决这个问题。我们认为选择三个关键组成部分,即教师、训练数据和学习目标,对于蒸馏的有效性至关重要。 具体来说,第一阶段,General Distillation,在预训练的老师、一般数据和潜在蒸馏损失的指导下进行蒸馏。 fine-tuned教师模型和通用数据继续用通用蒸馏的方式蒸馏学生模型,进一步提升学生模型的效果; a. 因此,我们基于数据蒸馏技术构建了数据蒸馏系统。其原理是通过数据作为桥梁,将ERNIE模型的知识迁移至小模型,以达到损失很小的效果却能达到上千倍的预测速度提升的效果。
数据集蒸馏的核心思想如下所示: 合成数据集可视化: 现有的数据集蒸馏方法一些考虑使用端到端训练,但这通常需要大量计算和内存,并且会受到不精确的松弛或执行多次迭代导致训练不稳定的影响。 为了降低优化难度,另一些方法侧重于短程行为,聚焦于使在蒸馏数据上的单步训练匹配在真实数据上的。但是,由于蒸馏数据会被多次迭代,导致在验证过程中错误可能会被累积。 ▊ Contributions 基于此,作者直接模仿在真实数据集上训练模型的长程训练动态。大量实验表明,所提方法优于现有的数据集蒸馏方法以及在标准数据集上进行核心子集选择的方法。 ▊ Approach 首先定义文章所用符号:合成数据集:真实训练集: 上图阐述了本文数据集蒸馏的核心思想。 下图是在CIFAR-10上蒸馏得到的图像,上边是一类一张图像,下边是一类各十张: 接着作者又与一种最近的数据蒸馏方式KIP[1]比较,可以发现在相同模型宽度的情况下所提方法明显优于KIP,甚至部分优于
,可以分为离线蒸馏,在线蒸馏和自蒸馏。 感性上理解三种蒸馏方式: 离线蒸馏可以理解为知识渊博的老师给学生传授知识。 在线蒸馏可以理解为教师和学生一起学习。 自蒸馏意味着学生自己学习知识。 1. 使用在线蒸馏的时候,教师网络和学生网络的参数会同时更新,整个知识蒸馏框架是端到端训练的。 自蒸馏 Self-Distillation 在自蒸馏中,教师和学生模型使用相同的网络。自蒸馏可以看作是在线蒸馏的一种特殊情况,因为教师网络和学生网络使用的是相同的模型。 Rethinking data augmentation: Self-supervision and self-distillation提出的自蒸馏是为数据增强所采用的,并对知识进行增强,以此提升模型本身的性能
知识蒸馏概述 蒸馏指的是把不纯净的水加热变成蒸汽,蒸汽冷凝之后变成冷凝水。知识蒸馏也是把有杂质的东西,大的东西变成小的东西,纯的东西。 教师网络可能是用海量的数据,海量的能源训练出来的一个非常臃肿的模型,现在要部署到移动终端设备上,在算力非常受限的场景下,所以需要把大模型变成小模型,把模型部署到终端上。这就是知识蒸馏的核心目的。 知识蒸馏的过程 我们来看一下学生网络、教师网络到底是怎么样来进行蒸馏学习的,首先有一个已经训练好的教师网络,然后我们把很多数据喂给教师网络,这里会给一个温度为t的时候的softmax。 那么对于之前那个动物分类的总体损失函数如下 知识蒸馏的应用场景 模型压缩 优化训练,防止过拟合(潜在的正则化) 无限大、无监督数据集的数据挖掘 少样本、零样本学习 迁移学习和知识蒸馏 上图中的Baseline 但是当我们使用教师网络传递过来的soft targets来训练该网络,也只使用3%的数据集,则训练数据集的准确率为65.4%,但是它测试集的准确率却达到了接近100%数据集的hard targets的水平
一个是知识蒸馏的方法用于深度学习,同时也需要深入学习;另一个则是本文的核心:蒸馏中如何合理运用温度,让隐藏的知识更好地挥发和凝结。 蒸馏模型 模型蒸馏或知识蒸馏,最早在 2006 年由 Buciluǎ 在文章 Model Compression [14] 中提出(很多博主把人名都写错了。 先简要概括一下模型蒸馏在做什么。出于计算资源的限制或效率的要求,深度学习模型在部署推断时往往需要进行压缩,模型蒸馏是其中一种常见方法。 将原始数据集上训练的重量级(cumbersome)模型作为教师,让一个相对更轻量的模型作为学生。 对于相同的输入,让学生输出的概率分布尽可能的逼近教师输出的分布,则大模型的知识就通过这种监督训练的方式「蒸馏」到了小模型里。
最近在做知识蒸馏的时候了解到了一些无数据蒸馏算法,在无法获取到原始训练数据(机密数据、隐私数据、数据集太大或者是没有百度云会员下不动数据)的情况下,可以尝试一下这种类型的蒸馏算法,也许有奇效呢。 两篇论文都是以GAN为基础结构的知识蒸馏算法。 1. 有了这三个loss函数、再加上Teacher和Student之间的交叉熵,就可以在无任何真实数据的情况下对模型进行知识蒸馏了。 2. 这一阶段与常规的知识蒸馏方法类似,作者认为这一步的意义除了向Teacher学习之外,还有一个意义就是构建更好的搜索空间,迫使生成器去寻找新的困难样本。 2. 其他无数据蒸馏的思路 除了利用GAN做无数据蒸馏的方法外,还有一些利用反向传播更新输入数据的方式来获取与训练数据相似的样本的算法(方法类似于图片风格化算法),这方面的算法也有两篇比较典型的论文,分别是利用训练数据产生的激活值以及
由于推理成本的持续增长,目前这种定律难以持续,人们尝试使用过度训练(其中训练数据量远大于计算最优情况)来实现小型、功能强大的模型。这些模型的构建既昂贵又耗时。 为了弥补这一知识差距,研究人员对蒸馏进行了广泛研究,学生和老师的参数范围从 1.43 亿到 126 亿,使用训练数据最多达 5120 亿 token。 研究发现: 1. 该结果表明,当两个学习过程都有足够的数据或计算时,蒸馏不能产生比监督学习更低的模型交叉熵。但是,如果以下两个条件都成立,则蒸馏比监督学习更有效: 1. 本文的目标是理解教师模型在蒸馏过程中的作用,因此,该研究在纯蒸馏情况下(λ = 1,公式 7)进行蒸馏,以避免数据带来的混淆。本文验证了 λ = 1 的选择能够产生与最优 λ∗ 统计相似的结果。 注:为实现扩展系数的可靠识别,此前有研究使用了两种策略: (固定模型,变化数据) 对于一个固定的模型族,变化训练 token 的数量。
实行端到端知识蒸馏,便于对关键特征/输出进行约束。 去除源域和目标域间的数据域数据分布(data domain)和任务域下游任务(task domain)约束,得以实现跨数据域和跨任务的知识迁移。 因此,知识蒸馏在迁移学习中的应用集中于以下方面: 跨数据集的知识迁移(数据域):如图像分类任务中 CIFAR10 到 ImageNet1k 的迁移,高分辨率源域到低分辨率目标域上的模型迁移。 蒸馏特征的迁移学习 蒸馏特征的迁移学习通过在源域教师模型和目标域学生模型间寻找输出 logits 或中间层特征作为迁移目标的蒸馏知识,实现不同数据域和任务域间的教师—学生关系间的知识蒸馏。 为了避免图片分辨率降低所带来的性能下降,以及弥补高低分辨率间的数据域分布差异,CRKD 提出了采用知识蒸馏进行高低分辨率数据域迁移的方法,将教师模型在高分辨率下的数据域学习的知识迁移至低分辨率数据域下的学生模型 根据以上优点,TMU 针对训练时间长,存储计算开销大的像素级视频预测任务和不同数据集数据分布极大的降水预测子任务特点,提出了使用多个源域上预训练得到模型记忆库对目标域模型进行记忆蒸馏的无监督视频预测方法
Baosheng Yu、Stephen John Maybank、Dacheng Tao 前言 近年来,深度神经网络在工业和学术界都取得了较大成功,尤其是在计算机视觉任务方面:主要归因于其可扩展性以编码大规模数据 在典型的图像分类任务中,logit(例如深层神经网络中最后一层的输出)被用作来自教师模型的知识的载体,而训练数据样本并未显示提供该知识。 4 蒸馏的策略 根据教师模型是否与学生模型同时更新,知识蒸馏的学习方案可以直接分为三大类:离线蒸馏,在线蒸馏和自蒸馏,如图6所示 ? 显然,离线蒸馏方法总是采用单向知识转移和两阶段训练程序。尽管如此,离线仍需要一个复杂的高容量教师网络及其大量的训练数据和时间。 6 蒸馏算法 7 蒸馏应用
为此,研究人员通常通过微调(finetuning)或蒸馏(distillation)训练更小的任务特定模型,但这两种方法都需要大量的训练数据。 本文提出了一种新的方法——逐步蒸馏(Distilling Step-by-Step),它通过提取LLM生成的推理过程作为监督信号,训练小模型并显著减少数据需求。 2.论文方法 逐步蒸馏(Distilling Step-by-Step),其核心思想是利用大规模语言模型(LLMs)推理预测的能力,通过生成带有理由的标签数据来辅助训练更小的下游模型。 逐步蒸馏方法:采用多任务学习方式,将标签预测和理由生成结合起来,训练小模型同时具备预测能力和推理能力。 3.实验部分 3.1数据集 论文中使用了4个流行的基准数据集,涵盖3种不同的自然语言处理(NLP)任务,具体数据集和任务如下: 3.1.1自然语言推理(Natural Language Inference
01 动机 定位的准确性对目标检测算法的性能有很大的影响,而在数据集或者实际应用场景中,位置模糊性(localization ambiguity)是广泛存在的,如下图所示: image.png 05 实验 5.1 使用LD提升学生网络性能 在PASCAL VOC和COCO这2个数据集上验证LD对于学生网络的性能提升。在实现过程中,中的值为10。 PASCAL VOC 使用VOC2007 trainval和VOC2012 trainval训练,使用VOC2007 test测试,训练过程、数据增强等策略遵循mmdetection框架中GFocal模型的配置 5.2 Self-LD对baseline检测器的性能提升 在COCO数据集上使用ResNet-18、ResNet-50和ResNeXt-101-32x4d-DCN这3个模型进行评估,评估它们使用Self-LD 在COCO数据集上训练,在COCO val2017上的测试结果如下图所示: ?
模型蒸馏一. 核心问题由于知识蒸馏在训练过程中,有两个模型(teacher模型和student模型),3个loss(teacher loss、student loss、蒸馏loss),因此如何平衡不同模型之间的训练会是影响模型效果的重要因素 模型有以下特点:学生网络和教师网络共享底层参数 [[公式]]教师网络使用更复杂的模型结构 [[公式]]蒸馏目标是logits输出,学生网络logits拟合教师网络logits蒸馏误差表示如下:[image 模型蒸馏实战说明: keras官方提供的蒸馏方案是一个标准的MD方案, teacher和student使用相同的输入, 通过teacher和student的输出拟合来将teacher的信息迁移到student 准备好数据集# Prepare the train and test dataset.batch_size = 64(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data
github.com/snap-research/R2L Webpage: https://snap-research.github.io/R2L/ 核心方法 我们所提出的核心方法从整体范式上来说非常简单: 通过数据蒸馏将神经辐射场 这些 triplets 就是训练我们模型的数据, loss 函数是 mean squared error (MSE), 如下所示: 在我们的实验中, 我们收集了 10k 张图片, 是原始数据集 (大概 文中的消融实验也表明, 大量伪数据对性能至关重要 (6.9dB PSNR 提升)! 值得一提的是, 如果仅仅是用伪数据训练, 我们的模型最优也只能复制 teacher NeRF, 无法超越它。 总结与未来工作 本文提出了一种全新的数据蒸馏方法来加速 NeRF: 我们使用训练好的 NeRF 模型产生伪数据, 来训练提出的深度残差 NeLF 网络。 (2) 如何用更少, 更高质量的伪数据 (譬如进行数据筛选) 来加速 NeLF 的训练也非常值得探索。
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模型中学习到这些语义上的信息
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模型中学习到这些语义上的信息
平滑多个教师网络的预测结果,因此可以随机选择某个教师网络的Soft label作为Guidance: 第三种算法:同样地,为避免加权平均带来的平滑效果,首先采用教师网络输出的Soft label重新标注样本、增广数据 、再用于模型训练,该方法能够让模型学会从更多视角观察同一样本数据的不同功能: 4、Hint-based Knowledge Transfer Paper地址:https://arxiv.org/abs 并在诱导过程中,能够对抗生成样本,实现数据增强。 在传统KD中,学生网络模仿教师网络关于任务层的预测输出(如分类、位置回归等);而在SSKD中,在变换后的数据集和自监督辅助任务上,能够实现更为丰富的结构化知识迁移。 ,可以训练精简的Faster-RCNN,可参考: 目标检测网络的知识蒸馏_AI Flash-CSDN博客_目标检测 知识蒸馏 ——– 网络结构搜索(NAS)也可以采用蒸馏操作,改善搜索效果,可参考(Cream
但是不同于传统知识蒸馏的单向蒸馏(教师→学生),DML认为可以让学生互相学习(双向蒸馏),在整个训练的过程中互相学习,通过这种方式可以提升模型的性能。 那么先训练一个大型的网络,然后通过使用模型剪枝、知识蒸馏等方法就可以让小型模型的性能提升,甚至超过大型模型。 以知识蒸馏为例,通常需要先训练一个大而宽的教师网络,然后让小的学生网络来模仿教师网络。 总体来说就是:DML并没有帮助我们找到更好的训练损失最小值,而是帮助我们找到更广泛/更稳健的最小值,更好地对测试数据进行泛华。 扩展到半监督学习 在训练半监督的时候,我们对于有标签数据只使用交叉熵损失函数,对于所有训练数据(包括有标签和无标签)的计算KL Divergence 损失。 ,方法是在一个队列中通过对等和相互蒸馏进行训练。
【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 对中间层进行蒸馏的开山之作 Congruence for Knowledge Distillation 链接:https://arxiv.org/pdf/1904.01802.pdf 发表:ICCV19 CC也归属于基于关系的知识蒸馏方法 所谓的factor,其实是对模型最后的数据结果进行一个编解码的过程,提取出的一个factor矩阵,用教师网络的factor来指导学生网络的factor。