日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

内存中有两个4字节以压缩的bcd_卷积神经网络的压缩与加速 -- 剪枝(PRUNING)论文(二)...

發布時間:2024/10/8 卷积神经网络 178 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内存中有两个4字节以压缩的bcd_卷积神经网络的压缩与加速 -- 剪枝(PRUNING)论文(二)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Learning Efficient Convolutional Networks through Network Slimming

Abstract:

講道理 它這個摘要寫得好霸氣。。太猛了
這個方法它可以同時做到以下三件事:
1. 減小模型大小
2. 減小運行時的內存占用
3. 在犧牲一點點精度的情況下大幅減少計算
能做到以上這些事情的其他方法也有,但是其他方法或需要特殊的硬件,或需要額外的訓練開銷,但是這個方法都沒有!
那么它是怎么做到呢?簡單來說,就是拿一個大型網絡(如resent105),往里面搞點東西,然后拿去訓練,在訓練的過程中自動的把那些額外的channel刪掉,進而得到一個比較精簡的模型。
效果也是很不錯的:模型大小是原來的1/20,操作數是原來的1/5。

Motivation

1. 現有方法并不能解決所有問題(就是摘要里說的1. 減小模型大小;2. 減小運行時的內存占用;3. 在犧牲一點點精度的情況下大幅減少計算);
2. 現有的很多方法需要額外的軟/硬件加持,比如針對權重剪枝的壓縮方法顯然不適用于常見的加速矩陣運算的GPU。

Method

文章先拋出一些比較常見的壓縮方法:

這個方法之前想過,就是利用SVD來對權重矩陣進行降維,進而達到壓縮模型的作用。
這個方法的優點很明顯,那就是夠簡單(畢竟連我都想得到。。。。),缺點就是只能針對全鏈接起作用(因為全鏈接才可以把權重寫成矩陣的形式),而在處理CV的大型網絡中,最占存儲和最耗費計算資源的其實是CNN,所以整體效果并不明顯。

這個應該怎么翻譯呢。。。權重分桶?可能吧.. 其實這個方法也挺有趣的,就是把各個權重進行聚類,然后使用聚類中心代替當前權重。然后再用一個表來存儲一個字節數較小的數和聚類中心之間的映射關系,然后再用這些字節數較小的數放到權重中。(講得有點繞,但是很簡單就對了)
優點:很明顯,在存儲的時候壓縮效果特別好。試想,從double變成int8, 減少了這么多倍。
缺點:也很明顯,就是:
1. 并不能減少推理時候的內存消耗和時間加速,因為你需要把你映射出來的float32/float64放到內存中,需要該用多少還是用多少;
2.準確率損失絕對大。試想,如果使用uint8來存儲,那就只能有256個聚類中心,但是一個channel的大小可能是512*512,那平均每個聚類中心就有1024個數值了,這個準確率絕對會受到很大的影響。但是如果你使用int16或者int32來存儲的話,那精度的確會上升,但是這個時候,你的壓縮效果就絕對沒那么高了。

這個是權重剪枝,就是把一些不重要的權重置0/刪除。
優點:我覺得沒有優點。。。
缺點:做權重剪枝有兩個辦法,一個是把不重要的權重置0,一個是把不重要的權重刪掉。如果你把不重要的權重置0,看起來好像是ok的,但是你0也是個數值,所以不管是在外存還是內存中,該占用的內存還是占用了。而對于第二個處理方式(把不重要的權重刪掉),首先不說主流的框架不支持,主要是主流的硬件也不支持。因為深度學習采用GPU的原因正是因為GPU使用矩陣運行來加速我們的訓練,而把不重要的參數刪掉之后,那這個矩陣就出現了空洞,這時候就沒辦法用矩陣運算了。

基于結構的剪枝。paper中說道,我們的方法也是屬于這個范疇,但是他說其他的一些結構化剪枝沒有咱們文中這個絲滑(我還沒看他對比的那幾篇paper,姑且就相信他吧)。
優點:這種基于結構化的剪枝不需要軟/硬件加速,因為沒有破壞矩陣運算的結構,但是我覺得本質原因是結構化剪枝是得到一個小規模的正常的網絡,所以它和其他網絡并沒有區別。
缺點:作者說說這篇paper提出的方法更加絲滑。

這個我不懂了,沒接觸過,不過按照paper中的描述,應該有點像AutoML。

Detail

用簡單的一句話概括就是:將L1正則化從權重擴展到channel。
其實這個也解決了我之前的一個問題:我之前用L1來normalize網絡中的權重,然后將權重刪掉雖然可行,但是就陷入了前面所說的,基于權重剪枝的問題。那我如何把L1的作用水平從weight到更高呢?
在這里,他就把損失函數定義成 , 其中g(*)就是平滑L1正則。那么雖然L逐漸被優化,絕大多數的 都變成了0,這時候我們再看另外一個公式 :當絕大多數變成0的時候,很多的channel也變成了0,那就可以把他們刪除掉了。
一開始我是有點疑惑,為什么 為0的channel正好就會是不重要的,然后我發現了 是和 有關的,那就懂了,這就變成了一個優化問題了。

然后這篇paper中有提到一個trick也是不錯的:就是使用smooth L1正則化來代替L1正則化。

這篇也給了一些啟示,或許從L2出發思考也會有其他的不錯的方案。

總結

以上是生活随笔為你收集整理的内存中有两个4字节以压缩的bcd_卷积神经网络的压缩与加速 -- 剪枝(PRUNING)论文(二)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。