机器学习——神经网络压缩

神经网络压缩

需要部署,设备内存和计算能力有限,需要进行模型压缩,在设备上运行的好处是低延迟,隐私性。

在这里插入图片描述

目录

在这里插入图片描述
不考虑硬件问题,只考虑通过软件算法优化。

修剪网络

参数过多或者没有用的参数,可以将其剪掉。
在这里插入图片描述
先训练一个最大的网络模型,衡量评估每个参数的重要性,

  • 看权重的绝对值
  • 评估神经元的重要性,可以将其修剪掉

修剪后能力会降低一点,并想办法将性能变好一点,对小模型进行微调
在这里插入图片描述

  • 不要一次性剪掉大量参数
  • 动了元气性能不太行

在这里插入图片描述
如果剪掉后,进行空缺的话导致无法进行GPU加速,一般将其值设置为0
在这里插入图片描述
速度大于1是加速,小于1是降速。
从上述看到对权重进行修剪,加速的效果不理想。
在这里插入图片描述

  • 对网络进行修剪,只是改输入输出的dim,在torch里面好实现,gpu也好加速。

在这里插入图片描述

  • 先训练大模型,再训练小模型达到相同性能,那为什么不直接训小模型呢?
  • 原因是大模型更好训练,小模型难训练
  • 大乐透假说

在这里插入图片描述

一个大的模型可以看作是很多个小模型的集合,只要里面有一个成功,大的模型也就成功了,跟买大乐透一样,买的彩票越多,越有可能中奖。

在这里插入图片描述

  • 基于大模型得到的参数,更有可能得到好的初始化参数,在这个基础上继续微调,有很大概率得到好的结果。

在这里插入图片描述

  • 权重的正负号很重要。
  • 跟雕像一样,只是把多余的东西拿掉。

在这里插入图片描述

  • 这篇文章打脸大乐透文章
  • 将epoch设置多一点,小模型也能得到好的结果。

知识蒸馏

在这里插入图片描述
让学生的输出与老师的输出尽可能相近,哪怕老师的模型输出是错误的。

在这里插入图片描述
teacher不仅是一个模型,可以是多个模型的集成。模型集成在打比赛的时候用的多,但是实际中考虑性能问题不太行,因此可以使用知识蒸馏使得学生模型也能得到相近的性能。

在这里插入图片描述

对softmax进行修改,增加一个温度参数T,把比较集中的分布变得更加平滑一点,对分类结果不会有影响,但是每个类别得到的分数会比较平滑平均

参数量化

在这里插入图片描述
在这里插入图片描述

  • 使用更小的bit来表示值,以降低存储占用
  • 权重聚类,使用一类来表示该类的所有值
  • 常见的用少量的bit,少见的用多一点的bit

在这里插入图片描述
使用二元值代替
在这里插入图片描述

  • 可以防止overfit
  • bit减少是不是引入了噪声,进而效果好呢?

结构设计

depthwise separable convolution

在这里插入图片描述
传统的cnn 每个通道都要进行卷积,参数量大。

在这里插入图片描述

  • depthwise的滤波器格式等于输入的channel数量
  • 每个滤波器只负责自己那个channel
  • 问题是通道之间没有交互

在这里插入图片描述
可以先加一个pointwise convolution,然后再进行depthwise convolution;
在这里插入图片描述

  • 参数约变为原先的 1 / k 2 1/{k^2} 1/k2

在这里插入图片描述

  • 把一层变成两层,类似于矩阵连续相乘,中间可操作空间大,以减少维度计算。
    *在这里插入图片描述
    在这里插入图片描述

动态计算

在这里插入图片描述
在这里插入图片描述
期望网络能自己调整计算量,因为模型会跑到不同设备上。电量的多少也会对性能有影响。

自己调整深度
在这里插入图片描述

让每层的输出,与最终的输出之间的差距加起来作为最终的loss,优化该loss来动态调整深度。

自己调整宽度
在这里插入图片描述

  • 不同宽度的输出与最宽的输出之间的差距越小越好
  • 同一个模型,只是不同的宽度
    在这里插入图片描述
    根据环境困难度自己决定深度和宽度
    在这里插入图片描述
  • 对于简单的样本,就使用浅层的输出即可
  • 对于困难的样本,可以使用最终的输出

总结

在这里插入图片描述

  • 上述技术不是互斥的,可以一起使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MRI基础--k空间

k空间定义 k空间是表示 MR 图像中空间频率的数字数组。 k空间物理意义 k 空间的单元通常显示在主轴 kx 和 ky 的矩形网格上。 k 空间的 kx 和 ky 轴对应于图像的水平 (x) 和垂直 (y) 轴。然而,k 轴表示 x 和 y 方向上的空间频率而不是位置。 k 空间中的各个点 (kx,ky) 与图像…

R语言 | 复数 相关函数

问题 大家好&#xff0c;我有一个问题&#xff0c;我看到一个函数如下&#xff1a; L2_distance <- function(A, B){rowA <- apply(A*A, 1, sum)matrixA <- matrix(rep(rowA, eachlength(rowA)), nrowlength(rowA), byrowT)rowB <- apply(B*B, 1, sum)matrixB &l…

【教程】Kotlin语言学习笔记(四)——方法(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 第二章 《数据类型》 第三章 《数据容器》 第四章 《方法》 文章目录 【…

小白跟做江科大51单片机之AD/DA

1.看原理图找接口 2.看时序图编写读取数据代码 XPT2046.c代码 #include <REGX52.H> //引脚定义 sbit XPY2046_DINP3^4; sbit XPY2046_CSP3^5; sbit XPY2046_DCLKP3^6; sbit XPY2046_DOUTP3^7; unsigned int XPT2046_ReadAD(unsigned char Command) { unsigned char …

多多关键字API php java Python

多多关键字API接口广泛应用于商家进行市场分析、竞品分析、关键词优化等场景。商家可以通过分析关键词数据&#xff0c;了解用户需求&#xff0c;制定针对性的营销策略&#xff0c;提高产品的曝光率和转化率。 多多-item_seach-通过关键字搜索商品列表 公共参数 获取key和秘钥…

开发知识点-C++之win32与NT内核

win32 Windows MFC编程 常用API汇总EnumWindows()函数UpdateData()函数static与 单例 设计模式函数原型:BOOL WINAPI SetConsoleTitle(__in LPCTSTR lpConsoleTitle);HWND 是一个基本类型 表示窗口句柄FindWindow函数SendMessage函数 将指定的消息发送到一个或多个窗口PostMes…

百度地图城市点位数据下载并转换

概述 在浏览百度地图开放平台的时候&#xff0c;发现有个资源下载页面&#xff0c;里面有个城市中心点位和百度地图行政区划adcode映射表数据&#xff0c;这是一个经常使用到的数据&#xff0c;本文实现将这个数据转换为geojson&#xff0c;并借助QGIS转换为经纬度坐标或火星坐…

手写简易操作系统(一)--环境配置

本专栏是我新开设的一个学术专栏&#xff0c;旨在全面介绍手写操作系统的相关内容。其中包括实模式向保护模式的过渡、锁机制、信号量操作、内存分配、硬盘驱动、文件系统、简单shell和管道等操作系统核心知识。该专栏旨在为有意开发自己操作系统的研究人员提供指导与帮助。作为…

代码随想录刷题笔记-Day31

1. 分发饼干 455. 分发饼干https://leetcode.cn/problems/assign-cookies/ 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口…

园区内部无线语音通信的解决方案

在一些园区、办公环境和厂矿场所&#xff0c;内部无线语音通信功能的需求日益凸显&#xff0c;尤其对于人员流动和移动办公的场景。这种需求着重强调了无线通信的便捷性和内部部署环境的适应性。 传统的内部通信系统中&#xff0c;有线通信能力占据主导地位&#xff0c;如集团…

【Latex】图片排版归纳(单张、两张图片并排、三张图片并排)

文章目录 单张图片两张并排三张并排 单张图片 \begin{figure}[htb]\centering\caption{PWM原理图}\includegraphics[width0.45\textwidth]{images/PWM.png}%可修改0.45为其他比例&#xff0c;调整大小 \end{figure}两张并排 实现效果如下 \begin{figure}[htb]\begin{minipag…

Qt初识 - 编写Hello World的两种方式 | 对象树

目录 一、通过图形化方式&#xff0c;在界面上创建出一个控件 二、通过代码方式&#xff0c;创建Hello World 三、Qt 内存泄漏问题 (一) 对象树 一、通过图形化方式&#xff0c;在界面上创建出一个控件 创建项目后&#xff0c;打开双击forms文件夹中的ui文件&#xff0c;可…

托管服务器常见的问题有哪些(常见托管问题解决)

​  对于我们来说&#xff0c;选择一个合适的服务器托管提供商只是建立和管理自己所属网站的第一步。相对来说&#xff0c;真正的挑战在于解决管理网站运行时可能出现的各种问题。就像有时&#xff0c;有些常见的服务器托管问题是不可避免的&#xff0c;但通过主动监控、定期…

统信操作系统安装Docker

1操作系统信息 2 当前系统预装了Docker相关文件&#xff0c;因此以下两个步骤无需操作&#xff1a; 1.安装环境 yum install -y yum-utils 2.设置镜像仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 仓库地址默认是国外的&…

Matlab|基于目标级联法的微网群多主体分布式优化调度

目录 主要内容 1.1 上层微网群模型 1.2 下层微网模型 部分程序 实现效果 下载链接 主要内容 本文复现《基于目标级联法的微网群多主体分布式优化调度》文献的目标级联部分&#xff0c; 建立微网群系统的两级递阶优化调度模型: 上层是微网群能量调度中心优化调度…

python爬虫(3)

上一次的代码结果如下&#xff1a; 当然会有一点点不一样是正常的表现&#xff0c;因为这个图本身使用随机数rand函数做的&#xff0c;用其他两种随机函数出来的结果也不会完全相同。 继上节这次带来的是数组的重塑和转置 1、一维数组的重塑 在NumPy模块中的reshape()函数可…

黑马点评-附近商户实现

GEO数据结构 Redis在3.2版本中加入了对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;根据经纬度来检索数据。 GEO本质上是基于sortedSet实现的&#xff0c;在Sorted Set中&#xff0c;每个成员都是与一个分数(score)相关联的&#xff0c;这个分数用于对成员进行排序…

LeetCode-102.题: 二叉树的层序遍历(原创)

【题目描述】 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 【题目链接…

如何将任何文本转换为概念图(GC)

原文地址&#xff1a;how-to-convert-any-text-into-a-graph-of-concepts 使用 Mistral 7B 将任何文本语料库转换为知识图的方法 2023 年 11 月 10 日 使用递归 RAG 方法来实现具有多跳推理的 QnA&#xff0c;以回答基于大型文本语料库的复杂查询。 知识图增强生成与递归 R…

goby的安装和使用

简介 Goby是一款基于网络空间测绘技术的新一代网络安全工具&#xff0c;它通过给目标网络建立完整的资产知识库&#xff0c;进行网络安全事件应急与漏洞应急。 Goby可提供最全面的资产识别&#xff0c;目前预置了超过10万种规则识别引擎&#xff0c;能够针对硬件设备和软件业…