把大模型装进小设备:语音预训练模型的非结构化剪枝和矩阵分解
近年来,语音识别技术随着人工智能的浪潮一路高歌猛进,其中自监督预训练的语音模型凭借强大的性能和鲁棒性,成了业界和学界的研究焦点。不过,这些模型参数动辄上亿,计算资源的消耗相当惊人,这直接限制了它们在很多实际场景——尤其是移动设备上的应用。
今天来聊聊清华大学语音与音频技术实验室(SATLab)一篇发表在信号处理领域旗舰期刊
IEEE Journal of Selected Topics in Signal Processing (JSTSP)
硬件通用性好、压缩损失小

论文链接:https://doi.org/10.1109/JSTSP.2024.3433616
背景:非结构化与结构化剪枝
以HuBERT、Wa vLM为代表的无监督语音预训练模型,表征能力和稳健性确实没得说,只需要少量标注数据微调一下,就能在各类语音任务上取得不错的效果。但问题也很现实:参数量太大,很难塞进算力受限的可移动设备里。所以,给这类模型“瘦身”就成了一个非常关键的课题。
模型剪枝是压缩的主流方法之一。从原理上说,就是通过移除网络中那些不重要的参数,来削减参数量,从而减轻存储压力、加速计算。根据剪枝的最小单元不同,方法可以分成两类:非结构化剪枝和结构化剪枝。前者以单个参数为独立单元,后者则以连续的参数组——比如矩阵的行或列——为基本单元。
这两者各有取舍。非结构化剪枝的自由度更高,不容易“误伤”那些真正关键的核心参数,因此性能损失更小。但剪枝后得到的是稀疏矩阵,想加速计算,必须依赖特定的硬件或计算库,使用门槛比较高。结构化剪枝则相反,它直接让矩阵变小,硬件适配性很好,但性能损失往往也更明显。
为了平衡硬件适配性和压缩后模型的性能,这篇文章尝试了一个巧妙的办法:用
截断奇异值分解
主要方法:结合剪枝和矩阵分解
非结构化剪枝得到的稀疏矩阵,有可能自带低秩特性。一些理论研究表明,矩阵的稀疏度会影响其秩的上界。
下图对比了HuBERT模型中注意力层和线性层矩阵在剪枝前后奇异值排布的变化。不难看出,剪枝之后,稀疏矩阵的奇异值整体下降了。从数学上分析,截断奇异值分解会得到一对较小的稠密矩阵,它们的乘积与原矩阵的误差正是被丢弃的奇异值之和。也就是说,对稀疏矩阵做截断奇异值分解,重构误差会更小,对性能的影响自然也更可控。

不过,低秩性并不是稀疏矩阵的必然属性——打个比方,对角矩阵极其稀疏,但同时也是满秩的。而且,非结构化剪枝模型里的矩阵,有些可能是低秩的,另一些却可能不是。
为了保证剪枝过程中低秩结构的存在,文章引入了
核范数正则化
可学习的奇异值选择策略

核范数正则化
核范数是矩阵秩的
最优凸近似
具体来看,训练末期,识别错误率随着网络从剪枝损失中恢复而下降,但核范数却在上升,说明矩阵的秩也在同时提高。

尽管充分训练的模型性能更好,但秩的上升会导致截断SVD的重构误差变大,这完全可能抵消掉训练带来的性能增益。因此,文章把矩阵的核范数作为
额外的正则化项
另外,计算核范数需要进行奇异值分解,时间复杂度较高,所以团队采用了一种
近似快速算法
可学习的奇异值选择策略
进行截断SVD时,给所有矩阵用同一个截断比例,显然不够合理。语音预训练模型层与层之间的差异很大,即使稀疏度相同,不同层的矩阵秩也可能不同。更甚之,同一层里,前馈层的矩阵和注意力层的矩阵,秩也可能差别很大。

从上图稀疏HuBERT模型中各层矩阵的奇异值分布也能看出,核范数在层间的分布并不均匀,意味着秩的差异同样不小。比如FFN层的矩阵,最顶层的秩比靠近输入的最底层低得多。
针对这个问题,文章为网络中每一个矩阵的每一个特征值单独设计了一个剪枝掩码,并通过额外的L0正则化项来优化这些掩码,最终学习出
每个矩阵的最优奇异值移除比例
实验结果概览
团队在四类不同任务上验证了方法的效果。下表对比了在语音识别、关键词检测、意图识别和说话人日志化这四项任务上,稀疏+分解方法相对于原始模型和非结构化剪枝模型的表现。

实验中,稀疏模型移除了80%的参数量,分解模型保留了10%的奇异值,两者的非零参数量相近。
结果显示,在所有任务上,提出的结合非结构化剪枝和矩阵分解的压缩方法,都达到了
接近甚至超过非结构化稀疏模型
几乎无损地
与蒸馏和剪枝基线模型的对比中,团队选择了硬件适配性较好的蒸馏模型DistilHuBERT和结构化剪枝模型DPHuBERT。结果显示,在更复杂的ASR任务上,由于压缩损失更敏感,直接做知识蒸馏或结构化剪枝往往会带来更大的性能损失。而文章提出的方法从压缩损失更小的非结构化剪枝出发,利用截断奇异值分解完成几乎无损的转换,最终更好地保留了原始模型的识别性能。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名