理论上来说,深度神经网络的模型做的越大,网络做的越深,非线性程度也就会越大,相应的表达能力也就会越强,但是,带来相应的代价就是训练成本的提高。同时在部署的时候,大模型往往需要要求较高的硬件支持,随着越来越多的深度学习模型落地,很多情况下,需要将模型在移动端等部署,这种的部署环境受到能耗和设备体积的限制,硬件的计算能力和存储能力都相对较弱,所以说诉求就主要体现在以下方面:1.速度、2.存储容量、3.耗能
这三点诉求都需要我们根据终端环境对现有模型进行小型化处理,在不损失精度的情况下,让模型的体积更小、速度更快、能耗更低。
模型压缩可以通过以下几种方法实现:
剪裁:类似”化学结构式的减肥“,将模型结构中对预测结果不重要的网络结构减裁掉,使网络结构变得更加小,比如在每层网络中,有些神经元的权重非常的小,对模型加载信息的影响微乎其微,如果将这些权重较小的神经元删除,则既能保证模型精度不受大影响,又能减小模型大小
量化:类似”量子级别的减肥“,神经网络模型的参数一般都用float32的数据表示,但是如果我们将float32的数据计算精度都变成int8的计算精度,则可以牺牲一点模型精度来获取更快的计算速度 。
蒸馏:类似”老师教学生“,使用一个效果好的大模型指导一个小模型训练,因为大模型可以提供更多的软分类信息量,所以会训练出一个效果接近大模型的小模型
神经网络架构搜索:类似”化学结构式的重构“,以模型大小和推理速度为约束进行模型结构搜索,从而获得更高效的网络结构
除此之外还有权重共享、低秩分解等技术也可以实现模型压缩