【12.09】AC/DC: Alternating Compressed/DeCompressed
Training of Deep Neural Networks
知识背景:剪枝
为了部署DNN,开发了一系列完整的模型压缩方法,如剪枝和量化
剪枝的基本目标是获得通过设置为零来删除许多连接的神经网络,同时保持网络的准确性。
对样本进行拟合得到橙色曲线,由于太精确导致过拟合、为了使得模型的泛化能力更加强,对橙色拟合表达式中权重较小的系数进行剪枝,得到更加适用的蓝色曲线。
剪枝方法需要完全精确、密集的模型,然后从中删除权重。这样模型计算速度能够得到提升,也会变得更小。
权重剪枝是将模型中比较小权重的链接剪掉
使用np.percentile(np.abs,50)算出阈值,生成50%的掩码矩阵进行剪枝
这种方法的一个缺点是,由于压缩而节省的内存和计算量仅适用于推理预测、训练后阶段,而不适用于训练本身。
创新点
提出了一种DNN交替压缩/解压缩(AC/DC)训练的方法,AC/DC的一个重要特性是,它允许密集和稀疏模型的联合训练,在训练过程结束时产生精确的稀疏-密集模型对。这在实践中很有用,压缩变量可能需要在资源受限的环境中部署,而无需重新执行整个训练流程。
顾名思义,AC/DC的工作原理是将标准密集训练阶段与稀疏阶段交替进行,其中优化只在固定稀疏支持上执行,权重子集及其梯度固定为零,从而节省计算量。
深度神经网络的交替稀疏和密集训练阶段的算法之前已经进行过研究,但是使用稀疏性作为正则化器,以获得更精确的密集模型还没人做过。AC/DC在各种模型和任务上都能提供一致的良好结果。
大多数DNN剪枝方法可以分为:
(1)训练后剪枝方法,从精确的密集基线开始,去除权重,然后进行微调;
(2)稀疏训练方法,在训练过程中进行重量去除。
总结
提出的是一种交替压缩/解压缩(AC/DC)训练的方法,(我觉着应该是属于知识蒸馏中的方法),就是在训练的时候将未压缩的和使用FFT中蝴蝶变换后的压缩模型协同训练。优点是既能返回精确的标准模型,又能返回压缩模型。(不和下三角卷积一样直接对模型进行裁剪)
他们提出的这个AC/DC缺点是和单纯的稀疏训练方法RigL相比,需要训练密集模型。