一、低秩分解
在机器学习中,我们需要用数值的方式表达数据,尤其是在神经网络中,数据和模型参数都表示成张量的形式,而神经网络的计算过程就是这些张量相互作用的过程。
矩阵/张量分解是一种传统的压缩方式,在神经网络压缩中也具有重要的地位。
通过将原始大规模权值张量分解成一系列小规模的张量,张量分解可以有效降低网络模型存储,提升网络计算效率。
主流的张量分解技术有:Tucker分解、CP分解、BTD 分解。
二、深度神经网络剪枝
神经网络剪枝是指将网络中不重要的连接剪掉,以达到网络加速与压缩的目的。
由于剪枝后的网络参数中包含大量的零元素,网络的参数表示是稀疏的,因此神经网络剪枝又称为神经网络稀疏化。
三、量化
众多神经网络加速压缩策略中,量化因其以方案普适、存储压缩、计算加速、功耗降低等优点而成为了最具影响力的方法之一。
四、知识蒸馏
知识蒸馏是模型压缩的重要手段,它引入标签外的额外监督信号辅助目标网络的学习。
通常,目标网络被称为“学生网络”,若额外监督信号来自神经网络模型,则称为“教师网络”。
知识蒸馏将预训练的大型教师网络的知识迁移到结构更简单、参数更少的学生网络中,能显著减小模型尺寸、降低计算需求,同时尽可能保持预测性能。
五、精简网络设计与搜索
创新的神经网络架构设计一直都是推动深度学习快速发展的主要动力之一。
近年来,神经网络架构搜索吸引了众多研究者的关注,该方法被广泛应用于精简网络设计之中。
许多研究结果表明,与手工设计的网络相比,使用神经网络架构搜索发现的网络能够在准确率和计算效率之间取得更好的平衡。