知识蒸馏学习记录(二)

news2024/9/21 5:43:49

上一篇博文中我们介绍了知识蒸馏的一些基础知识,这里我们来学习其到底是如何完成知识蒸馏过程的。

知识蒸馏为何可以让学生网络模型小却性能强?

详细很多同学与我有相同的疑问,尽管它依靠不同的蒸馏温度T可以学得一些hard target标注无法包含的知识,但这个过程还是太过抽象。

蒸馏温度T

在这里插入图片描述

Hard Target与Soft Target

在这里插入图片描述

大量的实验性研究表明,所谓的“暗知识”其实是软化的标签对网络的学习产生的正则化效用。
正则化的作用是为了防止过拟合,主要方法有两种,一种是在损失函数中加入惩罚项,来防止模型收敛到最小点(在训练集上收敛到最小点,在测试集上效果不一定好,这就是过拟合)
另一种方法就是Dropout

因而,通过标签平滑正则化(Label Smoothing Regularization,LSR)可以在一定程度上模拟出知识蒸馏的效果。

知识蒸馏过程

下图为知识蒸馏模型的整体结构.其由一个多层的教师模型和学生模型组成,教师模型主要负
责向学生模型传递知识,这里的“知识”包括了标签知识、中间层知识、参数知识、结构化知识、图表示知识.在知识的迁移过程中,通过在线或离线等不同的学习方式将“知识”从教师网络转移到了学生网络。

由下图可知,知识蒸馏并不仅仅像我们前一篇文章中所描述的那种仅仅是通过输出层的结果进行约束来实现知识转移过程,其中间层也会进行蒸馏操作。

在这里插入图片描述

我的直观理解

关于知识蒸馏我们可以这样理解:教师网络是一个大模型,它包含很多层,具有很多参数,因此其能够对大量数据进行学习,总而得到答案(答案即输出层结果),而为何学生网络即使模型体积很小也能够拥有与教师网络相媲美的性能呢,这就是知识蒸馏的意义了:教师网络不但告诉学生网络答案(即将教师网络的输出结果来与学生网络输出结果求损失,随着损失不断变小,学生网络学得也就越好),而仅仅是学得答案是不够的,教师-学生网络的设定是让学生还能学习到教师网络的解题过程,以卷积网络为例,其每层卷积后都会生成特征图,这也是知识,那么教师网络在与学生网络进行特征对齐后进行对比计算损失,也就可以让学生网络学得解题过程。

知识蒸馏整体分类框架

在这里插入图片描述
知识蒸馏方法的核心在于“知识”的设计、提取和迁移方式的选择,通常不同类型的知识来源于网络模型不同组件或位置的输出.根据知识在教师-学生模型之间传递的形式可以将其归类为标签知识、中间层知识、参数知识、结构化知识和图表示知识。

  • 标签知识一般指在模型最后输出的logits概率分布中的软化目标信息;
  • 中间层知识一般是在网络中间层输出的特征图中表达的高层次信息;
  • 参数知识是训练好的教师模型中存储的参数信息;
  • 结构化知识通常是考虑多个样本之间或单个样本上下文的相互关系;
  • 图表示知识一般是将特征向量映射至图结构来表示其中的关系,以满足非结构化数据表示的学习需要。

不同知识传递形式下的蒸馏方法形式化表示对比表

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《计算机系统与网络安全》 第四章 密码学基础

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

8--Gradle进阶 - Gradle任务的入门、任务行为

8--Gradle进阶 - Gradle任务的入门、任务行为 Gradle Task Gradle 项目工程的管理 实质上是 Task 对象的集合。一个 Task 表示一个逻辑上较为独立的执行过程,比如编译Java 源代码,拷贝文件, 打包Jar 文件,甚至可以是执行一个系统命…

flutter Exception: Gradle task assembleDebug failed with exit code 1

Exception: Gradle task assembleDebug failed with exit code 1 解决方案: 出现这个问题,可能是依赖的插件无法下载 找到项目的android->build.gradle, 将 google() mavenCentral()改成 maven{url https://maven.aliyun.com/repository/google }m…

XML的运用(XML解析)

一、XML文件的三种配置位置机读取方式 Java中配置XML文件的三种配置位置机读取方式:常用的三种 1、同包下 在演式之前我们把前期演示的部分给准备好: 我们以properties为后缀的文本为例: unamemybatis_ssm upassxiaoli urljdbc:mysql://lo…

短视频矩阵-短视频seo源码开发搭建

开发场景:抖音seo,短视频seo,抖音矩阵,短视频矩阵源码开源 一、 短视频矩阵源码需要掌握以下技术: 1. 视频编码技术 短视频矩阵系统利用视频编码技术,将视频文件进行压缩和解压缩,实现了高质…

cut一些常用的用法

目录 介绍语法示例切割提取指定列数据切割提取指定字符数据切割提取指定字节数据切割提取指定单词数据切割提取bash进程的PID号 小结 介绍 cut 译为“剪切, 切割” , 是一个强大文本处理工具,它可以将文本按列进行划分的文本处理。cut命令逐行读入文本,…

掌握apply和call,解密JavaScript的this指向

文章目录 一、介绍apply和call方法1.1 简述apply和call方法的作用1.2 apply和call方法的共同点与不同点 二、深入理解apply方法2.1 apply方法的语法和参数介绍2.2 apply方法的使用示例2.3 apply方法的应用场景 三、深入理解call方法3.1 call方法的语法和参数介绍3.2 call方法的…

MySQL:库的操作和表的操作(内含MySQL数据类型讲解)

进入数据库的数据目录 cd var/lib/mysql 库的操作 创建数据库 创建数据库的本质是创建目录。 创建数据库时有两个编码集:1.数据库编码集(存储时使用)2.进行字段比对读取时使用的编码方式) 语法: CREATE DATABASE …

SpringBoot+Prometheus采集Metrics指标数据

简介 本文介绍在springboot3.x里配置启用系统指标监控功能,来监视系统各项Metrics指标,从而实时了解应用的运行健康状态,通过promtheus服务提供数据收集与指标可视化方案; Metrics指标 metrics指标表示应用程序代码运行中提供的…

【JavaWeb】前端之CSS基础认知

目录 前言 1、CSS基本语法规范 2、向HTML中引入CSS的方式 2.1、内部样式 2.2、外部样式 2.3、内联样式 3、CSS选择器 3.1、基础选择器 3.1.1、标签选择器 3.1.2、类选择器 3.1.3、id选择器 3.1.4、通配符选择器 3.2、复合选择器 3.2.1、后代选择器 4、CSS常用元素…

leetcode514. 自由之路(java)

自由之路 leetcode514. 自由之路题目描述解题思路代码演示 动态规划专题 leetcode514. 自由之路 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/freedom-trail 题目描述 电子游戏“辐射4”中,任务 “通向自由…

深入浅出设计模式 - 工厂模式

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) ​ 💕💕 感兴趣的同学可…

目标检测舰船数据集整合

一、光学数据集 1、 DIOR 数据集(已下载yolo版本)(论文中提到过) “DIOR”是一个用于光学遥感图像目标检测的大规模基准数据集。数据集包含23463个图像和192472个实例,涵盖20个对象类。这20个对象类是飞机、机场、棒球场、篮球场、桥梁、烟囱…

CSS 边框盒子

文章目录 边框盒子 边框盒子 提示:这里可以添加本文要记录的大概内容: 默认的盒子类型是内容盒子:content-box 在内容盒子中,width和height是内容尺寸 盒子整体的尺寸内容的尺寸两个边框两个内边距 css3引入了新的盒子类型&…

Linux——对动静态库的优缺点和底层剖析对比

目录 静态库底层剖析: 所以静态库的优缺点总结: 动态库底层剖析: 所以使用动态库的优缺点剖析: 静态库底层剖析: 如上图:file1.exe被加载到了内存,成为了进程,因为代码中都有pri…

【Docker】docker安装配置Jenkins

docker 安装 Jenkins #拉镜像 docker pull jenkins/jenkins#创建卷(volume) docker volume create jenkins_home#制作容器并启动 docker run -d \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins_home:/var/jenkins_home \ -v /usr/lib/jvm/java-8-openjdk-amd64:/usr/local/java…

IMX6ULL系统移植篇-镜像烧写方法

一. 烧录镜像简介 本文我们就来学习:windows 系统下烧录镜像的方法。 如何使用 NXP 官方提供的 MfgTool 工具通过 USB OTG 口来 烧写系统。 二. windows下烧录镜像 1. 烧录镜像前准备工作 (1)从开发板上拔下 SD卡。 (2…

SpringBoot中如何优雅的统一全局返回格式与处理系统异常?

在领域驱动设计(DDD)中,接口层主要负责处理与外部系统的交互,包括接收用户或外部系统的请求,调用应用层服务处理请求,以及将处理结果返回给请求方。 我发现一些代码中,接口的返回值类型众多&am…

chatgpt赋能python:Python语言单词大全:从入门到精通

Python语言单词大全:从入门到精通 Python是一种高级编程语言,适用于各种应用领域,如数据科学、机器学习、网站开发和自动化脚本编写等。Python语言有其内置的语法和功能,我们将在本文中逐一介绍和解释。 1. Python中最基本的单词…

K8S集群安全之安全机制

1. 安全机制说明: Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server是集群内部各个组件通信的中介,也是外部控制的入口。所以Kubernetes的安全机制基本就是围绕保护APIServer来设计的。Kubernetes使…