深度学习(9)——模型的蒸馏、特征的蒸馏

前言

蒸馏就是把一个大模型变成一个相对小的模型

一、蒸馏的目的

Distill knowledge from bigger models

从大模型中学习知识

Use the distilled knowledge to guide the learning of smaller models

用学习到的知识指导学习一个更小的模型

Use smaller models to mimic the effect of bigger models

小模型的效果可以逼近大模型的效果

二、蒸馏中的softmax

以分类问题为例。关于分类问题,就会想到softmax(一个向量中的每一个分量先求指数,然后求所有分量指数分和,指数/和得到一个新的分量,组成新的向量,和为1),蒸馏中的softmax也是这样的处理思路,只是加了一个温度指数T,将e的指数再除以T;
在这里插入图片描述

那么当T=1时,没有区别
当T=100时,差异变小
当T=+∞时,每个分量的指数形式变成1,那么新的向量x=1/n

三、蒸馏流程

在这里插入图片描述

1.step

首先训练大模型(a),softmax(1),得到一个输出(0.97,0.029,0.001);
在这里插入图片描述

2.step

然后通过调整蒸馏温度(b),softmax(T),从大模型蒸馏学习,得到输出(0.56,0.24,0.2),可以看到,通过设置蒸馏温度后,模型的输出值逐渐变得相互接近,而这个值反而时利于模型训练的,也就是1中的输出便于判断,2中的输出便于学习。

在这里插入图片描述

3.step

  1. 将2中的输出作为数据进行输入,学得小模型(c)。学习过程中设立两个分支,一个是蒸馏分支softmax(T),一个是大模型分支softmax(1),通过调整系数 𝜆 ,规定是蒸馏的知识学的多,还是大模型的知识学的多。

在这里插入图片描述

4.总结:

首先训练大模型;
大模型训练好后改变softmax的温度参数T,用T调整信息的蒸馏程度;
用蒸馏后的输出数据去训练一个小模型,小模型中根据不同的比重学习蒸馏知识和标签知识。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLOv8是一个非常强大的目标检测模型,但是它的大小和计算复杂度可能会限制它在某些设备上的使用。为了解决这个问题,可以使用模型蒸馏来将YOLOv8转化为轻量化模型。以下是YOLOv8模型蒸馏的步骤: 1.准备教师模型和学生模型。教师模型是一个较大的预训练模型,可以是YOLOv8或其他模型。学生模型是一个较小的模型,可以是YOLOv8或其他模型。 2.使用教师模型生成训练数据。使用教师模型对训练数据进行预测,并将预测结果作为学生模型的标签。 3.训练学生模型。使用生成的训练数据对学生模型进行训练。在训练过程中,可以使用教师模型的输出作为额外的损失函数,以帮助学生模型更好地学习。 4.微调学生模型。使用原始数据对学生模型进行微调,以进一步提高其性能。 5.评估学生模型。使用测试数据对学生模型进行评估,以确定其性能是否达到预期。 以下是一个使用Keras实现YOLOv8模型蒸馏的示例代码: ```python # 准备教师模型和学生模型 teacher_model = create_yolov8_teacher_model() student_model = create_yolov8_student_model() # 使用教师模型生成训练数据 train_data = generate_yolov8_train_data(teacher_model) # 训练学生模型 student_model.fit(train_data, epochs=10) # 微调学生模型 student_model.fit(raw_data, epochs=5) # 评估学生模型 test_data = generate_yolov8_test_data() student_model.evaluate(test_data) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值