蒸馏Knowledg Distilling

2024-06-01 10:38
文章标签 蒸馏 distilling knowledg

本文主要是介绍蒸馏Knowledg Distilling,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 蒸馏基础知识
  • Distilling the Knowledge in a Neural Network 2015-Hinton
  • Deep mutual learning 2017
  • Improved Knowledge Distillation via Teacher Assistant 2019
  • FitNets:Hints for thin deep nets 2015-ICLR
  • 蒸馏的分类

蒸馏基础知识

Distilling the Knowledge in a Neural Network 2015-Hinton

  • 什么是知识蒸馏:
    知识蒸馏中的"知识",其实指的就是对于网络模型中参数权重的一些抽取/迁移的操作。
  • 知识蒸馏的作用:
    模型压缩。
  • 模型压缩一般有什么其他的方法
    1、模型剪枝(Model Pruning)
    1.1权重剪枝
    是将模型中的一些不重要的权重删除,最简单的判断"不重要"的方式,就是"约等于0"。但是删除后,这个原来可以被GPU加速的矩阵运算,删除一些部分,就不能享受加速了。那如果,将权重变成0怎么样,但是这样又并不能很显著地降低模型的大小。所以这个方法并不是很实用。
    1.2神经元剪枝
    神经元剪枝就是去掉网络中的一些神经元。神经元其实可以随机选取,就是删除参数矩阵的一行元素。剪枝需要记住一点:如果想获得一个减小50%的模型,不可以直接踢掉50%的神经元。需要一点点剔除掉,每次提出掉之后,都需要再训练几个epoch,去fine-tuning剩下的model,不然模型整个容易剪坏掉。
    为什么要训练一个大模型,然后剪枝成小模型,而不是直接训练一个小模型。
    很多paper都通过研究得到了这样一个认知:小模型相对大模型而言,更加不容易训练,比如掉入鞍点出不来,拟合能力过弱达不到要求等等,大模型反而没有很多优化上面的问题,虽然需要大量数据来训练,但是拟合能力很强。用大模型每一步进行剪枝,就等同于用一个很接近GroundTruth的强大网络,为小模型做pretrain,这样小模型效果就好起来了。
    2、网络架构设计(Network Architecture)
    2.1 DNN添加中间层
    在这里插入图片描述
    假设原本有一层N个神经元的layer,下面接了一个M个神经元的layer,对于第二层而言,它就有M * N个参数需要拟合;然而,如果在这两层中添加一个小于M 和 N的全连接层,有K个神经元,加入之后,虽然新增了一层,但是参数却变小了。参数量从M *N降低到了 M *K + N *K 。
    在这里插入图片描述然而模型的拟合能力却并没有降低很多,因为可以从矩阵分解的角度理解。 UV两个参数矩阵可以是原M矩阵的奇异值分解矩阵,重要信息都保留了。
    2.2 深度可分离卷积(depthwise separable conv)
    参考MobileNet。
    3、其他方案
    3.1压缩权重的精度位数
    3.2将权重分桶聚类
  • 知识蒸馏到底怎么压缩模型
    首先一个复杂而强大的Teacher Model(简称Net-T),以及另一个简单而弱小的Student Model(简称Net-S),由Net-T完整地学习Ground Truth,然后再由Net-S同时学习Net-T的Logit和Ground Truth,最终Net-S作为应用模型,而Net-T并不进行部署上线
    所以知识蒸馏是一种"伪"压缩,或者广义的压缩方法。
  • 为什么要学习logit
    logit是我们模型输出的对于各个类别的概率预测值。
    学习logit的一个非常感性的认知是:除了正例GroundTruth之外,负例也携带了很多有价值的信息。
    比如说:有一个手写字体识别分类任务,0~9的数字中,7和1写起来很像,但是7和5就很不像,GroundTruth只告诉了我们,这个图片是7,但是logit还告诉了我们:这个图片大概率是7,小概率是1,几乎不太像其他数字。这其中携带了的信息量,也就是我们后面希望Net-S蒸馏学到的知识。
  • Net-S要学习两部分的知识,那损失函数
    在这里插入图片描述
    在这里插入图片描述
    Net-S需要学习的两部分知识,分别对应了Net-S的输出和Net-T的分布差异Loss-soft和与GroundTruth的分布差异Loss-hard。q是我们Net-S的输出,p是Net-T的输出,c是Ground Truth。q、p的输出叫做softmax-T,softmax-T公式如下。
    在这里插入图片描述
    参数T的属性:
    如果将T取1,这个公式就是softmax,根据logit输出各个类别的概率;
    如果T接近于0,则最大的值会越近1,其它值会接近0,近似于onehot编码
    如果T越大,则输出的结果的分布越平缓,相当于平滑的一个作用,起到保留相似信息的作用
    为什么加T参数:
    如果使用原始的softmax,我们都明白它的属性,它会使得那个最大值的类别,在经过自然指数操作后,在概率上显得"更大"。举例来说,如果0-9的手写字体识别中,7-1-5这三个数值的预测,在softmax转化前,是[7,2,1],在经过了softmax转化后,基本也就变成和[1,0,0]无差异的一个结果了,这并不是我们想要学习logit。我们希望的效果是学习数字1-5之间的差异,然而这点"知识"被正常的softmax给"吃掉了"。所以需要做点小变更,把本来差异较小的"知识"给"蒸馏"出来,让Net-S能学习到这些知识。
    在这里插入图片描述参考:
    一文搞懂知识蒸馏

Deep mutual learning 2017

此方法不再是学生网络学习教师网络,本篇论文打破这种预先定义好的“强弱关系”,提出了一种深度相互学习策略,即一组学生网络在整个训练过程中相互学习。
此方法为什么work?复杂的教师网络一定比学生网络好吗?
Baseline kd中teacher性能并非student的上界,实验中student性能偶尔优于teacher
由于label refinery的效应,使用soft label会比hard label学到更多的信息。

在这里插入图片描述
在这里引入KL散度的概念,KL 散度是一种衡量两个概率分布的匹配程度的指标,两个分布差异越大,KL散度越大。p1和p2的KL散度距离计算公式为:
在这里插入图片描述
对于θ1网络来说,此时总的损失函数就由两部分构成:自身监督损失函数,来自θ2网络的匹配损失函数:
在这里插入图片描述
同理,θ2可以表示为:
在这里插入图片描述
网络的扩展:前面用两个网络θ1和θ2说明了DML的结构、算法。其实DML不仅在两个网络中有效,还可以扩展到多个网络中去。
参考:
让学生网络相互学习,为什么深度相互学习优于传统蒸馏模型?| 论文精读

Improved Knowledge Distillation via Teacher Assistant 2019

在较大的teacher和很小的student之间加入容量介于二者之间的Teacher Assistant,teacher先蒸馏TA,TA再蒸馏student。
为什么work:teacher和student的hypothesisspace差别太大(模型容量、结构差别大),导致student无法直接学习teacher,需要一个TA在二者之间过渡。

FitNets:Hints for thin deep nets 2015-ICLR

本篇论文侧重feature蒸馏。为什么要蒸馏feature呢?logits相当于“答案”,feature相当于“思路”。student学习“思路”比学习“答案”容易,即feature学习使得模型一层一层接受更难的问题,而不是直接接受最难的问题。FitNets简单来说就是剖开teacher和student的某一层,而让二者这一层的输出间的mse最小。所有之前的工作都是专注于压缩teacher网络到更浅更宽的网络,没有充分利用深度。该论文通过利用深度解决网络压缩的问题,提出新方法训练thin and deep网络FitNets。注意:由于这一层feature map的shape不一定一样,student在蒸馏过程中这一层后会接一个wr来调整,蒸馏结束拆掉这一层。
在这里插入图片描述

两个loss function:
(1)在这里插入图片描述
其中:
uh代表teacher网络中的第一层到hint层的函数映射,Whint表示其中的参数;
vg代表student网络中的第一层到hidden层的函数映射,Wguided表示其中的参数;
r代表hidden层的一个额外的映射关系,Wr是其中的参数,这是为了使得hidden层与hint层的神经元大小一致。
Wt=Whint,Ws=Wguided,使用一个映射函数Wr来使得Wguided的维度匹配Whint,得到Ws’。
(2) 另外一个是改造的softmax loss(具体见Hinton的论文):
在这里插入图片描述
在这里插入图片描述
FitNets的缺点:

  • Teacher和student网络的hypothesis space差别太大,student无法学习所有信息。
  • Teacher中存在冗余信息,student无法鉴别哪些信息重要。

蒸馏的分类

logist蒸馏
feature蒸馏
位置蒸馏
参考:https://zhuanlan.zhihu.com/p/92269636?from_voters_page=true

这篇关于蒸馏Knowledg Distilling的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020771

相关文章

蒸馏之道:如何提取白酒中的精华?

在白酒的酿造过程中,蒸馏是一道至关重要的工序,它如同一位技艺精细的炼金术士,将原料中的精华提炼出来,凝聚成滴滴琼浆。今天,我们就来探寻这蒸馏之道,看看豪迈白酒(HOMANLISM)是如何提取白酒中的精华的。 一、蒸馏:白酒酿造的魔法时刻 蒸馏,是白酒酿造中的关键环节。在这个过程中,酿酒师们通过巧妙的操作和精细的技艺,将原料中的酒精和风味物质提取出来,为后续的陈酿和勾调提供基础。蒸馏不仅要求

大语言模型数据增强与模型蒸馏解决方案

背景 在人工智能和自然语言处理领域,大语言模型通过训练数百亿甚至上千亿参数,实现了出色的文本生成、翻译、总结等任务。然而,这些模型的训练和推理过程需要大量的计算资源,使得它们的实际开发应用成本非常高;其次,大规模语言模型的高能耗和长响应时间问题也限制了其在资源有限场景中的使用。模型蒸馏将大模型“知识”迁移到较小模型。通过模型蒸馏,可以在保留大部分性能的前提下,显著减少模型的规模,从而降低计算资源

ICD-Face:用于人脸识别的类内紧致蒸馏算法

ICD-Face: Intra-class Compactness Distillation for Face Recognition 摘要         在ICD-Face中,首先提出计算教师和学生模型的相似度分布,然后引入特征库来构造足够多的高质量的正对。然后,估计教师和学生模型的概率分布,并引入相似性分布一致性(SDC)损失来提高学生模型的类内紧致性。 网络模型 ICD-Fac

通过模板级知识蒸馏进行掩模不变人脸识别

Mask-invariant Face Recognition through Template-level Knowledge Distillation 创新点         1.提出了一种掩模不变人脸识别解决方案(MaskInv),该解决方案在训练范式中利用模板级知识蒸馏,旨在生成与相同身份的非蒙面人脸相似的蒙面人脸嵌入。         2.除了提炼的信息之外,学生网络还受益于基于边

IEEE T-ASLP | 利用ASR预训练的Conformer模型通过迁移学习和知识蒸馏进行说话人验证

近期,昆山杜克大学在语音旗舰期刊 IEEE/ACM Transactions on Audio, Speech and Language Processing (TASLP)上发表了一篇题为“Leveraging ASR Pretrained Conformers for Speaker Verification Through Transfer Learning and Knowledge Di

SDXS:知识蒸馏在高效图像生成中的应用

人工智能咨询培训老师叶梓 转载标明出处 扩散模型虽然在图像生成方面表现出色,但其迭代采样过程导致在低功耗设备上部署面临挑战,同时在云端高性能GPU平台上的能耗也不容忽视。为了解决这一问题,小米公司的Yuda Song、Zehao Sun、Xuanwu Yin等人提出了一种新的方法——SDXS,通过知识蒸馏简化了U-Net和图像解码器架构,并引入了一种创新的一步式DM训练技术,使用特征匹配和得分蒸

氟化氢的制备与纯化PFA蒸馏冷凝装置耐受强酸PFA烧瓶精馏装置

制备与分馏装置 反应: 浓硫酸+Na3AlF6  温度 200 – 300度,产生HF气体 冰晶石(又名六氣铝酸钠,Na3AIF2;)是白色固体,微溶于水,常用作电解铝工业的助熔剂。工业上用萤石(主要成分是CaF,)、浓硫酸、氢氧化铝和碳酸钠溶液通过湿法制备冰晶石,某化学实验小组模拟工业上制取Nà,AIF,的装置图如下(该装置均由聚四氣乙烯仪器组装而成)。 已知:CaF,+H,SO:ACaS

20240621日志:大模型压缩-从闭源大模型蒸馏

目录 1. 核心内容2. 方法2.1 先验估计2.2 后验估计2.3 目标函数 3. 交叉熵损失函数与Kullback-Leibler(KL)损失函数 location:beijing 涉及知识:大模型压缩、知识蒸馏 Fig. 1 大模型压缩-知识蒸馏 1. 核心内容 本文提出在一个贝叶斯估计框架内估计闭源语言模型的输出分布,包括先验估计和后验估计。先验估计的目的是通

CVPR2024知识蒸馏Distillation论文49篇速通

Paper1 3D Paintbrush: Local Stylization of 3D Shapes with Cascaded Score Distillation 摘要小结: 我们介绍了3DPaintbrush技术,这是一种通过文本描述自动对网格上的局部语义区域进行纹理贴图的方法。我们的方法直接在网格上操作,生成的纹理图能够无缝集成到标准的图形管线中。我们选择同时生成一个定位图(指定编辑

量化、剪枝、蒸馏,这些大模型黑话到底说了些啥?

扎克伯格说,Llama3-8B还是太大了,不适合放到手机中,有什么办法? 量化、剪枝、蒸馏,如果你经常关注大语言模型,一定会看到这几个词,单看这几个字,我们很难理解它们都干了些什么,但是这几个词对于现阶段的大语言模型发展特别重要。这篇文章就带大家来认识认识它们,理解其中的原理。 模型压缩 量化、剪枝、蒸馏,其实是通用的神经网络模型压缩技术,不是大语言模型专有的。 模型压缩的意义 通过压缩