知识蒸馏介绍

在这里插入图片描述

一、知识蒸馏介绍

1.1 概念介绍

知识蒸馏(knowledge distillation)是模型压缩的一种常用的方法,不同于模型压缩中的剪枝和量化,知识蒸馏是通过构建一个轻量化的小模型,利用性能更好的大模型的监督信息,来训练这个小模型,以期达到更好的性能和精度。
最早是由Hinton在2015年首次在文章《Distilling the Knowledge in a Neural Network》中提出并应用在分类任务上面,这个复杂模型我们称之为teacher(教师模型),小模型我们称之为Student(学生模型)。来自Teacher模型输出的监督信息称之为knowledge(知识),而student学习迁移来自teacher的监督信息的过程称之为Distillation(蒸馏)。

1.2 为什么要有知识蒸馏?

深度学习在计算机视觉、语音识别、自然语言处理等内的众多领域中均取得了令人难以置信的性能。但是,大多数模型在计算上过于昂贵,无法在移动端或嵌入式设备上运行。因此需要对模型进行压缩,且知识蒸馏是模型压缩中重要的技术之一。

提升模型精度
如果对目前的网络模型A的精度不是很满意,那么可以先训练一个更高精度的teacher模型B(通常参数量更多,时延更大),然后用这个训练好的teacher模型B对student模型A进行知识蒸馏,得到一个更高精度的A模型。

降低模型时延,压缩网络参数
如果对目前的网络模型A的时延不满意,可以先找到一个时延更低,参数量更小的模型B,通常来讲,这种模型精度也会比较低,然后通过训练一个更高精度的teacher模型C来对这个参数量小的模型B进行知识蒸馏,使得该模型B的精度接近最原始的模型A,从而达到降低时延的目的。

标签之间的域迁移
假如使用狗和猫的数据集训练了一个teacher模型A,使用香蕉和苹果训练了一个teacher模型B,那么就可以用这两个模型同时蒸馏出一个可以识别狗、猫、香蕉以及苹果的模型,将两个不同域的数据集进行集成和迁移。

降低标注量
该功能可以通过半监督的蒸馏方式来实现,用户利用训练好的teacher网络模型来对未标注的数据集进行蒸馏,达到降低标注量的目的。

因此,在工业界中对知识蒸馏和迁移学习也有着非常强烈的需求。

补充模型压缩的知识::模型压缩大体上可以分为 5 种:

模型剪枝:即移除对结果作用较小的组件,如减少 head 的数量和去除作用较少的层,共享参数等,ALBERT属于这种;
量化:比如将 float32 降到 float8;
知识蒸馏:将 teacher 的能力蒸馏到 student上,一般 student 会比 teacher 小。我

### 知识蒸馏算法概念 知识蒸馏是一种用于模型压缩的技术,旨在将大型复杂模型(称为教师模型)的知识迁移到小型简单模型(称为学生模型),从而在保持较高性能的同时降低计算成本和资源消耗[^1]。 ### 工作原理 Hinton等人提出的经典知识蒸馏方法中,主要思想是在训练阶段让学生模型模仿教师模型的行为。具体来说: - 教师模型对输入样本给出软概率分布预测; - 学生模型不仅学习真实标签的硬目标,还尝试拟合由温度参数调整后的教师模型输出的概率分布。 这种机制允许学生继承来自更强大但昂贵的教师网络所学到的信息,而不需要直接访问其内部结构或权重。 ### 实现细节 为了实现上述过程,通常采用以下步骤: ```python import torch.nn.functional as F def distillation_loss(y_pred_student, y_true, teacher_outputs, T=5.0, alpha=0.7): """ 计算知识蒸馏损失 """ # 软目标部分 (teacher's soft targets) loss_soft = F.kl_div( F.log_softmax(y_pred_student / T), F.softmax(teacher_outputs / T), reduction='batchmean' ) * (T ** 2) # 硬目标部分 (true labels) loss_hard = F.cross_entropy(y_pred_student, y_true) return alpha * loss_soft + (1 - alpha) * loss_hard ``` 此代码片段展示了如何定义一个混合了软目标和硬目标的知识蒸馏损失函数。其中`alpha`控制两者之间的权衡比例;`T`表示用来平滑教师输出分布的温度系数[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值