【自然语言处理与大模型】模型压缩技术之蒸馏

        知识蒸馏是一种模型压缩技术,主要用于将大型模型(教师模型)的知识转移到更小的模型(学生模型)中。在大语言模型领域,这一技术特别重要。

        知识蒸馏的核心思想是利用教师模型的输出作为软标签(soft labels),来指导学生模型的训练。与传统的硬标签(hard labels)不同,软标签包含了更多的信息,不仅告诉学生模型每个样本属于哪个类别,还提供了关于不同类别之间相似性的额外信息。通过学习这些软标签,学生模型可以更好地捕捉到数据中的潜在规律和特征,从而提高其性能。

一、知识蒸馏的基本框架

        三个核心组成部分:知识蒸馏算法以及师生架构

  1. 知识:代表从教师模型中提炼出的有效信息,这可能包括输出层的概率分布(通常称为软标签)、中间层的特征表示等;
  2. 蒸馏算法:关注的是如何高效地将这些宝贵的知识从教师模型转移到学生模型的具体方法与策略;
  3. 师生架构:则定义了教师模型和学生模型之间的互动方式。这样的结构确保了学生模型不仅能学习到教师模型的精髓,还能在保持较低复杂度的同时实现性能的提升。

知识蒸馏能够在保持高性能的同时,降低模型的复杂性和计算需求。

二、知识的来源

        知识蒸馏中的知识来源方式有很多种,常见的几种有从软标签中获取,还有从特征表示里面获取还可以从注意力机制中获取。

(1)软标签

        借用子豪哥的图来说明什么是软标签,一个图形分类模型在训练的时候,想让他学会分辨什么是马。软标签是一组概率分布,反映了教师模型对输入属于各个类别的置信度。这些概率值不仅显示了最可能的类别,还揭示了其他类别的可能性。

图像分类

        硬标签是分类任务中的一组离散值,表示每个类别的绝对归属情况。通常是一个one-hot向量,其中正确类别的位置标记为1,其余类别标记为0。硬标签只传达了模型预测的最终结果,没有提供关于其他类别的任何信息。

类别硬标签 (Hard Targets)软标签 (Soft Targets)
10.7
00.25
汽车00.05

        软标签不仅能指出最有可能的类别(如“马”),还能指示出其他类别(如“驴”和“汽车”)的可能性,帮助学生模型学习到更多的背景知识。由于软标签包含了更多关于数据分布的信息,它们可以帮助学生模型更好地泛化到未见过的数据上。

让学生模型直接模仿教师模型的最终预测

(2)特征表示

        特征表示是指教师模型中某一层的激活值或特征向量,这些特征向量捕捉了输入数据的高级语义信息。特征表示通常包含了丰富的语义信息,可以帮助学生模型学习到更抽象、更高级的特征。可以选择教师模型中不同层次的特征表示进行蒸馏,从而提供多层次的知识转移。

        由于教师和学生的网络结构可能不同,采用特征表示来得到知识要注意维度对齐,它包括通道数对齐和空间分辨率对齐。

三、蒸馏温度T

        蒸馏温度(Temperature, T)是一个重要的超参数,用于调节教师模型输出的软标签的平滑程度。通过调整温度参数,可以控制软标签中不同类别概率的分布,从而影响学生模型的学习重点和蒸馏效果。

        在知识蒸馏中,温度参数 T 通常用于调整教师模型输出的Logits(即未经Softmax处理的输出值)。具体来说,使用温度参数调整后的Softmax函数可以表示为:

q_i=\frac{exp(z_i/T)}{\sum_{j}^{}exp(z_j/T) }

其中:

  • q_i表示调整后第i个类别的概率。
  • z_i表示第i个类别的原始Logits值。
  • T表示温度参数。

        当 T=1 时,上述公式即为标准的Softmax函数。当 T>1 时,概率分布会变得更加平滑;当 T<1 时,概率分布会变得更加尖锐。过高的温度值可能导致模型过于关注于那些概率值较小的类别,从而降低模型的判别能力;而过低的温度值可能导致模型过于关注于那些概率值较大的类别,从而降低模型的泛化能力

四、知识蒸馏的方式

        就只介绍一下最常常见的知识蒸馏方式——离线知识蒸馏。其基本流程是先训练好一个大型、复杂的教师模型,然后利用该教师模型的输出来指导小型、简单的学生模型的训练。在学生模型的训练过程中,教师模型的参数是冻结的,即教师模型的参数不再更新。

离线知识蒸馏示意图

结合上面这个图来介绍一下,离线知识蒸馏的主要步骤:

第一步:训练教师模型

        首先,使用大量的训练数据和适当的损失函数(如交叉熵损失)训练一个高性能的教师模型。教师模型通常是一个大型、复杂的模型,具有较多的参数和较高的计算复杂度。

第二步:生成软标签

        在教师模型训练完成后,使用该模型对训练数据进行预测,得到每个样本的软标签。软标签是教师模型输出的概率分布,通过调整蒸馏温度可以控制其平滑程度。

第三步:训练学生模型

        使用教师模型生成的软标签作为目标,训练一个小型、简单的学生模型。在训练过程中,教师模型的参数保持不变(冻结状态),仅更新学生模型的参数。学生模型的训练目标包括硬标签(真实类别标签)和软标签(教师模型的输出),通常使用KL散度(Kullback-Leibler Divergence)来衡量学生模型输出与教师模型软标签之间的差异。

KL散度,也称为相对熵(Relative Entropy),是信息论中用于衡量两个概率分布之间差异的一种度量方式。它量化了从一个概率分布 P 转换到另一个概率分布 Q 时所损失的信息量。

  • 在知识蒸馏中,KL散度用于衡量学生模型的输出概率分布与教师模型的软标签之间的差异。通过最小化KL散度,学生模型可以更好地学习教师模型的知识。
  • 具体来说,学生模型的训练目标包括最小化KL散度和硬标签损失(如交叉熵损失)。

第四步:评估和优化

        使用独立的验证集对学生模型进行评估,比较其性能与教师模型的差异。如果性能不理想,可以尝试调整温度参数、改变学生模型的结构或进行微调等操作,以优化蒸馏效果。

参考知识蒸馏开山之作:Distilling the Knowledge in Neural Network

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

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

相关文章

PHP CURL发送POST请求(支持HEADER参数配置)

/** POST请求(raw数据请求,支持HEADER参数配置) * @param $url * @param $datas 支持数组或字符串 * # $CURLOPT_HTTPHEADER = [ X-AjaxPro-Method:ShowList, Content-Type: application/json; charset=utf-8, Content-Length: . strlen($data_string)]; …

利用JMeter代理服务器方式实现高效压测

前言 在当今快节奏的互联网时代&#xff0c;确保Web应用和服务能够在高负载下稳定运行变得至关重要。无论是电子商务平台、社交媒体网络还是在线教育服务&#xff0c;用户对网站响应速度和稳定性的期望从未如此之高。因此&#xff0c;性能测试不再是一个可选项&#xff0c;而是…

【JavaWeb后端开发04】java操作数据库(JDBC + Mybatis+ yml格式)详解

文章目录 1. 前言2. JDBC2.1 介绍2.2 入门程序2.2.1 DataGrip2.2.2 在IDEA执行sql语句 2.3 查询数据案例2.3.1 需求2.3.2 准备工作2.3.3 AI代码实现2.3.4 代码剖析2.3.4.1 ResultSet2.3.4.2 预编译SQL2.3.4.2.1 SQL注入2.3.4.2.2 SQL注入解决2.3.4.2.3 性能更高 2.4 增删改数据…

力扣-240.搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, in…

Spark-Streaming(三)

一. kafka和flume的整合 任务需求一:利用flume监控某目录中新生成的文件&#xff0c;将监控到的变更数据发送给kafka&#xff0c;kafka将收到的数据打印到控制台 1. 在flume/conf/目录下添加flume-kafka.conf文件 配置文件如下 2. 启动flume和kafka消费者 3. 传入数据 查看fl…

Spring Boot 启动生命周期详解

Spring Boot 启动生命周期详解 1. 启动阶段划分 Spring Boot 启动过程分为 4个核心阶段&#xff0c;每个阶段涉及不同的核心类和执行逻辑&#xff1a; 阶段 1&#xff1a;预初始化&#xff08;Pre-initialization&#xff09; 目标&#xff1a;准备启动器和环境配置关键类&am…

《深入理解 AOP》

一、AOP 是什么 AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff0c;即面向切面编程&#xff0c;是软件开发中一种重要的编程范式。它通过横向抽取机制&#xff0c;将那些与业务逻辑本身无关、却为业务模块所共同调用的逻辑或责任&#xff08;如事务处理、日…

Python【协程(Coroutine)和线程的关系】

协程(Coroutine)和线程都是实现并发编程的技术&#xff0c;但它们在实现方式、使用场景和性能上有显著区别。理解它们的关系与差异有助于在实际应用中选择合适的并发模型&#xff0c;以下是它们的核心关系与对比分析&#xff1a; 一、核心关系 互补关系 协程和线程可以结合使用…

Springboot——Redis的使用

在当今的软件开发领域&#xff0c;缓存技术是提升应用性能的关键手段之一。Redis 作为一款高性能的键值对存储数据库&#xff0c;凭借其出色的读写速度和丰富的数据结构&#xff0c;在缓存场景中得到了广泛应用。Spring Boot 作为一款简化 Spring 应用开发的框架&#xff0c;与…

BEVPoolv2:A Cutting-edge Implementation of BEVDet Toward Deployment

背景 该论文是在BEVDet的基础上进行了一个调整优化&#xff0c;传统的方法是将特征图与深度预测进行外积得到视椎特征图&#xff0c;再将它与预处理好的体素索引结合&#xff0c;将每个视椎特征分类到每个voxel中进行累加和的操作。BEVFusion与BEVDepth等方法是避免了累加和&a…

蓝桥杯常考的找规律题

目录 灵感来源&#xff1a; B站视频链接&#xff1a; 找规律题具有什么样的特点&#xff1a; 报数游戏&#xff08;Java组&#xff09;&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路详解&#xff1a; 代码详解&#xff1a; 阶乘求和&#xff08;Java组…

使用ffmpeg 将图片合成为视频,填充模糊背景,并添加两段音乐

1.输入3张图片,每张播放一次,播放两秒,视频分辨率设置为1920:1080,每张图片前0.3秒淡入,后0.3秒淡出,图片宽高比不变,用白色填充空白区域 ffmpeg -loop 1 -t 2 -i "img1.jpg" \-loop 1 -t 2 -i "img2.jpg" \-loop 1 -t 2 -i "img3.jpg" \-filte…

PostgreSQL技术内幕29:事件触发器tag原理解析

文章目录 0.简介1.概念说明2.tag的生成和存储2.1 tag合法性校验2.2 内存中存储2.3 持久化存储 3.tag的触发 0.简介 在上一篇文章中中&#xff0c;我们介绍了PG中的两种触发器&#xff0c;即适合于DML的普通触发器和对于DDL的事件触发器&#xff0c;其中事件触发器与常规的 DML…

mysql 导入很慢,如何解决

精选 原创 码出财富2025-04-14 17:35:14博主文章分类&#xff1a;数据库©著作权 文章标签mysql数据库用户名文章分类MySQL数据库yyds干货盘点阅读数184 导入大型 SQL 文件到 MySQL 数据库时&#xff0c;速度可能会受到影响。以下是一些优化方法和建议&#xff0c;帮助你…

多物理场耦合低温等离子体装置求解器PASSKEy2

文章目录 PASSKEy2简介PASSKEY2计算流程PASSKEy2 中求解的物理方程电路模型等离子体模型燃烧模型 PASSKEy2的使用 PASSKEy2简介 PASSKEy2 是在 PASSKEy1 的基础上重新编写的等离子体数值模拟程序。 相较于 PASSKEy1&#xff0c; PASSKEy2 在具备解决低温等离子体模拟问题的能力…

保姆级zabbix监控jmx、数据库和网络监控(SNMP)

前言 在当今数字化时代&#xff0c;企业IT基础设施的稳定性与性能直接关系到业务连续性和用户体验。随着系统复杂性的不断增加&#xff0c;单一维度的监控已难以满足全面运维需求。Zabbix作为一款功能强大的开源监控解决方案&#xff0c;通过整合JMX&#xff08;Java Manageme…

复杂地形越野机器人导航新突破!VERTIFORMER:数据高效多任务Transformer助力越野机器人移动导航

作者&#xff1a; Mohammad Nazeri 1 ^{1} 1, Anuj Pokhrel 1 ^{1} 1, Alexandyr Card 1 ^{1} 1, Aniket Datar 1 ^{1} 1, Garrett Warnell 2 , 3 ^{2,3} 2,3, Xuesu Xiao 1 ^{1} 1单位&#xff1a; 1 ^{1} 1乔治梅森大学计算机科学系&#xff0c; 2 ^{2} 2美国陆军研究实验室&…

SharpMap与TerraLib:C#与C++开源GIS库

大家好&#xff0c;今天为大家介绍的软件是SharpMap&#xff1a;一款专为了C#&#xff08;.NET&#xff09;环境设计的开源地图和空间数据处理库&#xff1b;TerraLib&#xff1a;一款由C编写、支持多种数据库的开源的GIS软件库。 下面&#xff0c;我们将从两个开源软件的主要…

音视频学习 - MP3格式

环境 JDK 13 IDEA Build #IC-243.26053.27, built on March 16, 2025 Demo MP3Parser MP3 MP3全称为MPEG Audio Layer 3&#xff0c;它是一种高效的计算机音频编码方案&#xff0c;它以较大的压缩比将音频文件转换成较小的扩展名为.mp3的文件&#xff0c;基本保持源文件的音…

Unity中数据和资源加密(异或加密,AES加密,MD5加密)

在项目开发中&#xff0c;始终会涉及到的一个问题&#xff0c;就是信息安全&#xff0c;在调用接口&#xff0c;或者加载的资源&#xff0c;都会涉及安全问题&#xff0c;因此就出现了各种各样的加密方式。 常见的也是目前用的最广的加密方式&#xff0c;分别是&#xff1a;DE…