首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏GiantPandaCV

    知识蒸馏综述:蒸馏机制

    ,可以分为离线蒸馏,在线蒸馏和自蒸馏。 感性上理解三种蒸馏方式: 离线蒸馏可以理解为知识渊博的老师给学生传授知识。 在线蒸馏可以理解为教师和学生一起学习。 自蒸馏意味着学生自己学习知识。 1. 早期的KD方法都属于离线蒸馏,将一个预训练好的教师模型的知识迁移到学生网络,所以通常包括两个阶段: 在蒸馏前,教师网络在训练集上进行训练。 使用在线蒸馏的时候,教师网络和学生网络的参数会同时更新,整个知识蒸馏框架是端到端训练的。 自蒸馏 Self-Distillation 在自蒸馏中,教师和学生模型使用相同的网络。自蒸馏可以看作是在线蒸馏的一种特殊情况,因为教师网络和学生网络使用的是相同的模型。

    2.2K30编辑于 2021-12-09
  • 来自专栏自然语言处理(NLP)论文速递

    模型蒸馏升级!高温蒸馏:Softmax With Temperature

    一个是知识蒸馏的方法用于深度学习,同时也需要深入学习;另一个则是本文的核心:蒸馏中如何合理运用温度,让隐藏的知识更好地挥发和凝结。 蒸馏模型 模型蒸馏或知识蒸馏,最早在 2006 年由 Buciluǎ 在文章 Model Compression [14] 中提出(很多博主把人名都写错了。 先简要概括一下模型蒸馏在做什么。出于计算资源的限制或效率的要求,深度学习模型在部署推断时往往需要进行压缩,模型蒸馏是其中一种常见方法。 最终的序列会使用 BeamSearch [10] 或者 Viterbi [11] 等算法搜索 Top-K 概率的序列。 这类方法介于逐时间步 argmax 的完全贪心策略和全局动态规划的优化策略之间。 /What-is-the-temperature-parameter-in-deep-learning [9] 详解CTChttps://zhuanlan.zhihu.com/p/42719047 [10

    2.3K30编辑于 2022-12-06
  • 来自专栏算法之名

    知识蒸馏

    知识蒸馏概述 蒸馏指的是把不纯净的水加热变成蒸汽,蒸汽冷凝之后变成冷凝水。知识蒸馏也是把有杂质的东西,大的东西变成小的东西,纯的东西。 softmax_5 = np.exp(logits / T) / sum(np.exp(logits / T)) plt.plot(softmax_5, label='T=5') T = 10 softmax_10 = np.exp(logits / T) / sum(np.exp(logits / T)) plt.plot(softmax_10, label='T=10') 教师网络训练模型 class TeacherModel(nn.Module): def __init__(self, in_channels=1, num_classes=10 # 学生网络训练模型 class StudentModel(nn.Module): def __init__(self, in_channel=1, num_classes=10

    93030编辑于 2022-03-24
  • 来自专栏NLP/KG

    知识蒸馏相关技术【模型蒸馏、数据蒸馏】以ERNIE-Tiny为例

    1.1 模型蒸馏原理知识蒸馏是一种模型压缩常见方法,指的是在teacher-student框架中,将复杂、学习能力强的网络(teacher)学到的特征表示"知识"蒸馏出来,传递给参数量小、学习能力弱的网络 实验表明通用蒸馏阶段和任务蒸馏阶段的蒸馏loss不匹配时,学生模型的效果会受到影响。 具体来说,第一阶段,General Distillation,在预训练的老师、一般数据和潜在蒸馏损失的指导下进行蒸馏。 如果已提供的通用蒸馏学生模型尺寸符合需求,用户可以主要关注接下来的任务蒸馏过程。 教师模型和通用数据继续用通用蒸馏的方式蒸馏学生模型,进一步提升学生模型的效果;a.

    1.8K31编辑于 2022-11-14
  • 来自专栏NLP/KG

    知识蒸馏相关技术【模型蒸馏、数据蒸馏】以ERNIE-Tiny为例

    1.1 模型蒸馏原理 知识蒸馏是一种模型压缩常见方法,指的是在teacher-student框架中,将复杂、学习能力强的网络(teacher)学到的特征表示"知识"蒸馏出来,传递给参数量小、学习能力弱的网络 实验表明通用蒸馏阶段和任务蒸馏阶段的蒸馏loss不匹配时,学生模型的效果会受到影响。 具体来说,第一阶段,General Distillation,在预训练的老师、一般数据和潜在蒸馏损失的指导下进行蒸馏。 如果已提供的通用蒸馏学生模型尺寸符合需求,用户可以主要关注接下来的任务蒸馏过程。 fine-tuned教师模型和通用数据继续用通用蒸馏的方式蒸馏学生模型,进一步提升学生模型的效果; a.

    1.6K20编辑于 2022-12-21
  • 来自专栏机器之心

    苹果也在蒸馏大模型,给出了蒸馏Scaling Laws

    蒸馏扩展定律的外推。蒸馏扩展定律适用于一系列损失为 LT 的教师的弱学生模型(L_S > 2.3)。 如果要蒸馏多个学生模型,或者已有教师模型,蒸馏在计算水平上优于监督预训练,直到计算水平随着学生模型规模的增加而可预测地增长。如果要蒸馏一个学生模型且还需要训练教师模型,则应采用监督学习。 此外,作者在大规模蒸馏研究中提供了深入的见解,这些见解增加了我们对蒸馏的理解,并为实验设计提供了信息。 老师已经存在,或者要训练的老师有超出单次蒸馏的用途。 新的定律和分析有望指导 AI 社区构建更强大的模型,实现更低的推理成本和总计算成本。 蒸馏扩展率 文章概述了他们如何得出蒸馏扩展率所采取的步骤。 本文的目标是理解教师模型在蒸馏过程中的作用,因此,该研究在纯蒸馏情况下(λ = 1,公式 7)进行蒸馏,以避免数据带来的混淆。本文验证了 λ = 1 的选择能够产生与最优 λ∗ 统计相似的结果。

    33900编辑于 2025-02-19
  • 来自专栏OpenMMLab

    知识蒸馏系列(二):知识蒸馏的迁移学习应用

    知识蒸馏系列文章继续更新啦!在上一篇文章中,我们介绍了三类基础知识蒸馏算法,今天我们一起来学习知识蒸馏的迁移学习应用。 本文内容 1 前言 2 蒸馏特征的迁移学习 3 蒸馏参数的迁移学习 4 总结 1. 因此,知识蒸馏在迁移学习中的应用集中于以下方面: 跨数据集的知识迁移(数据域):如图像分类任务中 CIFAR10 到 ImageNet1k 的迁移,高分辨率源域到低分辨率目标域上的模型迁移。 蒸馏特征的迁移学习 蒸馏特征的迁移学习通过在源域教师模型和目标域学生模型间寻找输出 logits 或中间层特征作为迁移目标的蒸馏知识,实现不同数据域和任务域间的教师—学生关系间的知识蒸馏。 teacher[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 5057-5066. [10

    2.1K10编辑于 2022-12-30
  • 来自专栏机器学习与生成对抗网络

    综述 | 知识蒸馏(1)

    4 蒸馏的策略 根据教师模型是否与学生模型同时更新,知识蒸馏的学习方案可以直接分为三大类:离线蒸馏,在线蒸馏和自蒸馏,如图6所示 ? 在线蒸馏中,教师模型和学生模型同时更新,整个知识蒸馏框架是端到端训练的。 它也可视为在线蒸馏的特殊情况。 为了进一步直观地了解蒸馏,还可以从人类教师-学生学习的角度总结离线,在线和自蒸馏。 离线蒸馏意味着知识渊博的老师向新生传授知识;在线蒸馏是指师生在老师为主要监督下互相学习;自蒸馏是学生无需老师就能自学知识。这三种蒸馏方法可以结合起来进行优势互补。 6 蒸馏算法 7 蒸馏应用

    1.9K20发布于 2020-07-24
  • 来自专栏CSDN社区搬运

    逐步蒸馏论文复现

    为此,研究人员通常通过微调(finetuning)或蒸馏(distillation)训练更小的任务特定模型,但这两种方法都需要大量的训练数据。 本文提出了一种新的方法——逐步蒸馏(Distilling Step-by-Step),它通过提取LLM生成的推理过程作为监督信号,训练小模型并显著减少数据需求。 2.论文方法 逐步蒸馏(Distilling Step-by-Step),其核心思想是利用大规模语言模型(LLMs)推理预测的能力,通过生成带有理由的标签数据来辅助训练更小的下游模型。 逐步蒸馏方法:采用多任务学习方式,将标签预测和理由生成结合起来,训练小模型同时具备预测能力和推理能力。 (Standard Distillation) 使用LLM生成的标签(PaLM label)对模型进行蒸馏: python run.py --from_pretrained .

    64410编辑于 2025-01-02
  • 来自专栏我爱计算机视觉

    位置蒸馏:针对目标检测提高定位精度的知识蒸馏

    为预测目标框中某个边框,教师网络和学生网络分别输出和,对它们进行softmax操作,得到概率分布和,可以用下面的公式表示边框的蒸馏损失: 回归框中4个边框的蒸馏损失表示为: 上述关于位置蒸馏的表述可以用下图表示 位置蒸馏和普通的蒸馏在形式上是一样的,而且不依赖于特定的架构,具有很强的通用性。 3.3 Self-LD 蒸馏学习使得轻量化学生网络拥有高性能教师网络的性能,而对教师网络本身使用蒸馏方法,即自蒸馏,也能提高教师网络本身的性能。 同样地,也可以在自蒸馏方法中引入位置蒸馏,即Self-LD,来增强教师网络解决边界模糊性的能力。 在实现过程中,中的值为10。 分别使用ResNet-101和ResNet-101-DCN作为教师网络,使用ResNet-18、ResNet-34和ResNet-50作为学生网络。

    1.5K40发布于 2021-05-07
  • 来自专栏代码工具

    模型蒸馏-学习笔记

    模型蒸馏一. 核心问题由于知识蒸馏在训练过程中,有两个模型(teacher模型和student模型),3个loss(teacher loss、student loss、蒸馏loss),因此如何平衡不同模型之间的训练会是影响模型效果的重要因素 layers.Conv2D(512, (3, 3), strides=(2, 2), padding="same"), layers.Flatten(), layers.Dense(10 layers.Conv2D(32, (3, 3), strides=(2, 2), padding="same"), layers.Flatten(), layers.Dense(10 from_logits=True), distillation_loss_fn=keras.losses.KLDivergence(), alpha=0.1, temperature=10

    9.9K22编辑于 2022-06-30
  • 来自专栏null的专栏

    BERT知识蒸馏TinyBERT

    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模型中学习到这些语义上的信息

    67640编辑于 2022-11-30
  • 来自专栏全栈程序员必看

    知识蒸馏(Knowledge Distillation)

    本文主要罗列与知识蒸馏相关的一些算法与应用。但首先需要明确的是,教师网络或给定的预训练模型中包含哪些可迁移的知识? ; 10、KD for Lightweight Face Detector Paper地址: https://www.researchgate.net/publication/339172272_Learning_Lightweight_Face_Detector_with_Knowledge_Distillation ,考虑了中间层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

    3.4K10编辑于 2022-07-01
  • 来自专栏null的专栏

    BERT知识蒸馏TinyBERT

    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模型中学习到这些语义上的信息

    96860编辑于 2022-11-12
  • 来自专栏图与推荐

    NeurIPS23 | 图数据蒸馏 v.s. 图像数据蒸馏,

    最近,图数据集蒸馏/图压缩(Graph Dataset Distillation / Graph Condensation)方法引起了广泛关注,它旨在将庞大的原始图数据蒸馏至一个极小规模且信息丰富的生成图 ,现有的图数据蒸馏(图压缩)方法往往是将面向图像数据的数据蒸馏方法简单扩展到图数据上,忽视了图结构在图数据蒸馏中的关键作用。 因此,我们的研究聚焦于图结构对图数据蒸馏性能的影响。从谱域角度出发,我们定量分析了原始图与生成图间的“结构差异”,并实验性地验证了这种差异与生成图的跨框架泛化性能之间的关系。 现有方法的问题 现有的图数据蒸馏(图压缩)方法往往是将面向图像数据的数据蒸馏方法简单扩展到图数据上,忽视了图结构信息在图数据压缩中的重要影响。 总结 面向图数据的蒸馏目前仍为一个较新的方向,我们的研究着眼于图结构保持对图数据蒸馏的重要性,期望此工作能够引起领域对该方向更多的研究和探讨。 6.

    81810编辑于 2024-01-23
  • 来自专栏GiantPandaCV

    【知识蒸馏】Deep Mutual Learning

    引言 首先感谢:https://github.com/AberHu/Knowledge-Distillation-Zoo 笔者在这个基础上进行测试,测试了在CIFAR10数据集上的结果。 但是不同于传统知识蒸馏的单向蒸馏(教师→学生),DML认为可以让学生互相学习(双向蒸馏),在整个训练的过程中互相学习,通过这种方式可以提升模型的性能。 那么先训练一个大型的网络,然后通过使用模型剪枝、知识蒸馏等方法就可以让小型模型的性能提升,甚至超过大型模型。 以知识蒸馏为例,通常需要先训练一个大而宽的教师网络,然后让小的学生网络来模仿教师网络。 实验结果 几个网络的参数情况: 在CIFAR10和CIFAR100上训练效果 在Reid数据集Market-1501上也进行了测试: 发现互学习目标越多,性能呈上升趋势: 结论 本文提出了一种简单而普遍适用的方法来提高深度神经网络的性能 ,方法是在一个队列中通过对等和相互蒸馏进行训练。

    1.1K30发布于 2021-11-19
  • 来自专栏集智书童

    离线蒸馏奢侈?在线蒸馏难?都不再是问题DKEL统统帮你解决,蒸馏同质化问题也解决!

    离线知识蒸馏是一种需要昂贵资源训练教师网络,然后将知识蒸馏到学生网络进行部署的两阶段 Pipeline 。另一方面,在线知识蒸馏是一种一阶段策略,通过互相学习和合作学习来缓解这种需求。 集成学习,在现有的在线知识蒸馏中广泛使用,如KDCL(图1(b)),通过减少每个个体网络的方差,构建一个强大的伪教师网络,从而减轻在线知识蒸馏早期的不准确监督问题。 2 Related work 知识蒸馏通常用于模型压缩,这被分为离线和在线知识蒸馏: 离线知识蒸馏需要一个预训练的教师网络和一个学生网络,学生网络同时学习教师网络和真实值。 CIFAR-10包含50,000个训练图像和10,000个验证图像,来自10个目标类别,其中每个图像是一个 32\times 32 RGB图像。 Comparison with SOTAs 在本节中,作者将方法DKEL在CIFAR-10/100和TinyImageNet数据集上进行评估,并与先前的在线知识蒸馏工作进行比较,包括DML,CL,ONE

    1.3K10编辑于 2024-01-03
  • 来自专栏GiantPandaCV

    知识蒸馏综述:代码整理

    【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也归属于基于关系的知识蒸馏方法 self.margin) ** 2 * ((source <= self.margin) & (target > 0)).float()) return torch.abs(loss).sum() 10

    1.6K21编辑于 2022-02-11
  • 来自专栏AI系统

    【AI系统】知识蒸馏原理

    我们将探讨知识蒸馏的不同知识类型,包括基于响应的、基于特征的和基于关系的知识点,以及不同的知识蒸馏方式,如离线蒸馏、在线蒸馏和自蒸馏。 此外,还将解读 Hinton 提出的经典知识蒸馏算法,以及知识蒸馏与自然界中物理蒸馏过程的相似之处。 用学习过程比喻,离线蒸馏是知识渊博的老师向学生传授知识;在线蒸馏是老师和学生一起学习、共同进步;自蒸馏是学生自学成才。 自蒸馏的提出主要是为了解决传统两阶段蒸馏方法的一些问题。 例如 MNIST 数据集中存在一个数字 2 的样本被预测为 3 的概率为 10^{-6} ,被预测为 7 的概率为 10^{-9} ,这部分负标签的信息就意味着这个数字 2 有可能与 3 和 7 有些相像 知识蒸馏与物理蒸馏的相似之处: 知识蒸馏通过 T 系数控制模型输出的熵;物理蒸馏通过温度改变混合物的形态,影响物理系统的熵 温度系数 T 训练时提高,最后变回 1;物理蒸馏时温度先上升使液体变为气体,气体再回到常温变回液体

    98310编辑于 2024-12-06
  • 来自专栏人人都是极客

    深度学习中的3个秘密:集成,知识蒸馏和自蒸馏

    例如,用不同的随机种子在CIFAR-100数据集上训练相同的WideResNet-28-10架构10次,平均测试精度为81.51%,而标准偏差仅为0.16%。 这意味着单个函数F1,…F10必须是不同的。然而,为什么集成的效果会突然提高呢?另外,如果一个人直接训练(F1+⋯+F10)/10,为什么性能提升会消失? 神秘之处2:知识蒸馏 尽管集成在提高测试时性能方面非常出色,但在推理时间(即测试时间)上,它的速度会慢10倍:我们需要计算10个神经网络的输出,而不是一个。 此外,我们是否可以对知识蒸馏后的模型进行集成学习以进一步提高测试精度? 图2:知识蒸馏和自蒸馏也提高了深度学习的性能。 在深度学习中,直接训练模型的平均值(F1+⋯+F10)/10与训练单个模型Fi相比没有任何好处,而在随机特征设置中,训练平均值的效果优于单个模型和它们的集成。

    1.9K11编辑于 2024-04-15
领券