低功耗计算机视觉技术前沿,四大方向,追求更小更快更高效今夜无风

深度学习在广泛应用于目标检测、分类等计算机视觉任务中。但这些应用往往需要很大的计算量和能耗。例如处理一张图片分类,VGG-16需要做150亿次计算,而YOLOv3需要执行390亿次计算。

这就带来一个问题,如何在低功耗的嵌入式系统或移动设备中部署深度学习呢?一种解决办法是将计算任务转移到云侧,但这并不能最终解决问题,因为许多深度学习应用程序需要在端侧进行计算,例如部署在无人机(通常会在断网情况下工作)或卫星上的应用。

1、参数量化和剪枝:通过减少用于存储DNN模型参数的比特数来降低内存和计算成本。

2、压缩卷积滤波器和矩阵分解:将大的DNN层分解成更小的层,以减少内存需求和冗余矩阵运算的数量。

3、网络架构搜索:自动构建具有不同层次组合的DNN,从而找到期望性能的DNN架构。

4、知识迁移与蒸馏:训练一个紧凑的DNN,来模仿一个计算量更大的DNN的输出、特征和激活。

这四种方法的介绍和优缺点如下图总结:

Goel等人的这篇综述除了对这些方法进行优缺点总结外,更提出了一些可能的改进措施,同事还提出了一套评估指标以便指导未来的研究。

一、参数量化和剪枝

内存访问对DNNs的能量消耗有重要影响。为了构建低功耗的DNNs,一个策略便是在性能和内存访问次数之间进行权衡。针对这一策略,目前有两种方法,一种是进行参数量化,即降低DNN参数的大小;另一种则是剪枝,从DNNs中删除不重要的参数和连接。

1、参数量化

有研究表明(Courbariauxet.al.)以不同位宽定点格式存储的参数进行训练,岁参数位宽减小,尽管测试误差有些微的增大(这种误差的变化几乎可以忽略不计),但能耗却能够大幅降低。如下图所示:

基于这种奠定性的研究,于是出现大量工作(例如LightNN、CompactNet、FLightNN等),它们在给定精度约束的情况下,尝试为DNN的参数寻找最佳位宽。甚至Courbariaux、Rastegari等人提出了二值化的神经网络。

为了进一步降低DNNs的内存需求,目前常采用的是参数量化和模型压缩结合的方法。例如Han等人首先将参数量化到离散的bin中,然后使用Huffman编码来压缩这些bin,从而使模型大小减少89%,而精度却基本不受影响。类似的,HashedNet会将DNN的连接量化到散列bucket中,这样散列到同一个bucket的连接就会共享同一个参数。不过这种方法需要很高的训练成本,因此它们的应用是有局限的。

优点:当参数的位宽减小时,DNNs的性能基本保持不变。这主要是因为约束参数在训练过程中具有正则化的效果。

缺点及改进方向:1)使用量化技术的DNNs,往往需要进行多次再训练,这使得训练耗能非常大,因此如何降低训练成本是这种技术必须要考虑的;2)DNNs中不同层对特征的敏感性是不同的,如果所有层的位宽都一样,就会导致性能变差,因此如何为每个连接层选择不同精度的参数是提升性能的关键一步,这可以在训练过程中进行学习。

2、剪枝

从DNNs中删除不重要的参数和连接可以减少内存访问次数。

Hessian加权变形测量法(Hessian-weighteddistortionmeasure)可以对DNN中参数的重要性进行评估,从而来去掉那些冗余参数,减小DNN模型大小,但这种基于测量的剪枝方法仅适用于全连接层。

为了将剪枝扩展到卷积层,许多学者各显神通。Anwar等人提出了粒子滤波的方法;Polyak等人将样本输入数据,并剪掉哪些稀疏激活的连接;Han等人使用一种新的损失函数来学习DNN中的参数和连接;Yu等人使用一种传播重要性分数的算法来测量每个参数相对于输出的重要性。

也有人试图将剪枝、量化和压缩同时应用到模型当中,将模型大小减小了95%。

图示:不同DNN的模型压缩率。其中P:Pruning,Q:Quantization,C:Compression.

优点:如上表所示,剪枝可以和量化、编码相结合,从而能够获得更加显著的性能收益。例如当三者一同使用时,VGG-16的大小能够降低到原来大小的2%。此外,剪枝能够减少DNN模型的复杂性,从而减少了过度拟合的情况。

二、压缩卷积滤波器和矩阵分解

在DNNs中卷积操作占了很大一部分,以AlexNet为例,其中的全连接层占了近89%的参数。因此若想降低DNNs的功耗,应当减少卷积层的计算量和全连接层的参数量。这也有两个技术方向,分别为:1)采用更小的卷积滤波器;2)将矩阵分解为参数量更小的矩阵。

1、压缩卷积滤波器

与较大的滤波器相比,较小的卷积滤波器具有更少的参数,计算成本也较低。

但如果将所有大的卷积层都替换掉,会影响DNN的平移不变性,这将降低DNN模型的精度。因此有人尝试去识别那些冗余的滤波器,并用较小的滤波器将它们替换掉。SqueezeNet正是这样一种技术,它使用了三种策略来将3×3的卷积转换成1×1卷积。

如上图所示,相比于AlexNet,SqueezeNet减少了98%的参数(当然操作数稍微变多了一些),而性能却并没有受到影响。

MobileNets在瓶颈层(bottlenecklayers)使用深度可分离卷积,来减少计算、延迟和参数量。在使用深度可分离卷积(epthwiseseparableconvolutions)时,通过保持较小的特征尺寸,并只扩展到较大的特征空间,从而实现了较高的精度。

优点:瓶颈卷积滤波器大大降低了DNNs的内存和延迟需求。对于大多数计算机视觉任务,这些方法能够获得SOTA性能。滤波压缩与剪枝和量化技术正交(互不影响),因此这三种技术可以一起使用,从而进一步降低能耗。

2、矩阵分解

通过将张量或矩阵分解为合积形式(sum-productform),将多维张量分解为更小的矩阵,从而可以消除冗余计算。一些因子分解方法可以将DNN模型加速4倍以上,因为它们能够将矩阵分解为更密集的参数矩阵,且能够避免非结构化稀疏乘法的局部性问题。

为了最小化精度损失,可以按层进行矩阵分解:首先对一层的参数进行因子分解,然后根据重构误差对后续的层再进行因子分解。但逐层优化的方法使得难以将这些方法应用到大型的DNN模型中,因为分解超参的数量会随着模型深度成指数增长。Wen等人使用了紧凑的核形状和深度结构来减少因子分解超参的数量。

优点:矩阵分解可以降低DNN的计算成本,无论在卷积层还是全连接层都可以使用相同的因子分解。

三、网络架构搜索

在设计低功耗计算机视觉程序时,针对不同的任务可能需要不同的DNN模型架构。但由于存在许多这种结构上的可能性,通过手工去设计一个最佳DNN模型往往是困难的。最好的办法就是将这个过程自动化,即网络架构搜索技术(NetworkArchitectureSearch)。

NAS使用一个递归神经网络(RNN)作为控制器,并使用增强学习来构建候选的DNN架构。对这些候选DNN架构进行训练,然后使用验证集进行测试,测试结果作为奖励函数,用于优化控制器的下一个候选架构。

NASNet和AmoebaNet证明了NAS的有效性,它们通过架构搜索获得DNN模型能够获得SOTA性能。

为了获得针对移动设备有效的DNN模型,Tan等人提出了MNasNet,这个模型在控制器中使用了一个多目标奖励函数。在实验中,MNasNet要比NASNet快2.3倍,参数减少4.8倍,操作减少10倍。此外,MNasNet也比NASNet更准确。

不过,尽管NAS方法的效果显著,但大多数NAS算法的计算量都非常大。例如,MNasNet需要50,000个GPU时才能在ImageNet数据集上找到一个高效的DNN架构。

优点:NAS通过在所有可能的架构空间中进行搜索,而不需要任何人工干预,自动平衡准确性、内存和延迟之间的权衡。NAS能够在许多移动设备上实现准确性、能耗的最佳性能。

四、知识迁移和蒸馏

大模型比小模型更准确,因为参数越多,允许学习的函数就可以越复杂。那么能否用小的模型也学习到这样复杂的函数呢?

一种方式便是知识迁移(KnowledgeTransfer),通过将大的DNN模型获得的知识迁移到小的DNN模型上。为了学习复杂函数,小的DNN模型会在大的DNN模型标记处的数据上进行训练。其背后的思想是,大的DNN标记的数据会包含大量对小的DNN有用的信息。例如大的DNN模型对一个输入图像在一些类标签上输出中高概率,那么这可能意味着这些类共享一些共同的视觉特征;对于小的DNN模型,如果去模拟这些概率,相比于直接从数据中学习,要能够学到更多。

优点:基于知识迁移和知识蒸馏的技术可以显著降低大型预训练模型的计算成本。有研究表明,知识蒸馏的方法不仅可以在计算机视觉中应用,还能用到许多例如半监督学习、域自适应等任务中。

缺点及改进方向:知识蒸馏通常对学生和教师的结构和规模有严格的假设,因此很难推广到所有的应用中。此外目前的知识蒸馏技术严重依赖于softmax输出,不能与不同的输出层协同工作。作为改进方向,学生可以学习教师模型的神经元激活序列,而不是仅仅模仿教师的神经元/层输出,这能够消除对学生和教师结构的限制(提高泛化能力),并减少对softmax输出层的依赖。

五、讨论

1)量化和降低参数精度可以显著降低模型的大小和算术运算的复杂度,但大多数机器学习库很难手工实现量化。英伟达的TensorRT库为这种优化提供了一个接口。

2)在优化大型预训练DNN时,剪枝和模型压缩是有效的选择。

3)当从零开始训练一个新的DNN模型时,应该使用压缩卷积滤波器和矩阵分解来减少模型的大小和计算量。

4)NAS可以用来寻找针对单个设备的最优DNN模型。具有多个分支的DNN(如Proxyless-NAS,MNasNet等)常需要昂贵的内核启动以及GPU、CPU同步。

5)知识蒸馏能够应用到中小型数据集,因为这对学生和教师的DNN架构要求的假设较少,能够有更高的准确性。

THE END
1.模拟试题第六套及答案解析新浪教育23.北京农业大学的教授在河北省推广柿树剪枝技术时,为了说服当地的群众,教授把一块柿树园一劈为二,除自然条件相同外,其他的条件包括施肥、灭虫、浇水、除草等也都相同,其中的一块柿树剪枝,而另一块不剪枝。到收获季节,剪枝的一块柿子的产量比不剪枝的多三成以上。这下农民信服了,先进的剪枝技术很快地推广开来。 https://edu.sina.com.cn/exam/2006-10-08/140856290.html
2.(六)从零开始学人工智能搜索:对抗搜索在这里,我们借用剪枝技术消除搜索树的很大一部分,应用到一棵标准的极小极大值树上,它剪裁掉那些不可能影响最后决策的分支,仍然可以返回和极小极大值算法同样的结果。 我们先来理解一下,怎么样的搜索是没有必要的,假设我们限定了搜索深度为3,我们从头开始搜索,如下: ...https://www.jianshu.com/p/f48e0191c2ee
3.说法错误的是:()A.αα-β剪枝使用到了宽度优先算法 B. Alpha Go问世,将深度学习、价值网络、蒙特卡洛树搜索技术融合,战胜人类顶尖棋手 C. α-β剪枝在很长一段时间里都是棋类算法的代表,取得一系列成就 D. 蒙特卡洛树搜索”方式,以“信心上限决策”打分,使计算机围棋能力得到质的提升。为后续方法奠定基础 点击查看答案进入小程序搜...https://m.ppkao.com/wangke/daan/97f2a2f807b043468e1bcd845afd67aa
1.深度学习中的剪枝算法以及具体应用嘲稀疏剪枝深度学习中的剪枝(Pruning)算法是一种通过减少神经网络中不重要或冗余部分来提升计算效率和减少模型尺寸的技术。剪枝不仅可以提高模型的推理速度,还能降低内存占用,特别是在资源受限的环境中,如移动设备或嵌入式设备。剪枝的核心思想是“去除”对模型输出影响较小的参数(如权重、神经元等),从而优化网络结构。 https://blog.csdn.net/m0_45276337/article/details/143588383
2.剪枝java是啥意思什么是剪枝算法小鱼儿的技术博客剪枝优化 剪枝算法概述 基本概念: 在搜索算法中优化中,剪枝,就是通过某种判断,避免一些不必要的遍历过程,形象的说,就是剪去了搜索树中的某些“枝条”,故称剪枝。应用剪枝优化的核心问题是设计剪枝判断方法,即确定哪些枝条应当舍弃,哪些枝条应当保留的方法。 https://blog.51cto.com/u_12205/11088448
3.一年两茬茄子是怎么种出来的?2018~2020年种什么品种好?掌握这些...剪枝再生技术夏季高温季节,正值露地茄子大量上市,大棚越冬茄子开始出现生长不良、产量降低、品质不佳,市场价格快速下跌。按照“预防为主,综合防治”的植保方针,坚持以“农业防 茄子是餐桌上比较常见的一种蔬菜,因营养价值高且价格便宜而被广泛食用,目前大部分地区都有种植,而在种植的区域中,大部分地区都是一年一茬,...https://nync.guiyang.gov.cn/xwdt/kjzc/202002/t20200220_50327638.html
4.葡萄树冬季怎么整形修剪?葡萄冬季修剪技术要点介绍葡萄冬季修剪技术要点介绍 导读:到了冬天,种植葡萄的果农们就要开始准备为自家的葡萄整形修剪以及葡萄冬季的合理施肥。葡萄树的冬季管理是葡萄生产的一个重要环节,此间应重点做好整形修剪,清园杀菌,深翻、施肥与冬灌和防寒等项工作。 到了冬天,种植葡萄的果农们就要开始准备为自家的葡萄整形修剪以及葡萄冬季的合理施肥...https://m.cnhnb.com/xt/article-43441.html
5.GPT4大模型硬核解读,看完成半个专家第二种模型压缩方法是剪枝(pruning),即删除GPT-4的网络元素,包括从单个权重(非结构化剪枝)到更高粒度的组件如权重矩阵的通道。这种方法在视觉和较小规模的语言模型中有效,也是很多框架(Framework)上自带的功能。 第三种模型压缩方法是稀疏化。例如奥地利科学技术研究所(ISTA)提出的SparseGPT可以将GPT系列模型单次剪枝...https://m.36kr.com/p/2196628560234373
6.人工智能经典习题集及各章总结(期末考试必备)江阴雨辰互联第二阶段(50年代中~60年代中) 通用方法时代 第三阶段(60年代中~80年代初) 知识工程时代 第四阶段(80年代中~90年代初) 新的神经元网络时代 第五阶段(90年代初~现在) 海量信息处理与网络时代 2.人工智能研究的基本内容是什么? 解:基本内容是:搜索技术、知识表示、规划方法、机器学习、认知科学、自然语言理解...https://www.yc00.com/xiaochengxu/1690506190a360936.html
7.目标检测究竟发展到了什么程度?CVHub带你聊一聊目标检测发展的...目标检测的发展脉络可以划分为两个周期:传统目标检测算法时期(1998年-2014年)和基于深度学习的目标检测算法时期(2014年-至今)。而基于深度学习的目标检测算法又发展成了两条技术路线:Anchor based方法(一阶段,二阶段)和Anchor free方法。下图2-1展示了从2001年至2021年目标检测领域中,目标检测发展路线图。 https://cloud.tencent.com/developer/article/1842152
8.关于植树节植树的作文(通用63篇)爸爸对我说:“首先必须掌握剪枝技术。”“那,什么是剪枝技术?”“剪枝技术就是树苗在栽培之前,要先根据树苗的大小,枝丫的多少进行修剪。把多余的细枝都剪去,这样就能减少树苗对营养的需求,便于生根发芽。来,把这几根剪了,就可以了。”“哦,我知道啦。”我拿起剪刀,按照爸爸指示剪下了几根没有用处的枝丫。就...https://www.ruiwen.com/zuowen/zhishujie/4363043.html