ViT:5 Knowledge Distillation
实时了解业内动态,论文是最好的桥梁,专栏精选论文重点解读热点论文,围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。当然最重要的是订阅“鲁班模锤”。
知识蒸馏是一种技术,在这种技术中,较小的模型从更大、更复杂的模型中学习以复制其性能,从而在保持预测准确性的同时实现高效部署。视觉转换器(ViT)的知识蒸馏 (KD)技术可分为两种主要类型:同态KD 和异态KD。
知识蒸馏
知识蒸馏是一种技术,旨在将一个庞大而复杂的模型(教师模型)压缩成一个更小、更简单的模型(学生模型),同时在一定程度上保留教师模型的表现。知识蒸馏并不是一种新方法,它是由Critstian Bucilua等人在 2006年的这篇论文中提出的。
LLM蒸馏将大型生成模型定位为“教师”,将较小的模型定位为“学生”。学生模型可以是简单的模型,如逻辑回归,也可以是基础模型,如BERT。在最基本的蒸馏版本中,数据科学家从未标记的数据开始,并要求LLM对其进行标记。然后,数据科学家使用合成标记的数据来训练“学生”模型,该模型将反映“教师”模型在原始数据集定义的任务中的表现。
logits是模型在应用softmax获得实际概率之前的原始输出。大模型的最终输出是一个向量,里面是所有候选Token的概率,加起来是100%。这个概率是最终的输出(logits)经过softmax归一化得到的。上图是有标签的蒸馏,也有无标签的蒸馏。
在基于反应的知识蒸馏中,教师模型的输出用作学生模型的软标签。学生模型经过训练,可以预测教师迷行的软标签,而不是实际的标签。这样学生就可以从老师的知识中学习,而无需访问老师的参数或架构。使用这种方法,知识蒸馏可以白盒 KD和黑盒 KD。
在黑盒KD中,只有教师模型的提示和响应可用,方法适用于logits无法获取的模型。而在白盒KD中,使用的是教师模型生成的logits,它适用于生成logits的开源模型。
知识蒸馏能够成功的原因在于损失函数。而损失函数包含3个核心组件:教师输出的logits、学生输出的logits和Temperature<在使用大模型的时候,温度代表则发散度和随机度>。
大白话而言:教师模型生成logits,学生模型也生成logits。任何两个类的 logit都无法比较,因此用softmax规范化logit之后,再来对比两个输出的概率分布。目的还是为了减少教师模型和学生模型的概率分布差异,让学生模型的行为更像教师模型。
这里不得不提到Kullback-Leibler散度损失(或 KL 散度损失)是计算任意两个概率分布之间差异的一种方法。以下公式描述了 KD 损失:
同态KD
Homomorphic KDs
同态KD可进一步分为logit级KD、Patch(小图块)级KD、模块级KD和功能级的KD。
TinyViT基于logit级别,在预训练期间应用蒸馏技术,其中来自大型教师模型的logits预先存储在硬件中,从而在将知识传输到缩小的学生转换器时实现内存和计算效率。
像DeiT-Tiny这样的Patch级技术训练一个小型学生模型,以匹配Patch级结构上的预训练教师模型,然后在计算流形蒸馏损失时,主要是通过比较和匹配选定的教师模型和学生模型层之间的特征关系来实现的。
假设教师模型通过卷积神经网络(CNN)提取了图像的特征,在高维空间中形成了一定的结构。学生模型是基于Transformer的模型,可能无法直接理解卷积提取的特征结构。通过引入流形蒸馏损失,学生模型可以学习如何在其Transformer的特征空间中重现或近似教师模型在卷积层中的特征结构,从而更有效地学习和迁移知识。
m2mKD方法的核心思想是通过元模型M孵化出一系列教师模型,然后通过替换和比较不同层的教师-学生模型对来进行知识蒸馏。这种方法可以帮助学生模型从多个教师模型中学习,进而提升其性能和泛化能力。
MiniViT演示的特征级KD方法结合了连续变压器模块的权重。
MiniViT的知识蒸馏通过将教师模型(Teacher Model)的知识传递给学生模型(Student Model)来实现模型压缩,从而在保持高性能的同时,降低计算和存储成本。该框架将模型分为多个阶段(Stage 1到Stage 4),每个阶段包含若干个Transformer层。通过设计有效的损失函数(预测损失、注意力损失和隐藏层损失),学生模型能够学习到教师模型的知识。
具体的知识蒸馏过程包括初始化、训练、损失计算、反向传播和迭代步骤。在这个过程中,学生模型逐步调整参数,使其输出接近教师模型。此外,MiniViT的详细Transformer块结构通过多头注意力、多层感知机、添加与归一化层等组件的权重共享和增加参数多样性,进一步优化了模型压缩效果。总之,MiniViT通过配置阶段数量和共享权重,实现了高效的模型压缩,并通过知识蒸馏技术,确保压缩后的模型在性能上接近原始大型模型。
异形KD
Heteromorphic KDs
这种方法主要涉及在具有不同架构的模型之间转移知识。例如,DearKD 提出了一种新颖的两阶段框架,它脱离了传统的ViT架构方法。
在第一阶段,他们使用普通的KD策略将CNN特征转移到ViT学生模型。在随后的阶段,如果真实样本有限,则它们会引入保持边界的发散内损失以增强该过程。
类似地,CiT 提出了一种异形KD策略,其中知识从多位老师模型转移,从而提高了ViT学生模型的性能。
CivT模型不仅继承了ViT的Transformer架构,还通过引入Conv token和Inv token来扩展其能力,使其能够从卷积模型和逆(内)卷积模型中学习特定的图像类别描述信息,从而提升其在图像分类和理解任务中的性能和表现。
相关文章:

ViT:5 Knowledge Distillation
实时了解业内动态,论文是最好的桥梁,专栏精选论文重点解读热点论文,围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)…...

2024头歌数据库期末综合(部分题)
目录 第7关:数据查询三 任务描述 知识补充 答案 第8关:数据查询四 任务描述 知识补充 答案 本篇博客声明:所有题的答案不在一起,可以去作者博客专栏寻找其它文章。 第7关:数据查询三 任务描述 本关任务&#x…...

【Flask】学习
参考B站视频:https://www.bilibili.com/video/BV1v7411M7us/ 目录 第一讲 什么是 flask 修饰器、路由规则 flask 变量规则,灵活传参数据类型:str、int、float(正浮点数,传int会报错)、path、uuid app.…...

图像数字化基础
一、像素 1、获取图像指定位置的像素 import cv2 image cv2.imread("E:\\images\\2.png") px image[291,218] print("坐标(291,218)上的像素的BGR值是:",px) (1)RGB色彩空间 R通道:红色通道 G通道&…...

让你的Python代码更简洁:一篇文章带你了解Python列表推导式
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 列表推导式 📒📝 语法📝 条件筛选📝 多重循环📝 列表推导式的优点📝 使用场景📝 示例代码🎯 示例1🎯 示例2⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程中,列表推导式是一种强大且高效的语法,它允许你用…...

基于Matlab的BP神经网络的车牌识别系统(含GUI界面)【W7】
简介: 本系统结合了图像处理技术和机器学习方法(BP神经网络),能够有效地实现车牌的自动识别。通过预处理、精确定位、字符分割和神经网络识别,系统能够准确地识别各种车牌图像,并在智能交通管理、安防监控等…...

jetpack compose的@Preview和自定义主题
1.Preview Preview可以在 Android Studio 的预览窗口中实时查看和调试 UI 组件。 基本使用 import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.ma…...

Temu(拼多多跨境电商) API接口:获取商品详情
核心功能介绍——获取商品详情 在竞争激烈的电商市场中,快速、准确地获取商品数据详情对于电商业务的成功至关重要。此Temu接口的核心功能在于其能够实时、全面地获取平台上的商品数据详情。商家通过接入Temu接口,可以轻松获取商品的标题、价格、库存、…...

ArcGIS Pro SDK (五)内容 2 工程项
ArcGIS Pro SDK (五)内容 2 地图工程 目录 ArcGIS Pro SDK (五)内容 2 地图工程1 将文件夹连接项添加到当前工程2.2 获取所有工程项2.3 获取工程的所有“MapProjectItems”2.4 获取特定的“MapProjectItem”2.5 获取所有“样式工程…...

【ai】初识pytorch
初识PyTorch 大神的例子运行: 【ai】openai-quickstart 配置pycharm工程 简单例子初识一下Pytorch 好像直接点击下载比较慢? 大神的代码 在这个例子中,首先定义一个线性模型,该模型有一个输入特征和一个输出特征。然后定义一个损失函数和一个优化器,接着生成一些简单的线性…...

pcl::PointXYZRGBA造成点云无法显示
如果pcd文件没有rgba信息,使用pcl::PointXYZRGBA类型打开会提示以下信息: Failed to find match for field rgba另外,显示出来的点云是黑色,如果使用默认背景色为黑色,就无法显示点云了。 如果设置其它背景色…...

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)
文章目录 一、文章概览(一)问题的提出(二)文章工作 二、理论背景(一)密度比估计DRE(二)去噪扩散模型 三、方法(一)推导分类和去噪之间的关系(二&a…...

kubesphere踩过的坑,持续更新....
踩过的坑 The connection to the server lb.kubesphere.local:6443 was refused - did you specify the right host… 另一篇文档中 dashboard 安装 需要在浏览器中输入thisisunsafe,即可进入登录页面 ingress 安装的问题 问题描述: 安装后通过命令 kubectl g…...

做Android开发怎么才能不被淘汰?
多学一项技能,可能就会成为你升职加薪的利器。经常混迹于各复杂业务线的人,才能跳出重复工作、不断踩坑的怪圈。而一个成熟的码农在于技术过关后,更突出其他技能对专业技术的附加值。 毋须讳言的是,35岁以后你的一线coding能力一…...

异步爬虫:aiohttp 异步请求库使用:
使用requests 请求库虽然可以完成爬虫业务,但是对于异步任务来说,它是做不到的, 这时候我们需要借助 aiohttp 异步请求库来完成异步爬虫的编写: 话不多说,直接看示例: 注意:楼主使用的python版…...

代码随想录算法训练营第四十七天|LeetCode123 买卖股票的最佳时机Ⅲ
题1: 指路:123. 买卖股票的最佳时机 III - 力扣(LeetCode) 思路与代码: 买卖股票专题中三者不同的是Ⅰ为只买卖一次,Ⅱ可多次买卖,Ⅲ最多可买卖两次。那么我们将买买卖行为分为五个状态部分(…...

将知乎专栏文章转换为 Markdown 文件保存到本地
一、参考内容 参考知乎文章代码 | 将知乎专栏文章转换为 Markdown 文件保存到本地,利用代码为GitHub:https://github.com/chenluda/zhihu-download。 二、步骤 1.首先安装包flask、flask-cors、markdownify 2. 运行app.py 3.在浏览器中打开链接&…...

【notes2】并发,IO,内存
文章目录 1.线程/协程/异步:并发对应硬件资源是cpu,线程是操作系统如何利用cpu资源的一种抽象2.并发:cpu,线程2.1 可见性:volatile2.2 原子性(读写原子):AtomicInteger/synchronized…...

Python题目
实例 3.1 兔子繁殖问题(斐波那契数列) 兔子从出生后的第三个月开始,每月都会生一对兔子,小兔子成长到第三个月后也会生一对独自。初始有一对兔子,假如兔子都不死,那么计算并输出1-n个月兔子的数量 n int…...

Hive怎么调整优化Tez引擎的查询?在Tez上优化Hive查询的指南
文章目录 在Tez上优化Hive查询的指南调优指南理解Tez中的并行化理解mapper数量理解reducer数量 并发案例1:未指定队列名称案例2:指定队列名称并发的指南/建议 容器复用和预热容器容器复用预热容器 一般Tez调优参数 在Tez上优化Hive查询的指南 在Tez上优…...

关于小程序内嵌H5页面交互的问题?
有木有遇到?有木有遇到。 小程序内嵌了H5,然后H5某个按钮,需要打开小程序某个页面进行信息完善或登记,登记后要返回H5页面,而H5页面要动态显示刚才在小程序页面登记的信息。 操作流程是这样: 方案1&#…...

Linux下手动查杀木马与Rootkit的实战指南
模拟木马程序的自动运行 黑客可以通过多种方式让木马程序自动运行,包括: 计划任务 (crontab):通过设置定时任务来周期性地执行木马脚本。开机启动:在系统的启动脚本中添加木马程序,确保系统启动时木马也随之运行。替…...

电商爬虫API的定制开发:满足个性化需求的解决方案
一、引言 随着电子商务的蓬勃发展,电商数据成为了企业决策的重要依据。然而,电商数据的获取并非易事,特别是对于拥有个性化需求的企业来说,更是面临诸多挑战。为了满足这些个性化需求,电商爬虫API的定制开发成为了解决…...

nuc马原复习资料
哲学:世界观的理论形态,或者说是系统化、理论化的世界观;世界观和方法论的统一。马克思主义哲学:辩证唯物主义和历史唯物主义,关于自然。社会和思维发展的普遍规律的学说,无产阶级世界观的理论体系。世界观…...

Node.js是什么(基础篇)
前言 Node.js是一个基于Chrome V8 JavaScript引擎的开源、跨平台JavaScript运行时环境,主要用于开发服务器端应用程序。它的特点是非阻塞I/O模型,使其在处理高并发请求时表现出色。 一、Node JS到底是什么 1、Node JS是什么 Node.js不是一种独立的编程…...

淘客返利平台的微服务架构实现
淘客返利平台的微服务架构实现 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨淘客返利平台的微服务架构设计与实现,旨在提高系统的灵…...

【database1】mysql:DDL/DML/DQL,外键约束/多表/子查询,事务/连接池
文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化)1.1 服务端:双击mysql-installer-community-5.6.22.0.msi1.2 客户端:命令行输入my…...

模拟木马程序自动运行:Linux下的隐蔽攻击技术
模拟木马程序自动运行:Linux下的隐蔽攻击技术 在网络安全领域,木马程序是一种常见的恶意软件,它能够悄无声息地在受害者的系统中建立后门,为攻击者提供远程访问权限。本文将探讨攻击者如何在Linux系统中模拟木马程序的自动运行&a…...

vuex的配置主要内容
1、state 作用:负责存储数据; 2、getters 作用:state计算属性(有缓存); 3、mutaions 作用:负责同步更新state数据 mutaions是唯一可以修改state数据的方式; 4、actions 作用:负责异步操作&a…...

VBA技术资料MF164:列出文件夹中的所有文件和创建日期
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…...