人工智能学习与实训笔记(七):神经网络之模型压缩与知识蒸馏

 人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客

本篇目录

七、模型压缩与知识蒸馏

7.1 模型压缩

7.2 知识蒸馏

7.2.1 知识蒸馏的原理

7.2.2 知识蒸馏的种类

7.2.3 知识蒸馏的作用



七、模型压缩与知识蒸馏

出于对响应速度,存储大小和能耗的考虑,往往需要对大模型进行压缩。

7.1 模型压缩

模型压缩方法主要可以分为以下四类:

  • 参数修剪和量化(Parameter pruning and quantization):用于消除对模型表现影响不大的冗余参数。早期工作表明,网络修剪和量化在降低网络复杂性和解决过拟合问题上是有效的。它可以为神经网络带来正则化效果从而提高泛化能力。参数修剪和量化可以进一步分为三类:量化和二值化,网络剪枝和结构化矩阵。量化可以看作是“量子级别的减肥”,神经网络模型的参数一般都用float32的数据表示,但如果我们将float32的数据计算精度变成int8的计算精度,则可以牺牲一点模型精度来换取更快的计算速度。而剪枝则类似“化学结构式的减肥”,将模型结构中对预测结果不重要的网络结构剪裁掉,使网络结构变得更加 ”瘦身“。比如,在每层网络,有些神经元节点的权重非常小,对模型加载信息的影响微乎其微。如果将这些权重较小的神经元删除,则既能保证模型精度不受大影响,又能减小模型大小。结构化矩阵则是用少于 m×n 个参数来描述一个 m×n 阶矩阵,以此来减少内存消耗。
  • 低秩分解(Low-rank factorization):卷积神经网络中的主要计算量在于卷积计算,而卷积计算本质上是矩阵分析问题,因此可以通过对多维矩阵进行分解的方式,用多个低秩矩阵来逼近该矩阵,比如将一个3D卷积转换为3个1D卷积,从而降低参数复杂度和运算复杂度。
  • 迁移/压缩卷积滤波器(Transferred/compact convolutional filters):通过构造特殊结构的卷积滤波器来降低存储空间、减小计算复杂度。
  • 知识蒸馏(Knowledge distillation):类似“老师教学生”,使用一个效果好的大模型指导一个小模型训练,因为大模型可以提供更多的软分类信息量,所以会训练出一个效果接近大模型的小模型。

7.2 知识蒸馏

知识蒸馏(knowledge distillation)是模型压缩的一种常用的方法,不同于模型压缩中的剪枝和量化,知识蒸馏是通过构建一个轻量化的小模型,利用性能更好的大模型的监督信息,来训练这个小模型,以期达到更好的性能和精度。最早是由 Hinton 在 2015 年首次提出并应用在分类任务上面,这个大模型我们称之为 teacher(教师模型),小模型我们称之为 Student(学生模型)。来自 Teacher 模型输出的监督信息称之为 knowledge(知识),而 student 学习迁移来自 teacher 的监督信息的过程称之为 Distillation(蒸馏)。

7.2.1 知识蒸馏的原理

一般使用蒸馏的时候,往往会找一个参数量更小的 student 网络,那么相比于 teacher 来说,这个轻量级的网络不能很好的学习到数据集之前隐藏的潜在关系,如上图所示,相比于 one hot 的输出,teacher 网络是将输出的 logits 进行了 softmax,更加平滑的处理了标签,即将数字 1 输出成了 0.6(对 1 的预测)和 0.4(对 0 的预测)然后输入到 student 网络中,相比于 1 来说,这种 softmax 含有更多的信息。好模型的目标不是拟合训练数据,而是学习如何泛化到新的数据。所以蒸馏的目标是让 student 学习到 teacher 的泛化能力,理论上得到的结果会比单纯拟合训练数据的 student 要好。另外,对于分类任务,如果 soft targets 的熵比 hard targets 高,那显然 student 会学习到更多的信息。最终 student 模型学习的是 teacher 模型的泛化能力,而不是“过拟合训练数据”

  • 1. 如上图所示,左边的教师网络是一个复杂的大模型,以它带有温度参数T的softmax输出作为软目标作为学生网络学习的软目标。
  • 2. 学生网络在学习时,也通过带有温度参数T的softmax进行概率分布预测,与软目标计算soft loss。
  • 3. 同时,也通过正常的训练流程获得预测的样本类别与真实的样本类别计算hard loss。
  • 4 最终根据 γ∗softloss+(1−γ)∗hardloss作为损失函数来训练学生网络。

这个公式就是知识蒸馏的核心理论。其实就是要让学生模型学习到老师模型的泛化能力。

7.2.2 知识蒸馏的种类

1、 离线蒸馏

离线蒸馏方式即为传统的知识蒸馏,如上图(a)。用户需要在已知数据集上面提前训练好一个 teacher 模型,然后在对 student 模型进行训练的时候,利用所获取的 teacher 模型进行监督训练来达到蒸馏的目的,而且这个 teacher 的训练精度要比 student 模型精度要高,差值越大,蒸馏效果也就越明显。一般来讲,teacher 的模型参数在蒸馏训练的过程中保持不变,达到训练 student 模型的目的。蒸馏的损失函数 distillation loss 计算 teacher 和 student 之前输出预测值的差别,和 student 的 loss 加在一起作为整个训练 loss,来进行梯度更新,最终得到一个更高性能和精度的 student 模型。

2、 半监督蒸馏

半监督方式的蒸馏利用了 teacher 模型的预测信息作为标签,来对 student 网络进行监督学习,如上图(b)。那么不同于传统离线蒸馏的方式,在对 student 模型训练之前,先输入部分的未标记的数据,利用 teacher 网络输出标签作为监督信息再输入到 student 网络中,来完成蒸馏过程,这样就可以使用更少标注量的数据集,达到提升模型精度的目的。

3、 自监督蒸馏

自监督蒸馏相比于传统的离线蒸馏的方式是不需要提前训练一个 teacher 网络模型,而是 student 网络本身的训练完成一个蒸馏过程,如上图(c)。具体实现方式 有多种,例如先开始训练 student 模型,在整个训练过程的最后几个 epoch 的时候,利用前面训练的 student 作为监督模型,在剩下的 epoch 中,对模型进行蒸馏。这样做的好处是不需要提前训练好 teacher 模型,就可以变训练边蒸馏,节省整个蒸馏过程的训练时间。

7.2.3 知识蒸馏的作用

1、提升模型精度

用户如果对目前的网络模型 A 的精度不是很满意,那么可以先训练一个更高精度的 teacher 模型 B(通常参数量更多,时延更大),然后用这个训练好的 teacher 模型 B 对 student 模型 A 进行知识蒸馏,得到一个更高精度的模型。

2、降低模型时延,压缩网络参数

用户如果对目前的网络模型 A 的时延不满意,可以先找到一个时延更低,参数量更小的模型 B,通常来讲,这种模型精度也会比较低,然后通过训练一个更高精度的 teacher 模型 C 来对这个参数量小的模型 B 进行知识蒸馏,使得该模型 B 的精度接近最原始的模型 A,从而达到降低时延的目的。

3、图片标签之间的域迁移

用户使用狗和猫的数据集训练了一个 teacher 模型 A,使用香蕉和苹果训练了一个 teacher 模型 B,那么就可以用这两个模型同时蒸馏出一个可以识别狗,猫,香蕉以及苹果的模型,将两个不同与的数据集进行集成和迁移。

4、降低标注量

该功能可以通过半监督的蒸馏方式来实现,用户利用训练好的 teacher 网络模型来对未标注的数据集进行蒸馏,达到降低标注量的

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

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

相关文章

(07)Hive——窗口函数详解

一、 窗口函数知识点 1.1 窗户函数的定义 窗口函数可以拆分为【窗口函数】。窗口函数官网指路: LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual%20Windowing…

【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Redis实战与进阶》 本专栏纯属为爱发电永久免费!&a…

致敬新春“不回家”的厨师,李锦记让厨师的年味更有滋味

“新春饭市万家团圆,致敬千万坚守岗位的厨师” 新春团圆饭向来是餐饮行业最为关注的节点,但过去几年,在疫情与后疫情时期,新年团圆饭市不免冷清。而今年餐饮行业真正迎来“龙抬头”,龙年除夕夜的团圆饭市终于重迎来了…

腾讯云4核8G服务器能支持多少人访问?

腾讯云4核8G服务器支持多少人在线访问?支持25人同时访问。实际上程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素,假设公网带宽太小,流量直接卡在入口,4核8G配置的CPU内存也会造成计算…

挑战杯 Yolov安全帽佩戴检测 危险区域进入检测 - 深度学习 opencv

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 Yolov安全帽佩戴检测 危险区域进入检测 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&am…

Quantitative Analysis: PIM Chip Demands for LLAMA-7B inference

1 Architecture 如果将LLAMA-7B模型参数量化为4bit,则存储模型参数需要3.3GB。那么,至少PIM chip 的存储至少要4GB。 AiM单个bank为32MB,单个die 512MB,至少需要8个die的芯片。8个die集成在一个芯片上。 提供816bank级别的访存带…

C++入门学习(二十九)goto语句

在C中,goto语句是一种控制流语句,用于无条件地转移到程序中指定的行。goto语句的使用通常是不推荐的,因为它可能导致代码结构变得混乱、不易理解和维护。然而,在某些特殊情况下,goto语句可能是一种有效的解决方法。 示…

php switch、for、foreach、while、do...while

php switch 1. switch2. for循环3. foreach4. while、do...while 1. switch <?php$height 190;switch ($height) {case 160:echo 太矮了;break; //跳出本次循环case 170:echo 还行吧;break; //跳出本次循环case 180:echo 帅哥;break; //跳出本次循环default:echo 迷; }2.…

机器学习面试:请你谈谈生成模型和判别模型的区别?

生成模型:由数据学习联合概率密度分布P(XY)&#xff0c;然后求出条件概率分布P(YIX)作为预测的模型&#xff0c;即生成模型:P(Y|X) P(X,Y)/ P(X)(贝叶斯概率)。基本思想是首先建立样本的联合概率概率密度模型P(X,Y)然后再得到后验概率P(Y|X)&#xff0c;再利用它进行分类。典型…

智胜未来,新时代IT技术人风口攻略-第四版(弃稿)

文章目录 前言鸿蒙生态科普调研人员画像高校助力鸿蒙高校鸿蒙课程开设占比教研力量并非唯一原因 企业布局规划全盘接纳仍需一段时间企业对鸿蒙的一些诉求 机构入场红利机构鸿蒙课程开设占比机构对鸿蒙的一些诉求 鸿蒙实际体验高校用户群体高度认同与影响体验企业用户群体未来可…

[高并发] - 1.高并发综述

1. 必备条件 高并发&#xff0c;高性能分布式ID 高并发过滤组件 Bloom FIlter 2. 数据库 &#xff08;1&#xff09;不要让mysql干不擅长的工作&#xff0c;例如全文搜索&#xff0c;而是采用对应的nosql来处理&#xff1b;对于擅长的存取数据则能很好胜任&#xff1b; &am…

Linux进程间通信(三)-----System V消息队列

消息队列的概念及原理 消息队列实际上就是在系统当中创建了一个队列&#xff0c;队列当中的每个成员都是一个数据块&#xff0c;这些数据块都由类型和信息两部分构成&#xff0c;两个互相通信的进程通过某种方式看到同一个消息队列&#xff0c;这两个进程向对方发数据时&#x…

MySQL DQL 基本查询

一.概念 数据查询不应只是简单返回数据库中存储的数据&#xff0c;还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示。 二.语法格式 select 列名 from 表 where 条件 1.查询所有的商品 select * from product; 2.查询商品名和商品价格 select pname,price from…

最新PyCharm安装详细教程及pycharm配置

目录 一、PyCharm简介及其下载网站 二、单击网站的Downloads&#xff0c;进入二级页面&#xff0c;选择对应的操作系统下载PyCharm 三、PyCharm的安装程序的安装及其配置(configuration) 1、运行PyCharm Setup 2、安装位置设置 3、安装选项设置 4、开始菜单中PyCharm快捷方式的…

【C语言】实现队列

目录 &#xff08;一&#xff09;队列 &#xff08;二&#xff09;头文件 &#xff08;三&#xff09; 功能实现 &#xff08;1&#xff09;初始化 &#xff08;2&#xff09; 销毁队列 &#xff08;3&#xff09; 入队 &#xff08;4&#xff09;出队 &#xff08;5&a…

centos7系列:出现ZooKeeper JMX enabled by default这种错误的解决方法

出现ZooKeeper JMX enabled by default这种错误的解决方法 前言一 问题描述二 解决方法2.1 可能的原因分析2.2 小编的问题解决方法First&#xff1a;检查/etc/profile里面zookeeper的环境变量配置Second&#xff1a;检查 zookeeper/conf/zoo.cfg里面的dataDir的路径 总结 前言 …

【Linux内核】从0开始入门Linux Kernel源码

&#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[Linux内核] ❤️ 前置学习专栏&#xff1a;[Linux学习]从0到1 ⏰ 我们仍在旅途 ​ 目录 …

Midjourney绘图欣赏系列(五)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…

MATLAB知识点:nchoosek函数(★★★☆☆)用来计算组合数,也能返回从向量v中抽取k个元素的所有组合

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章&#xff1a;课后习题讲解中拓展的函数 在讲解第三…

模型 4E(交换、体验、随处、传教)理论

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。重在提升认知。聚焦体验营销。 1 模型 4E(交换、体验、随处、传教)理论的应用 1.1 4E 理论在软件产品营销中的应用 某软件公司利用 4E 理论提升软件产品的市场占有率。具体如下&#xff1a; Exchange&a…