Network Compression(李宏毅)机器学习 2023 Spring HW13 (Boss Baseline)

1. Introduction to Network Compression

深度学习中的网络压缩是指在保持神经网络性能的同时,减少其规模的过程。这非常重要,因为深度学习模型,尤其是用于自然语言处理或计算机视觉的大型模型,训练和部署的计算成本可能非常高。网络压缩通过降低内存占用并加快推理速度,在不牺牲精度的情况下,使模型更加高效。

网络压缩所使用的技术有:

1.1 Network Pruning

Network Pruning (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

对于网络剪枝,有一个彩票假设理论,该理论指出:“密集的、随机初始化的前馈网络中包含子网络(中奖票),当这些子网络单独训练时,其测试精度可以在类似的迭代次数下达到与原始网络相当的水平。这些中奖票之所以‘中奖’,是因为它们的连接权重初始值使训练特别高效。”(来源:论文链接)。

还有一篇关于神经网络重要性估计的论文也值得阅读。(来源:论文链接)

1.2 Knowledge Distillation

知识蒸馏(Knowledge Distillation, KD)是一种机器学习技术,其中一个较小且更简单的模型(称为学生模型)被训练以复制一个较大且更复杂的模型(称为教师模型)的行为。其目标是将教师模型的“知识”转移到学生模型,使得较小的模型在保持高性能的同时,在计算和内存方面更加高效。

knowledge distillation (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

在进行知识蒸馏时,一个常用的技巧是引入一个称为温度(temperature)的超参数。知识蒸馏中的温度用于使教师模型的输出概率分布更加平滑。它控制预测的置信度或分散程度,从而使学生模型更容易从教师模型的输出中学习。

teperature for softmax (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

1.3 Parameter Quantization

参数量化是一种模型压缩技术,通过用更少的位数表示神经网络的参数(权重和激活值),来减少内存占用和计算需求。与使用全精度(如32位浮点数)表示参数不同,参数量化使用低精度数据类型,例如16位、8位甚至二进制格式来存储和处理参数。

Parameter Quantization (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

Range Mapping and Clipping (source: https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization)

这篇文章在解释和可视化量化方面做得非常出色: 文章链接。

1.4 Architecture Design

架构设计涉及创建内在高效的神经网络结构,通过减少模型规模、内存使用和计算复杂性来优化性能,而无需依赖训练后的压缩技术。与剪枝或量化不同,这种方法从一开始就专注于设计更小、更快且更高效的网络。

以卷积神经网络(CNN)为例,常规的卷积核如下:

Standard CNN (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

但是,我们可以引入一种新的卷积方式,即深度可分卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。深度可分卷积对每个输入通道独立地应用一个单独的滤波器。逐点卷积则用于跨通道混合信息,它使用一个 1×1 的卷积核来调整输出通道的数量。

Depthwise and pointwise convolutions (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

与普通卷积相比,深度可分卷积的参数量大大减少,减少的比例约为 k×k。其中 k 是卷积核的大小。

Depthwise and pointwise convolutions (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

之所以有效,是因为它是一种低秩近似(low rank approximation)。

低秩近似是一种在机器学习和神经网络中使用的技术,通过用较小的低秩矩阵来近似大矩阵,从而减少其规模和复杂度。其目标是捕捉最重要的信息,同时丢弃冗余部分,从而减少计算、存储和内存需求。在卷积神经网络中,深度可分卷积通过将传统的卷积操作分解为两个较小的操作(深度卷积和逐点卷积),有效地降低了计算量和参数数量,这正是低秩近似的一种应用。

Low-rank approximation (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

Low-rank approximation (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

1.5 Dynamic Computation

动态计算方法允许网络根据输入数据、网络当前状态或资源限制来调整其计算的操作数或层数。这种适应性可以发生在推理过程中(例如在测试图像上),甚至在训练过程中。通过动态地选择不同的计算路径或层,网络能够在保证性能的同时,优化计算资源的使用,提高效率。

Dynamic Depth (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

Dynamic Width (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/tiny_v7.pdf)

2. Homework Results and Analysis

机器学习作业13是网络压缩。

网络压缩:在不损失性能的情况下使模型更小。在这个任务中,我们需要训练一个非常小的模型来完成作业3(在Food-11数据集上进行图像分类)。

数据集仍然是Food-11,但顺序不同。

Dataset (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2023-course-data/HW13.pdf)

有一个特别的规定:确保你的模型的总参数数目小于或等于60,000。

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

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

相关文章

UnityDots学习(二)

在一里已经概述了什么是Dots,已经如果使用它,我们要做的思维转变。 简单总结下: Dots使用了计算器多核,已经3级缓存的优势,在此基础上使用Brust编译器对各个平台实现了代码优化。从而达到了加速提升的效果。 我们要…

Linux (CentOS) 安装 Docker 和 Docker Compose

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …

c++ 预备

目录 前言 一,知识点的补充 二,c语言与c 三,面向对象的三大特点 前言 将进入c的学习,接下来是对于c的预备和c的一些预习 一,知识点的补充 1 标识符 标识符不能为关键字 标识符只能由下划线,数字&#xf…

SpringBoot项目实战(41)--Beetl网页使用自定义函数获取新闻列表

在Beetl页面中可以使用自定义的函数从后台新闻列表中获取新闻数据展示到页面上。例如我们可以从后台新闻表中获取新闻按照下面的格式展示&#xff1a; <li><a href"#">东亚非遗展即将盛妆亮相 揭起盖头先睹为快</a></li><li><a hre…

从零开始开发纯血鸿蒙应用之多签名证书管理

从零开始开发纯血鸿蒙应用 一、前言二、鸿蒙应用配置签名证书的方式1、自动获取签名证书2、手动配置签名证书 三、多签名证书配置和使用四、多证书使用 一、前言 由于手机操作系统&#xff0c;比电脑操作系统脆弱很多&#xff0c;同时&#xff0c;由于手机的便携性&#xff0c…

数据结构初阶---排序

一、排序相关概念与运用 1.排序相关概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的…

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件&#xff0c;需要使用管理员权限来执行&#xff1a; 配置是&#xff1a;系统每 30S 喂一次狗&#xff0c;超过 60S 不进行投喂&#xff0c;就会自动重启。 1. 系统脚本内容&#xff1a; #!/bin/b…

opencv的NLM去噪算法

NLM&#xff08;Non-Local Means&#xff09;去噪算法是一种基于图像块&#xff08;patch&#xff09;相似性的去噪方法。其基本原理是&#xff1a; 图像块相似性&#xff1a;算法首先定义了一个搜索窗口&#xff08;search window&#xff09;&#xff0c;然后在该窗口内寻找…

Docker运维高级容器技术知识点总结

1、虚拟机部署和容器化部署的区别是什么&#xff1f; 1、技术基础&#xff1a; <1>.虚拟化技术在物理硬件上创建虚拟机&#xff0c;每台虚拟机运行自己完整的操作系统、从而实现资源隔离。 <2>.容器化技术&#xff1a;将应用程序打包在容器内&#xff0c;在进程空间…

双模充电桩发展前景:解锁新能源汽车未来的金钥匙,市场潜力无限

随着全球能源转型的浪潮席卷而来&#xff0c;新能源汽车行业正以前所未有的速度蓬勃发展&#xff0c;而作为其坚实后盾的充电基础设施&#xff0c;特别是双模充电桩&#xff0c;正逐渐成为推动这一变革的关键力量。本文将从多维度深入剖析双模充电桩的市场现状、显著优势、驱动…

python3GUI--大屏可视化-传染病督导平台 By:PyQt5

文章目录 一&#xff0e;前言二&#xff0e;预览三&#xff0e;软件组成&开发心得1.样式&使用方法2.左侧表格实现3.设计4.学习5.体验效果 四&#xff0e;代码分享1.环形渐变进度组件2.自定义图片的背景组件 五&#xff0e;总结 大小&#xff1a;60.9 M&#xff0c;软件…

某漫画网站JS逆向反混淆流程分析

文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…

ffmpeg aac s16 encode_audio.c

用ffmpeg库时&#xff0c;用代码对pcm内容采用aac编码进行压缩&#xff0c;出现如下错误。 [aac 000002bc5edc6e40] Format aac detected only with low score of 1, misdetection possible! [aac 000002bc5edc8140] Error decoding AAC frame header. [aac 000002bc5edc81…

深度学习的原理和应用

一、深度学习的原理 深度学习是机器学习领域的一个重要分支&#xff0c;其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理&#xff1a; 多层神经网络结构&#xff1a;深度学习模型通常由多层神经元组成&#xff0c;这些神经元通过权重和偏置相互连接。输入数据…

mv指令详解

&#x1f3dd;️专栏&#xff1a;计算机操作系统 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 主要功能 常用选项详解 1. 移动文件或目录 2. 重命名文件或目录 3. -i&am…

5 分布式ID

这里讲一个比较常用的分布式防重复的ID生成策略&#xff0c;雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库&#xff0c;分机房部署&#xff0c;单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看…

怎么实现Redis的高可用?

大家好&#xff0c;我是锋哥。今天分享关于【怎么实现Redis的高可用&#xff1f;】面试题。希望对大家有帮助&#xff1b; 怎么实现Redis的高可用&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 为了实现 Redis 的高可用性&#xff0c;我们需要保证在发…

牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵&#xff0c;请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵&#xff0c;主对角线为从矩阵的左上角至右下角的连线。 示例 输入&#xff1a; 3 1 2 3 0 4 5 0 0…

H266/VVC 帧内预测中 ISP 技术

帧内子划分 ISP ISP 技术是在 JVET-2002-v3 提案中详细介绍其原理&#xff0c;在 VTM8 中完整展示算法。ISP是线基内预测&#xff08;LIP&#xff09;模式的更新版本&#xff0c;它改善了原始方法在编码增益和复杂度之间的权衡&#xff0c;ISP 算法的核心原理就是利用较近的像…

了解npm:JavaScript包管理工具

在JavaScript的生态系统中&#xff0c;npm&#xff08;Node Package Manager&#xff09;无疑是一个举足轻重的存在。它不仅是Node.js的包管理器&#xff0c;更是前端开发不可或缺的一部分&#xff0c;为开发者提供了丰富的包资源、便捷的包管理以及强大的社区支持。本文将深入…