![a5bd54eb76024ab8a34d3a640dd80e4a.png](https://i-blog.csdnimg.cn/blog_migrate/1cd90b0720297b0367b5062bc701184b.jpeg)
01 神经网络压缩技术概要
深度学习在计算机视觉以及自然语言处理等领域达到了一个前所未有的高度,但是深度学习模型往往极度复杂,并伴随着高额的存储空间与计算资源消耗,这使得深度学习模型很难落实到各个硬件平台。例如VGG16卷积神经网络,其参数数量有1亿3千多万,模型占用500多MB的存储空间,需要进行300多亿次的浮点运算才能完成一次图像识别任务。
经研究表明,在神经网络模型中存在大量的冗余神经元与权重,参与主要计算并对最终结果产生影响的权重只占总数的5-10%。这也给神经网络压缩提供了理论基础。若能够找到有效的压缩手段,深度神经网络便可更广泛的部署在移动设备等轻量级设备上。
在服务端,也可以提供更好的性能。举个实际的例子,我们用剪枝+知识蒸馏的方案,将维阵漏洞检测的模型的推理速度提高了9倍,即使仅仅基于CPU,也可以实现快速推理,这样服务端的硬件成本也可以降下来。
压缩模型通常分为:1)对训练好的大型网络进行剪枝或对其权重进行量化。2)使用一定的方法构建更加轻型紧凑的网络。
其中,神经网络剪枝首先会从大型网络中筛选出不重要的神经元以及权重,之后将它们从网络中删除,在此同时尽可能的保留网络的性能。
剪枝技术按照细粒度的不同可分为结构性剪枝以及非结构性剪枝:
结构性剪枝剪除的基本单元为神经元(卷积中为filter),由于是对神经元直接进