轻量级神经网络架构综述

article/2025/6/29 14:27:35

轻量级神经网络架构综述

深度神经网络已经被证明可以有效的解决图像、自然语言等不同领域的问题.同时伴随着移动互联网技术的不断发展,便携式设备得到了迅速的普及,用户提出了越来越多的需求.因此,如何设计高效、高性能的轻量级神经网络是解决问题的关键.本文详细阐述了三种构建轻量级神经网络的方法,分别是人工设计轻量级神经网络、神经网络模型压缩算法和基于神经网络架构搜索的自动化神经网络架构设计,同时简要总结和分析了每种方法的特点,并重点介绍了典型的构建轻量级神经网络的算法.最后,总结现有的方法,并给出了未来发展的前景

目前,人工设计轻量级神经网络的主要思想在于设计更高效的网络计算方式,主要是针对卷积的计算方法.现有的深度卷积神经网络为了能够取得更好的性能,通过设置大规模的特征通道数、卷积核大小的数量,但是往往存在大量的冗余.人工设计轻量级神经网络通过合理的减少卷积核的数量,减少目标特征的通道数,结合设计更高效的卷积操作等方式,从而构造更加有效的神经网络结构,可以在保持神经网络性能的前提下,显著的减少网络的参数和计算量,实现在便携式设备上训练和应用深度神经网络.
为了减少人为因素的干扰,通过给定所有候选神经网络架构的集合作为搜索空间,使用学习到的搜索策略从搜索空间中构建最优的神经网络架构,利用性能评估策略度量网络架构的性能,并在训练阶段,作为奖励指导搜索策略的学习,通过反复的迭代,从而得到解决特定任务的最优神经网络架构,实现深度神经网络模型的自动搜索.神经网络架构搜索方法与超参数优化和元学习有显著的重叠.神经网络架构搜索方法主要由三部分组成:搜索空间,搜索策略和性能评估策略.
除人工设计轻量化神经网络模型外,学者和工业界也在不断的探索如何进一步的通过压缩神经网络模
型的规模,进一步的降低对存储设备和计算资源的需求,实现在便携式设备上应用深度神经网络.根据神经网络中每层的冗余程度,通过将网络权重的全精度的浮点数进行裁剪、对网络中间的特征输出进一步进行量化,以及剪枝、权值共享、低秩分解、知识蒸馏等方法实现神经网络模型的压缩.通过压缩神经网络模型,降低了占用的存储空间,满足功耗的限制,嵌入到便携式设备的芯片上,实现实时的运行.人工设计的神经网络模型压缩技术依赖启发式和基于规则的策略,算法设计者需要探索较大的设计空间,以及在模型大小、速度和准确率之间权衡,而这通常是次优的且耗时的.自动机器学习(Automated Machine Learning, AutoML)通过结合强化学习等方法将特征提取、模型选择、超参优化等步骤实现自动化的学习,提高模型的压缩比,在更好地保持神经网络模型性能的同时减少人为因素的干扰.

1 人工设计的轻量级神经网络模型

1.1 使用小卷积核代替大卷积
利用多层小卷积核替代一层大卷积核可以有效的减少网络的参数,对于一个大小 5 * 5 的感受野,可以通过两层3 * 3大小的卷积实现.对于一个7 * 7的卷积核可通过三层3 * 3 卷积实现.在参数量上, 5 * 5 大小的卷积核参数量为 25,而两层3 * 3 的卷积核参数量为 18,相比减少了 28%的参数量.从浮点运算数(FLOPs)角度,对于输入大小为H * W * Cin的特征,输出为H * W * Cout大小的特征图时,FLOPs(5 * 5)= H * W * Cin * Cout * 5^2 ,而两层卷积的 FLOPs(3 * 3 * 2)=2 * H * W * Cin * Cout * 3, 计算量也相应的减少.并且两层3 * 3 卷积可以合并两层非线性层,比一层大卷积核更能增加非线性能力.
提出将一个 3 3  的卷积操作分解为连续的 1 * 3 和 3 * 1的卷积,分解之后参数量和 FLOPs 都下降了 33%.使用大的 k * k卷积核可以增加感受野,同时为了减少计算量,可以使用两层 1 * k和 k * 1的卷积代替,这样参数量和 FLOPs 都变为之前的 2/ k .
在这里插入图片描述
1.2 限制中间特征的通道数量
对于标准的不带 bias 的卷积操作,FLOPs= H * W * Cin * Cout * k^2 ,运算量受到输入通道数Cin和卷积核数量Cout的影响,一般来说卷积核数量代表提取的特征数量,减少会影响网络的准确率,因此可以选择降低输入通道数Cin来减少运算量.
1.3 分解卷积运算
标准的卷积操作是将一个卷积核用在输入特征的所有通道上.一方面模型的参数量较大,另一方面合并所有通道的卷积运算存在很大冗余.利用深度可分离卷积(Depthwise Separable Convolution)对标准的卷积进行了分解.深度可分离卷积(Depthwise Separable Convolution)可分为深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)两个操作.深度卷积(Depthwise Convolution)对于每个输入通道采用不同的卷积核,即一个通道对应一个卷积核,卷积操作是按照通道进行分解的;逐点卷积(Pointwise Convolution)是卷积核大小为1 * 1的标准卷积,作用在输入的所有通道上,将来自不同通道的特征进行融合.
在这里插入图片描述

2 卷积神经网络的压缩算法

2.1 基于规则的神经网络模型压缩
权重裁剪:权重裁剪是指对网络结构中的权重进行删减从而达到压缩网络的目的.权重裁剪基于一个假设,在网络中很多参数都是不需要的或者不重要的,通过裁剪的方法可以将这些参数移除.通过权重裁剪的方法能够带来两点好处:首先参数量的减少所需要的存储空间也会相应的减少,其次,由于参数的减少导致网络运行时计算量的减少,能够减少对计算能力的需求,同时增加运行速度.
权重量化:在权重量化层面,Gupta 发现,使用 16 位的定点数作为权重,足够在 MNIST 上训练一个神经网络 .此外,Dettmers 研究了 8 位定点量化,加快并行训练中深度网络的收敛速度 .Han 等人提出了结合权重剪枝,量化和霍夫编码的策略, 可以得到非常高的压缩比,但是这种方法需要专门的运算策略来实现.提出了二值权重网络(Binary Weight Network, BWN)即对于网络的权重而言,只有 1 或-1 两个值.BWN 采用了一种混合策略(BinaryConnect)对于网络的中间层特征,保留其原始精度,只将网络权重进行二值化,将网络前向传播与反向传播时的乘法操作变为加法操作.在网络的训练过程中,二值化的权重应用于前向传播与反向传播的梯度计算,而在更新权重时,采用全精度的权重,当全精度的权重越过阈值时,其对应的二值化后的权重就会发生改变.在测试时,只保留和使用二值化之后的权重,每个权重只占用一个 bit 的空间,对于 32 位或者 64 位 bit 的浮点数,有 32~64 倍的压缩倍率,并且由于用累加代替了乘法运算,使得网络的运行效率也大幅提升.
低秩分解:卷积层的卷积核是一个 4D 的张量,低秩分解的方法主要是将卷积核进行分解以减少冗余,低秩分解的关键在于如何对卷积核的参数进行排列,以及要在哪个维度上进行秩的约束.
知识蒸馏:不同于其他的压缩或加速的方法,知识蒸馏是创建一个“学生”网络,然后让其去拟合“教师”网
络分布的方法,使得小型网络能够学习到大型网络的知识.一般来说,“教师”网络是一个较大的网络,而“学生”
网络是一个轻量级的网络.利用网络之间的知识传递,而不是直接训练一个轻量级网络.

在模型压缩方面,主要是对已有的网络进行参数量或者网络规模上的压缩.权重裁剪主要是去掉对网络贡献小的参数,最终的效果依赖于剪枝的策略;权重量化使用更少的比特数来表示权重,能够极大的对网络进行压缩,但是对网络性能影响较大;低秩分解主要是从稀疏矩阵的冗余上对其进行分解,在模型压缩与加速上都取得了一定的成果,但是实际应用中,分解操作需要的计算量较大;知识蒸馏是使用小网络来模拟大网络的性能,但是其应用场景受限于“教师”的应用场景.
2.2 基于自动机器学习的自动神经网络模型压缩
随着深度神经网络越来越深,设计空间的复杂性以指数级的速度爆炸式的增加,因此传统的基于规则的模型压缩算法不能满足模型压缩的需求.西安交通大学和谷歌联合提出了自动模型压缩算法 AMC ,利用强化学习方法学习压缩策略,学习到的压缩策略优于传统的基于规则的压缩策略,具有更高的压缩比,并且能更好的保持模型的性能,大大的减少人为因素的干扰.
针对不同的应用场景,AMC 提出了两种压缩策略搜索协议,对时效性要求较高的场景,例如移动应用程序、自动驾驶和广告排名等,通过限制搜索空间,即在模型大小和滤波器的数量等方面进行压缩,以获得最大的硬件资源;对性能要求较高的场景,例如拍照识图和谷歌图像等,通过研究模型的精度和规模设计奖励函数,实现模型的压缩并保持模型的精度
在这里插入图片描述
AMC 模型通过强化学习算法训练代理,实现动作的预测并计算稀疏性,执行压缩.同时快速评估压缩后的模型性能,通过优化损失函数,鼓励更小,更精确的结果更新代理.

3 基于神经网络架构搜索的自动化轻量级神经网络设计

神经网络架构搜索(Neural Architecture Search, NAS)是指根据某种搜索策略,在特定的搜索空间内,自动设计出解决特定任务的高性能神经网络架构.NAS 由三部分构成,分别是搜索空间,搜索策略和性能评估策略.其中搜索空间定义了构建神经网络的基本架构单元,将适合特定任务的典型网络架构作为先验知识,可以有效的减少搜索空间的大小.但是,该过程往往会引入人为因素的干扰,可能会影响不同类型的神经网络架构的搜索.搜索策略决定了如何在通常为指数级甚至是无限大的搜索空间内搜索用于解决特定任务的神经网络架构,并决定网络中不同层/模块的连接方式和参数等.一方面需要快速找到性能良好的神经网络架构,另一方面需要避免过早的收敛到次优架构.性能评估策略是指准确、高效的度量神经网络的性能.传统的性能评价方法通过在针对特定任务构建的训练数据集上,进行完整训练和测试度量神经网络的性能.这种方法的计算成本和时间复杂度高,对计算资源的需求大.因此,最近的主要研究方向集中在如何设计高效率的性能评估策略.
3.1 搜索空间
搜索空间根据基本架构的类型分为两种主要类型:第一种是直接搜索整个神经网络架构的全局搜索空间,包括链式架构搜索空间和多分支架构搜索空间;第二种是通过重复某些特定结构构建神经网络架构的局部搜索空间,代表性方法是基于块的搜索空间.
1.1 链式架构搜索空间的参数包括:(1)神经网络的(最大)层数 n ;(2)神经网络中每层的类型,包括池化、卷积或其他高级操作,例如深度可分离卷积 、空洞卷积等;(3)神经网络的超参数,包括卷积核的数量、核大小、卷积步长和全连接层的数量等.需要注意的是,不同的参数之间存在关联关系,例如神经网络的超参数受到卷积核的数量和核大小的约束,因此搜索空间的参数不是固定长度.
链式架构搜索空间具有结构简单,计算复杂度低的特点.但是在训练链式神经网络的过程中,容易发生梯度消失的问题,并且神经网络模型的规模小,学习能力差.
1.2在这里插入图片描述
2 虽然链式和多分支架构搜索空间可以以更灵活的方式构建不同类型的神经网络结构,但是面临着搜索空间大,参数规模大,需要大量的计算资源实现神经网络的搜索.因此,往往收敛至次优或局部极小的神经网络架构,不能有效的解决特定任务.为了解决上述问题,学者们受到人工设计的深度神经网络模型中存在大量重复的块结构的启发,提出了重复堆叠块结构,而不是通过搜索单一层构建神经网络.这种块结构通常由更小的块构成,通过堆叠块构建更大的神经网络架构.这种设计不仅可以保证神经网络架构的性能,而且通过简单修改神经网络的参数,可以很容易的将搜索到的神经网络推广到其他的数据集和任务中.
3. 全局搜索空间和局部搜索空间的比较
搜索空间的类型和大小决定了网络架构搜索的难度.需要注意的是,不管采用哪种类型的搜索空间,都具有不连续性和相对高维的问题.与链式和多分支等的全局搜索空间相比,基于块局部搜索空间具有以下三个优点:(1)显著降低了搜索空间的规模;(2)通过堆叠块结构创建神经网络架构已经被证明是一个非常有效的设计原则;(3)通过简单的改变块结构中卷积核的数量和大小,采用块结构创建的神经网络架构更容易的迁移到其他任务或数据集中,最后通过某种搜索策略不断的堆叠不同的块结构构建最终的网络架构。


http://chatgpt.dhexx.cn/article/yCWwEVoa.shtml

相关文章

轻量级锁的原理与实战

文章目录 1. 轻量级锁的核心原理2. 代码演示3. 轻量级锁的分类4. 轻量级锁的膨胀 1. 轻量级锁的核心原理 轻量级锁的执行过程:在抢锁线程进入临界区之前,如果内置锁(临界区的同步对象)没有被锁定,JVM首先将在抢锁线程的…

轻量级深度学习网络概览

调研了一下最近的一些轻量级网络,列举并简单介绍各个网络的设计思路 PVANET 2016年1月在arxiv网站第一次提交 文章地址:https://arxiv.org/abs/1608.08021 代码链接:https://github.com/sanghoon/pva-faster-rcnn 文章目的是减少网络计算量…

详细且通俗讲解轻量级神经网络——MobileNets【V1、V2、V3】

文章目录 轻量级神经网络——MobileNetsMobileNetV1深度可分离卷积1、**深度卷积**✨✨✨2、**逐点卷积**✨✨✨ 参数量和计算量1、**标准卷积**2、**深度可分离卷积**✨✨✨ MobileNetV1的网络结构及效果 MobileNetV2Linear Bottlenecks✨✨✨Inverted Residuals✨✨✨MobileN…

目标检测--轻量级网络(截至2022-04-21)

目标检测领域,基于深度学习模型的方案 截至目前的轻量级网络,比较有名的有这些 轻量级目标检测算法整理_牧羊女说的博客-CSDN博客_轻量级目标检测随着目标检测算法的快速发展,以及终端应用的日渐广泛,工业界对深度学习网络在终端…

linux的轻量级桌面,适用于Linux的轻量级桌面是最适合您的 | MOS86

当谈到Linux时,似乎大多数人都以最多的眼睛糖果来谈论桌面环境。虽然这些桌面是以自己的方式伟大的,但他们不是每个人都在寻找图形密集和漂亮的东西。 一些Linux用户喜欢在Linux计算体验方面采用更精简和简化的方法。正是因为这个原因 Note:这个列表中的…

轻量级锁与重量级锁

目录 一、轻量级锁 1、使用场景 2.使用过程 2.1每次指向到synchronized代码块时,都会创建锁记录(Lock Record)对象,每个线程都会包括一个锁记录的结构,锁记录内部可以储存对象的Mark Word和对象引用reference 2.2让锁…

轻量级卷积神经网络

目录 SqueezeNet(2016.11) SqueezeNet(2016.11) 作者认为模型的参数量是影响模型大小以及训练速度的主要因素,因此本篇文章的设计思想就在于如何减少模型的参数量。本篇文章共有6节,其中第1、2节为介绍及相关工作部分;第3节描述了SqueezeNet…

轻量级linux桌面环境,Linux发行版最为轻量级的桌面环境之一Xfce 桌面

开源多样性应该是 Linux 最好的特性之一,用户可以不断尝试各种自己喜欢的新鲜玩法与花样,并从中选择最适合自己的应用。无论你是 Linux 新人还是老鸟,层出不穷的应用和桌面环境可能都会让我们应接不暇,特别是尝试不同的 Linux 桌面环境,可以说是一件非常有趣但也耗时的事情…

鸿蒙轻量级数据存储Preferences

1,概述 鸿蒙轻量级偏好数据库-Preferences。 轻量级偏好数据库主要提供轻量级Key-Value键值对形式操作,支持少量数据,数据存在在本地文件中,同时也加载在内存中,所以速度快,效率高,属于非关系型…

轻量级目标检测算法整理

随着目标检测算法的快速发展,以及终端应用的日渐广泛,工业界对深度学习网络在终端应用的关注度越来越高,尤其是对于如何保持速度和精度上的平衡,也形成了不小的研究热度。本篇整理了一些较新的轻量级目标检测网络,结合…

轻量级网络总结

文章目录 1. SqueezeNet2. ShuffleNet2.1 v12.2 v2 3. MobileNet3.1 v13.2 v23.3 v3 4. GhostNet4.1 v14.2 v2 1. SqueezeNet SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size 考虑到卷积层的参数量为 C i n ∗ C o u t ∗ K ∗ K …

轻量级c语言开发环境,几款轻量级的C/C++编写软件

因为有同学问我写C用什么软件好点。。。其实这些软件各有优势&#xff0c;只不过看自己需要罢了。 我下了个VS 2017.....不过太大了点。算下来20G左右&#xff0c;硬盘小点的笔记本直接没法玩......(我的就没问题&#xff0c;嘻嘻嘻)&#xff0c;要是你想用VS2017&#xff0c;我…

Synchronized原理(轻量级锁篇)

Synchronized原理&#xff08;轻量级锁篇&#xff09; 简述 介绍 轻量级锁是JDK1.6之中加入的新型锁机制&#xff0c;它名字中的“轻量级”是相对于使用操作系统互斥量来实现的传统锁而言的&#xff0c;因此传统的锁机制就称为“重量级”锁。首先需要强调一点的是&#xff0…

轻量级 android模拟器,【分享中控】轻量级中控系统

先上图: 这是一个简单的模拟器本地中控,自恋的说非常好用,它帮助了我成功开发无数款脚本,已经在多台电脑上稳定运行数月。 虽然不算强大,但是足以应付大部分的脚本开发需求。 [hide]注意 1. 使用此软件的前提是安装好 .Net Framework 4.5 运行环境,Win10自带此环境无需安…

浅析轻量级锁

从轻量级锁 来看锁机制。 (目前 上的唯一一张图。= =。 因为有些东西没有图的话 是很难理清楚的 - - )对象是否被某个线程的锁定的依据是, 对象头中记录的信息。 mark word 也叫对象标志词。对象头的信息内容是变化的,变化后是根据不同的锁标志位来描述对应的信息。 比如当…

14种轻量级网络综述 — 主干网络篇

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 作者丨VincentLee 来源丨晓飞的算法工程笔记 编辑丨极市平台 导读 早期的卷积神经很少考虑参数量和计算量的问题&#xff0c;由此轻量级网络诞生&#xff0c;其旨在保持模型精度基础上近一步减少模型参数量和…

神经网络学习小记录47——ShuffleNetV2模型的复现详解

神经网络学习小记录47——ShuffleNetV2模型的复现详解 学习前言什么是ShuffleNetV2ShuffleNetV21、所用模块2、网络整体结构 网络实现代码 学习前言 据说ShuffleNetV2比Mobilenet还要厉害&#xff0c;我决定好好学一下。 什么是ShuffleNetV2 这篇是ECCV2018关于轻量级模型的…

一个简单的dos命令实现无限弹窗,卡死电脑

教大家一个简单的dos命令实现无限弹窗&#xff0c;从而实现卡死电脑。 1.新建一个文本文件 2.在该文件里面输入 : start start cmd goto start 3.保存后并把此文件的.txt后缀改为.bat 提示&#xff1a;如果你的计算机不显示后缀拓展名&#xff0c;首先应先让显示拓展名再进行操…

Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹)

Pycharm制作搞怪弹窗(声音强制最大&#xff0c;屏幕亮度强制最亮&#xff0c;按钮躲避&#xff0c;弹窗炸弹&#xff09; 闲来无聊用python制作了一个搞怪的桌面弹窗程序&#xff0c;惊喜连连哦 运行动图 实现代码&#xff1a; import tkinter as tk import tkinter.font as…

Charles抓包出现弹窗问题或者无法抓包https问题汇总

一、重要问题总结 1、https抓包需要在电脑端和移动端都装上相应的证书&#xff01;不同的电脑、手机需要的证书可能不一样&#xff0c;如果不能正常工作&#xff0c;建议重新安装。 2、iOS10及以上系统&#xff0c;需要在安装charles证书后 在设置->通用->关于本机->…