深度學習模型壓縮方法綜述(一)

2021-08-29 04:41:49 字數 1609 閱讀 1159

深度學習模型壓縮方法綜述(一)

深度學習模型壓縮方法綜述(二)

深度學習模型壓縮方法綜述(三)

目前在深度學習領域分類兩個派別,一派為學院派,研究強大、複雜的模型網路和實驗方法,為了追求更高的效能;另一派為工程派,旨在將演算法更穩定、高效的落地在硬體平台上,效率是其追求的目標。複雜的模型固然具有更好的效能,但是高額的儲存空間、計算資源消耗是使其難以有效的應用在各硬體平台上的重要原因。

最近正好在關注有關深度學習模型壓縮的方法,發現目前已有越來越多關於模型壓縮方法的研究,從理論研究到平台實現,取得了非常大的進展。

2023年,han發表的deep compression是一篇對於模型壓縮方法的綜述型文章,將裁剪、權值共享和量化、編碼等方式運用在模型壓縮上,取得了非常好的效果,作為iclr2016的best *****,也引起了模型壓縮方法研究的熱潮。其實模型壓縮最早可以追溯到2023年,lecun老爺子的那篇optimal brain damage(obd)就提出來,可以將網路中不重要的引數剔除,達到壓縮尺寸的作用,想想就可怕,那時候連個深度網路都訓練不出來,更沒有現在這麼發達的技術,lecun就已經想好怎麼做裁剪了,真是有先見之明,目前很多裁剪方案,都是基於老爺子的obd方法。

目前深度學習模型壓縮方法的研究主要可以分為以下幾個方向:

更精細模型的設計,目前的很多網路都具有模組化的設計,在深度和寬度上都很大,這也造成了引數的冗餘很多,因此有很多關於模型設計的研究,如squeezenet、mobilenet等,使用更加細緻、高效的模型設計,能夠很大程度的減少模型尺寸,並且也具有不錯的效能。

模型裁剪,結構複雜的網路具有非常好的效能,其引數也存在冗餘,因此對於已訓練好的模型網路,可以尋找一種有效的評判手段,將不重要的connection或者filter進行裁剪來減少模型的冗餘。

核的稀疏化,在訓練過程中,對權重的更新進行誘導,使其更加稀疏,對於稀疏矩陣,可以使用更加緊致的儲存方式,如csc,但是使用稀疏矩陣操作在硬體平台上運算效率不高,容易受到頻寬的影響,因此加速並不明顯。

除此之外,量化low-rank分解遷移學習等方法也有很多研究,並在模型壓縮中起到了非常好的效果。

核的稀疏化,是在訓練過程中,對權重的更新加以正則項進行誘導,使其更加稀疏,使大部分的權值都為0。核的稀疏化方法分為regular和irregular,regular的稀疏化後,裁剪起來更加容易,尤其是對im2col的矩陣操作,效率更高;而irregular的稀疏化後,引數需要特定的儲存方式,或者需要平台上稀疏矩陣操作庫的支援,可以參考的**有:

以上三篇文章都是基於核稀疏化的方法,都是在訓練過程中,對引數的更新進行限制,使其趨向於稀疏,或者在訓練的過程中將不重要的連線截斷掉,其中第一篇文章提供了結構化的稀疏化,可以利用gemm的矩陣操作來實現加速。第二篇文章同樣是在權重更新的時候增加限制,雖然通過對權重的更新進行限制可以很好的達到稀疏化的目的,但是給訓練的優化增加了難度,降低了模型的收斂性。此外第二篇和第三篇文章都是非結構化的稀疏化,容易受到稀疏矩陣演算法庫以及頻寬的限制,這兩篇文章在截斷連線後還使用了乙個surgery的過程,能夠降低重要引數被裁剪的風險。之後還會對其他的模型壓縮方法進行介紹。(未完待續)

深度學習模型壓縮方法綜述(一)

深度學習模型壓縮方法綜述 一 深度學習模型壓縮方法綜述 二 深度學習模型壓縮方法綜述 三 目前在深度學習領域分類兩個派別,一派為學院派,研究強大 複雜的模型網路和實驗方法,為了追求更高的效能 另一派為工程派,旨在將演算法更穩定 高效的落地在硬體平台上,效率是其追求的目標。複雜的模型固然具有更好的效能...

深度學習模型壓縮方法綜述(二)

深度學習模型壓縮方法綜述 一 深度學習模型壓縮方法綜述 二 深度學習模型壓縮方法綜述 三 上一章,將基於核的稀疏化方法的模型壓縮方法進行了介紹,提出了幾篇值得大家去學習的 本章,將繼續對深度學習模型壓縮方法進行介紹,主要介紹的方向為基於模型裁剪的方法,由於本人主要研究的為這個方向,故本次推薦的 數量...

深度學習模型壓縮方法綜述(二)

深度學習模型壓縮方法綜述 一 深度學習模型壓縮方法綜述 二 深度學習模型壓縮方法綜述 三 上一章,將基於核的稀疏化方法的模型壓縮方法進行了介紹,提出了幾篇值得大家去學習的 本章,將繼續對深度學習模型壓縮方法進行介紹,主要介紹的方向為基於模型裁剪的方法,由於本人主要研究的為這個方向,故本次推薦的 數量...