核范数是矩阵秩的最优凸近似,定义为矩阵奇异值之和。我们观察到,在剪枝训练后期,随着模型的稀疏度逐渐稳定,识别率不断增强,模型的核范数在训练过程中呈现上升趋势。
如下图所示,在训练过程的末期,识别错误率随着网络逐渐从剪枝损失中恢复而开始下降,但其核范数在逐渐上升,表明这期间矩阵的秩也在逐渐提高。
尽管充分训练得到的模型具有更好的性能,但其秩的上升会导致截断 SVD 的重构误差上升,这足以抵消充分训练带来的性能改善。因此,我们把矩阵的核范数作为一个额外的正则化项,通过限制矩阵的核范数保证模型能够学习到稀疏且低秩的结构。
除此之外,由于计算核范数涉及到对矩阵进行奇异值分解,计算的时间复杂度较大,因此我们采用了一种核范数的近似快速算法,计算复杂度由矩阵维度的三次方降低为二次方。
在进行截断 SVD 时,为模型中的所有矩阵使用相同的截断比例可能并不是最合理的策略。由于语音预训练模型的层间差异,即使稀疏度相同,不同层的矩阵的秩也可能不同。更进一步地,对同一层的不同矩阵来说,前馈层的矩阵和注意力层的矩阵的秩也可能不同。
上图展示了稀疏HuBERT模型中核范数随层数的分布情况。可以看到,各个稀疏矩阵的核范数在层中的分布并不均匀,代表其秩同样可能具有较大差异。例如,对网络中FFN层的矩阵来说,最顶层的秩就比最靠近输入的最底层要低很多。
为解决这一问题,我们为网络中每个矩阵的每个特征值单独设计了一个剪枝掩码,通过额外加入的L0正则化项来优化这些掩码,从而学习到每个矩阵的最优奇异值移除比例。
我们在四类不同任务上对提出方法的效果进行了测试。下表比较了在语音识别、关键词检测、意图识别和说话人日志化四类任务上本文提出的稀疏+分解方法相比未经压缩的原始模型和非结构化剪枝模型的表现。
提出的方法在关键词检测(KWS)、意图识别(IC)和说话人日志化(SD)任务上的表现
表格中稀疏模型 80% 的参数量被移除,而分解的模型保留了 10% 的奇异值,两者的非零参数量是相近的。
可以看出,文章提出的结合非结构化剪枝和矩阵分解的压缩方法在所有任务上都达到了接近或超过非结构化稀疏模型的性能,证明了这一方法可以几乎无损地将非结构化稀疏模型转换为硬件友好的压缩稠密模型。更进一步的消融实验表明,不使用可学习的奇异值选择策略或核范数正则化均会导致明显的性能下降,这表明了这两种策略的有效性。
我们进一步对比了提出的方法和蒸馏模型DistilHuBERT、结构化剪枝模型DPHuBERT在ASR任务上的性能,选择的基线模型都具有较好的硬件适配性。
相比KWS等任务,ASR任务更加复杂,对压缩损失也更为敏感,因此直接进行知识蒸馏或结构化剪枝可能带来更大的性能损失,而提出的方法从压缩损失更小的非结构化剪枝模型出发,利用截断的奇异值分解进行几乎无损的非结构化到结构化的转换,从而更好地保留了未经压缩的原始模型的语音识别性能。