首页 > 其他分享 >从零开始知识蒸馏(自用版)

从零开始知识蒸馏(自用版)

时间:2024-01-24 14:13:01浏览次数:31  
标签:蒸馏 标签 模型 知识 从零开始 自用 Net 温度

一、什么是知识蒸馏,为什么要使用知识蒸馏?

知识蒸馏是一种将预先训练的教师网络的知识转移到学生网络的方法,使小型网络可以在网络部署阶段取代大型教师网络。知识蒸馏的概念最初是由Hinton等人提出的,已广泛应用于各个领域和任务。知识蒸馏的基本原理是通过训练一个更小、更轻量级的模型来学习更大、更复杂的模型的知识。通常,复杂模型被称为“教师模型”,而简化模型被称为“学生模型”。教师模型可以是深度神经网络或其他复杂模型,而学生模型通常是较浅或较窄的层神经网络。通过将教师模型的输出及其对应的标签作为学生模型的训练目标,学生模型可以从教师模型中获得更多的知识,并在学习过程中逐渐接近或超过教师模型的性能。

二、知识是什么?

首先,区分硬标签和软标签,硬标签就是对分类结果,1就是1,0就是0,一只猫判断它是猫的概率是1,是狗的概率是0,软标签就是用概率给它一个不那么确定的标签,一只猫判断它是猫的概率是0.8,是狗的概率是0.2。

硬标签是我们数据集中通常已知的,一个模型经过训练后它输出的往往是软标签,软标签比硬标签具有更多的知识,比如图片猫的概率是0.8,狗的概率是0.2,说明猫和狗在一定程度上有相似性,而和苹果的相似性为0,这给了我们类别之间更多的关联和信息。

因此,小模型除了利用已知的硬标签,还可以从大模型给的预测软标签中学习更多的“知识”。

三、如何蒸馏知识

Ne-S既要学习真实标签,也就是硬标签,还要学习Teacher给的软标签,那么损失函数就定义为:
L=CE(y,p)+αCE(q,p),y是真实标签,p是Student的预测,q是Teacher的预测。

此外,由于softmax通常把不同类的预测概率区分的很大,比如猫的是0.999,狗是0.001,苹果是0,这样狗和苹果和猫的相似度几乎都一样为0了,为了避免这种情况,加入温度Temperature,让每个类的预测差距不那么大。

 

这样更有利于Student学习到知识。

原来的softmax函数是T = 1的特例。 T越高,softmax的output probability distribution越趋于平滑,其分布的熵越大,负标签携带的信息会被相对地放大,模型训练将更加关注负标签。

温度代表了什么,如何选取合适的温度?

 

温度的高低改变的是Net-S训练过程中对负标签的关注程度: 温度较低时,对负标签的关注,尤其是那些显著低于平均值的负标签的关注较少;而温度较高时,负标签相关的值会相对增大,Net-S会相对多地关注到负标签。

 

实际上,负标签中包含一定的信息,尤其是那些值显著高于平均值的负标签。但由于Net-T的训练过程决定了负标签部分比较noisy,并且负标签的值越低,其信息就越不可靠。因此温度的选取比较empirical,本质上就是在下面两件事之中取舍:

 

  1. 从有部分信息量的负标签中学习 --> 温度要高一些
  2. 防止受负标签中噪声的影响 -->温度要低一些

 

总的来说,T的选择和Net-S的大小有关,Net-S参数量比较小的时候,相对比较低的温度就可以了(因为参数量小的模型不能capture all knowledge,所以可以适当忽略掉一些负标签的信息)

 

 

标签:蒸馏,标签,模型,知识,从零开始,自用,Net,温度
From: https://www.cnblogs.com/yeonni/p/17984505

相关文章

  • 44从零开始用Rust编写nginx,命令行参数的设计与解析及说明
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/......
  • 从零开始:直播电商APP开发全流程解析
    本篇文章,小编将从零开始,全面解析直播电商APP的开发流程,涵盖了关键的技术要点和开发阶段的关键步骤。 第一阶段:需求分析与规划此阶段的关键任务包括:1.用户需求调研2.功能规划3.技术选型第二阶段:设计与原型设计阶段是将需求转化为可执行计划的关键环节。在这一阶段,团队需要完成以下......
  • 自用Xlinx手册简介
    芯片手册自用-CSDN博客I/OSerdes和I/OBUFD的使用记录:Hdmi接口与XAPP460-CSDN博客:参考XAPP460原语:串并转换器-CSDN博客I_CAP的使用记录:参考XAPP1247在线升级之ICAP,ISP,BIN,HEX,MCS_mcs文件和bin文件-CSDN博客xapp1247-multiboot-spi.pdf•查看器•AMD自适应计算文档......
  • 【从零开始重学Java】第13天 Java网络功能
    前情提示从零开始重学Java第0天从零开始重学Java第1天Java概述从零开始重学Java第2天标识符和数据类型从零开始重学Java第3天表达式和流程控制语句从零开始重学Java第4天数组、向量和字符串从零开始重学Java第5天对象和类从零开始重学Java第6天异常从零开始......
  • 机器视觉 - YoloV8 是采用预训练还是从零开始训练的模型
    关于Fine-tuning和预训练和fromscratch训练yolo命令行model的参数的说明既可以选择yolov8n.pt,也可以选择yolov8n.yaml,区别是:model=yolov8n.pt,即为Fine-tuning训练,yolov8n.pt模型文件已经包含了yolov8网络结构、超参数、训练参数、权重参数信息,它是官方的pre......
  • 从零开始的源码搭建:详解连锁餐饮行业中的点餐小程序开发
    时下,点餐小程序成为了许多餐饮企业引入的一种创新工具,不仅方便了顾客的用餐体验,同时也提高了餐厅的运营效率。本文将详细探讨如何从零开始搭建一个源码,并深入解析连锁餐饮行业中的点餐小程序开发过程。 一、需求分析与规划在开始源码搭建之前,首先需要明确点餐小程序的具体需求。这......
  • 如何从零开始实现TDOA技术的 UWB 精确定位系统(4)
    这是一个系列文章《如何从零开始实现TDOA技术的UWB精确定位系统》第4部分。重要提示(劝退说明):Q:做这个定位系统需要基础么?A:文章不是写给小白看的,需要有电子技术和软件编程的基础Q:你的这些硬件/软件是开源的吗?A:不是开源的。这一系列文章是授人以“渔”,而不是授人以“鱼”。文章中......
  • 【从零开始重学Java】第11天
    前情提示从零开始重学Java第0天从零开始重学Java第1天从零开始重学Java第2天从零开始重学Java第3天从零开始重学Java第4天从零开始重学Java第5天从零开始重学Java第6天从零开始重学Java第7天从零开始重学Java第8_9_10天Java数据流关于文件的操作建议使用新的......
  • 从零开始:教你如何规划和开发一款优质的教育网校APP
    本篇文章,笔者将从规划和开发的角度,详细介绍如何从零开始打造一款优质的教育网校APP。 第一步:明确需求和目标在开始规划之前,我们首先需要明确教育网校APP的目标受众是谁,提供哪些课程,以及期望达到的效果是什么。可能的目标包括提高学生学习效果、提供灵活的学习时间、增加教育机构的......
  • Tauri魔法指南:从零开始开发一个桌面应用
    摘要:本文将以轻松幽默的笔调,带领读者探索如何使用Tauri这个前端魔法工具,从零开始开发一个跨平台的桌面应用。通过深刻的洞察和实际示例,让你轻松进入这个神奇的桌面开发领域。引言曾几何时,前端开发者们只是在浏览器中玩耍,创造着一个个网页的魔法。但如今,我们有了一个更大的舞台,一个......