AI實戰:深度學習模型壓縮加速方法彙總

深度學習模型壓縮加速方法可大致分爲2大類

  • 1、設計新的卷積計算方法

    設計新的卷積計算方法,從而減少參數,達到壓縮模型的效果,例如 SqueezedNet、mobileNet

    比如:depth-wise 卷積、point-wise 卷積(Depthwise卷積與Pointwise卷積詳解

  • 2、在已訓練好的模型上做裁剪

    先訓練好模型,再在其上做fine-tuning,主要方法包括:

    • 剪枝
      神經網絡是由一層一層的節點通過邊連接,每個邊上會有權重,所謂剪枝,就是當我們發現某些邊上的權重很小,可以認爲這樣的邊不重要,進而可以去掉這些邊。在訓練的過程中,在訓練完大模型之後,看看哪些邊的權值比較小,把這些邊去掉,然後繼續訓練模型。

    • 權值共享
      就是讓一些邊共用一個權值,達到縮減參數個數的目的。假設相鄰兩層之間是全連接,每層有1000個節點,那麼這兩層之間就有1000*1000=100萬個權重參數。可以將這一百萬個權值做聚類,利用每一類的均值代替這一類中的每個權值大小,這樣同屬於一類的很多邊共享相同的權值,假設把一百萬個權值聚成一千類,則可以把參數個數從一百萬降到一千個。

    • 量化
      一般而言,神經網絡模型的參數都是用的32bit長度的浮點型數表示,實際上不需要保留那麼高的精度,可以通過量化,比如用0~255表示原來32個bit所表示的精度,通過犧牲精度來降低每一個權值所需要佔用的空間

    • 二值權重網絡(BWN)

      二值權重網絡是一種只針對神經網絡係數二值化的二值網絡算法。BWN只關心繫數的二值化,並採取了一種混和的策略,構建了一個混有單精度浮點型中間值與二值權重的神經網絡–BinaryConnect。BinaryConnect在訓練過程中針對特定層的權重進行數值上的二值化,即把原始全精度浮點權重強行置爲-1、+1兩個浮點數,同時不改變網絡的輸入和層之間的中間值,保留原始精度。而真正在使用訓練好的模型時,由於權重的取值可以抽象爲-1、+1,因此可以採用更少的位數進行存放,更重要的是,很顯然權重取值的特點使得原本在神經網絡中的乘法運算可以被加法代替。理論上可以得到2倍的加速比。

    • 二值神經網絡(BNN)

      BNN要求不僅對權重做二值化,同時也要對網絡中間每層的輸入值進行二值化,這一操作使得所有參與乘法運算的數據都被強制轉換爲“-1”、“+1”二值。我們知道計算機的硬件實現採用了二進制方式,而神經網絡中處理過的二值數據 恰好與其一致,這樣一來就可以考慮從比特位的角度入手優化計算複雜度。

      BNN也正是這樣做的:將二值浮點數“-1”、“+1”分別用一個比特“0”、“1”來表示,這樣,原本佔用32個比特位的浮點數現在只需1個比特位就可存放,稍加處理就可以實現降低神經網絡前向過程中內存佔用的效果。同時,一對“-1”、“+1”進行乘法運算,得到的結果依然是“-1”、“+1”,通過這一特性就可將原本的浮點數乘法用一個比特的位運算代替,極大的壓縮了計算量,進而達到提高速度、降低能耗的目的。然而,大量的實驗結果表明,BNN只在小規模數據集上取得了較好的準確性,在大規模數據集上則效果很差。

    • 同或網絡(XNOR-net)

      XNOR-net是一種針對CNN的簡單、高效、準確近似方法,核心思想是:在BNN的基礎上,針對二值化操作給每一層數據造成的誤差,引入最佳的近似因子,以此來彌補二值化帶來的精度損失,提高訓練精度的同時還能保持BNN在速度和能耗方面的優勢。

      同或網絡在大規模數據集上的效果取得了巨大進步,其中在ImageNet上的正確性只比全精度的相同網絡低10個百分點。但在很多複雜任務中,這一結果依然不能滿足生產需要。

    • 三值權重網絡(TWN)

      TWN的核心在於計算出量化閾值Δ,將數值大小處於閾值內的數據強置爲0,其他值依然強置爲-1或+1,對於閾值的計算,作者也給了論證,能夠最小三值化誤差所帶來的精度損失,還能夠使神經網絡權重稀疏化,減小計算複雜度的同時也能得到更好的準確率和泛化能力。在運行效率上,TWN與BWN相當,但是準確率卻有着明顯的提升。

    • 量化神經網絡(QNN)

      Song Han等人在量化神經網絡(QNN)方面做了大量研究工作。這一網絡的主要目的是裁剪掉數據的冗餘精度,原本32位精度的浮點數由“1 8 23”的結構構成,裁剪的方法是根據預訓練得到的全精度神經網絡模型中的數據分佈,分別對階碼和位數的長度進行適當的減少。實驗證明,對於大部分的任務來說,6位比特或者8位比特的數據已經能夠保證足夠好的測試準確率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章