模型壓縮
對于複雜問題模組化時,深度學習模型在容納更多參數的情況下,效果一般更好,但是模型占記憶體大,預測時間長的,往往限制其在小型或普通配制的硬體上使用。一般使用模型壓縮方法給模型減肥,主要方法總結如下。
模型剪枝
移除對結果作用很小的參數權重,如接近0的參數。具體如去掉某些卷積核,或者卷積核中的某些權重,還有對通通道的減枝,對層的減枝,對注意力頭的減枝等。
![[Pasted image 20220925094745.png]]
模型量化
減少存儲權重所需的比特數,比如将 float32 降到 int8,基于KMeans的量化方案等等(将訓練好的所有參數分成幾簇,然後把權重轉換成簇索引)。
參數共享
通過共享參數,達到減少網絡參數的目的。一個不熟悉的詞可由常用詞定義,或者用普通單詞的嵌入的稀疏組合;又如ALBERT可跨層共享所有參數。
低秩分解
低秩分解的方法運用了矩陣分解和矩陣乘法的結合律。把較大的卷積核分解為兩個級聯的行卷積核和列卷積核。比如:将一個3×3的卷積層,替換為一個3×1的卷積層加上一個1×3的卷積核。
知識蒸餾
-
第一次提出知識蒸餾
外鍊:論文閱讀_神經網絡知識蒸餾_DK
-
第一次将知識蒸餾用于自然語言處理
外鍊:論文閱讀_BERT知識蒸餾
-
針對Transformer結構使用知識蒸餾
外鍊:論文閱讀_模型蒸餾_TinyBERT
-
另一篇基于Transformer結構的優化,更易用
外鍊:論文閱讀_知識蒸餾_MobileBERT
-
結合元學習和知識蒸餾
外鍊:論文閱讀_知識蒸餾_Meta-KD
-
包含蒸餾源碼的工具包
外鍊:EasyNLP