把CNN裡乘法全部去掉會怎樣?華為提出移動端部署神經網絡新方法

2020-12-08 機器之心Pro

選自arXiv

作者:Mostafa Elhoushi 等機器之心編譯參與:魔王、杜偉

前不久,機器之心報導過北大、華為諾亞等合著的一篇論文,探討了不用乘法用加法能不能做深度學習。最近,我們又看到華為的另一篇論文,這一次沒有用加法替代乘法,而是用「按位移位」和「按位取反」來取代乘法運算。

深度學習模型,尤其是深度卷積神經網絡(DCNN),在多個計算機視覺應用中獲得很高的準確率。但是,在移動環境中部署時,高昂的計算成本和巨大的耗電量成為主要瓶頸。而大量使用乘法的卷積層和全連接層正是計算成本的主要貢獻者。論文連結:https://arxiv.org/pdf/1905.13298.pdf華為的這篇論文提出了解決該問題的新方法,即引入兩種新型運算:卷積移位(convolutional shift)和全連接移位(fully-connected shift),從而用按位移位(bitwise shift)和按位取反(bitwise negation)來取代乘法。使用了卷積移位和全連接移位的神經網絡架構族即 DeepShift 模型。DeepShift 模型可以在不使用乘法的情況下實現,且在 CIFAR10 數據集上獲得了高達 93.6% 的準確率,在 ImageNet 數據集上獲得了 70.9%/90.13% 的 Top-1/Top-5 準確率。研究者將多種著名 CNN 架構的卷積層和全連接層分別進行卷積移位和全連接移位轉換,並進行了大量實驗。實驗結果表明,有些模型的 Top-1 準確率下降程度低於 4%,Top-5 準確率下降程度低於 1.5%。所有實驗均使用 PyTorch 框架完成,訓練和運行代碼也已經發布。代碼地址:https://github.com/mostafaelhoushi/DeepShift引言越來越多的深度神經網絡針對移動和 IoT 應用而開發。邊緣設備通常電量和價格預算較低,且內存有限。此外,內存和計算之間的通信量在 CNN 的電量需求中也佔主要地位。如果設備和雲之間的通信成為必要(如在模型更新等情況下),那麼模型大小將影響連接成本。因此,對於移動/IoT 推斷應用而言,模型優化、模型規模縮小、加速推斷和降低能耗是重要的研究領域。目前已有多種方法可以解決這一需求,這些方法可分為三類:

第一類方法是從頭開始構建高效模型,從而得到新型網絡架構,但要找出最適合的架構需要嘗試多個架構變體,而這需要大量訓練資源;

第二類方法是從大模型開始。由於網絡中存在一些冗餘參數,這些參數對輸出沒有太大貢獻,因而我們可以基於參數對輸出的貢獻程度對它們進行排序。然後修剪掉排序較低的參數,這不會對準確率造成太大影響。參數排序可以按照神經元權重的 L1/L2 均值(即平均激活)進行,或者按照非零神經元在某個驗證集上的比例進行。剪枝完成後,模型準確率會下降,因此需要進一步執行模型訓練來恢復準確率。一次性修剪太多參數可能導致輸出準確率大幅下降,因此在實踐中,通常迭代地使用「剪枝-重新訓練」這一循環來執行剪枝操作。這可以降低模型大小,並加快速度;

第三類方法是從大模型開始,然後用量化技術來縮減模型大小。在一些案例中,量化後的模型被重新訓練,以恢復部分準確率。

這些方法的重要魅力在於:它們可以輕鬆應用於多種網絡,不僅能夠縮減模型大小,還能降低在底層硬體上所需的複雜計算單元數量。這帶來了更小的模型佔用、更少的工作記憶(和緩存)、在支持平臺上的更快計算,以及更低的能耗。此外,一些優化技術用二值 XNOR 運算來替代乘法。此類技術在小型數據集(如 MNIST 或 CIFAR10)上可能有較高的準確率,但在複雜數據集(如 ImageNet)上準確率會嚴重下降。華為的這篇論文提出兩種新型運算——卷積移位和全連接移位,用按位移位和按位取反來取代乘法,從而降低 CNN 的計算成本和能耗。這一神經網絡架構族即為 DeepShift 模型。該方法主要使用 2 的冪或按位移位從頭開始執行 one-shot 訓練,或者對預訓練模型進行轉換。DeepShift 網絡

圖 1:(a) 原始線性算子 vs 本研究提出的移位線性算子;(b) 原始卷積算子 vs 本研究提出的移位卷積算子。如上圖 1 所示,本論文的主要概念是用按位移位和按位取反來替代乘法運算。如果輸入數字的底層二進位表示 A 是整數或固定點形式,則向左(或向右)按位移動 s 位在數學層面上等同於乘以 2 的正(負)指數冪:

按位移位僅等同於乘以正數,因為對於任意 s 值,都有 2_±s > 0。但在神經網絡訓練過程中,搜索空間中必須存在乘以負數的情況,尤其是在卷積神經網絡中,其濾波器的正負值可用於檢測邊。因此,我們還需要使用取反運算,即:

與按位移位類似,取反運算的計算成本較低,因為它只需要對數字返回 2 的補碼。下文將介紹該研究提出的新型算子 LinearShift 和 ConvShift,它們用按位移位和取反取代了乘法:

其中 s 是移位值,n 是取反值。在經典的 CPU 架構中,按位移位和按位取反僅使用 1 個時鐘周期,而浮點乘法可能需要 10 個時鐘周期。LinearShift 算子

其中輸入 x 可表示為矩陣 B × m_in,輸出 y 可表示為矩陣 B × m_out,W 是可訓練權重矩陣 m_in × m_out,b 是可訓練偏置向量 m_out × 1。B 是批大小,m_in 是輸入特徵大小,m_out 是輸出特徵大小。該線性算子的反向傳播可表達為:

其中 L/y 是運算的梯度輸入(運算輸出的模型損失 L 的導數),L/x 是運算的梯度輸出(運算輸入的模型損失的導數),L/W 是運算權重的模型損失的導數。本論文提出該移位線性算子,在其前向傳播中用按位移位和取反替代了矩陣乘法。其前向傳播可定義為:

其中 N 是取反矩陣,S 是移位值矩陣,· 表示這兩個矩陣的對應元素乘法。B 和 S 的大小是 m_in × m_out,b 是偏置向量,類似於原始線性算子。S、N 和 b 都是可訓練的參數。為了幫助推導後向傳播,研究者使用項 V = (1)^round(N) ˙ (2)^round(S),得到:

注意,反向傳播導致 -1 和 2 的冪存在非整數值。但是,在前向傳播中,它們被四捨五入,以實現按位取反和移位。ConvShift 算子原始卷積算子的前向傳播可表達為:

其中 W 的維度是 c_out × c_in × h × w,其中 c_in 是輸入通道大小,c_out 是輸出通道大小,h 和 w 分別是卷積濾波器的高和寬。LeCun 等 [1999] 將卷積的反向傳播表示為:

類似地,本研究提出的卷積移位(即 ConvShift)算子的前向傳播可表示為:

其中 N 和 S 分別表示取反和移位矩陣,維度為 c_out × c_in × h × w。類似地,為了推導反向傳播,研究者使用項 V = (1)^round(N) ˙ (2)^round(S),得到:

基準測試結果研究者在 3 個數據集上測試了模型的訓練和推斷結果:MNIST、CIFAR10 和 ImageNet 數據集。MNIST 數據集下表 1 展示了模型在 MNIST 驗證集上的準確率。我們可以看到,從頭訓練得到的 DeepShift 模型的準確率下降程度超過 13%,不過僅轉換預訓練權重得到的 DeepShift 版本準確率下降程度較小,而基於轉換權重進行後續訓練則使驗證準確率有所提升,甚至超過了原版模型的準確率。

CIFAR10 數據集下表 2 展示了模型在 CIFAR10 驗證集上的評估結果。我們注意到從頭訓練得到的 DeepShift 版本出現了嚴重的準確率下降,而基於轉換預訓練權重訓練得到的 DeepShift 模型準確率下降幅度較小(不到 2%)。值得注意的是,對於未經進一步訓練的轉換權重,寬度更大、複雜度更高的模型取得的結果優於低複雜度模型。這或許可以解釋為,模型複雜度的提升補償了運算被轉換為 ConvShift 或 LinearShift 導致的精度下降。

ImageNet 數據集下表 3 展示了模型在 ImageNet 數據集上的結果,我們從中可以看到不同的模型結果迥異。最好的性能結果來自 ResNet152,其 Top-1 和 Top-5 準確率分別是 75.56% 和 92.75%。值得注意的是,由於時間限制,一些模型僅訓練了 4 個 epoch。進行更多訓練 epoch 可能帶來更高的準確率。

複雜度較高的模型被準換為 DeepShift 後,結果通常更好。MobileNetv2 等「難纏」模型在移除所有乘法運算後準確率僅降低了約 6%。與其他加速方法(如 XNOR 網絡、量化或剪枝)相比,這無疑是巨大的優勢,這些方法對 MobileNet 的優化帶來負面效果。然而,其他「難纏」網絡(如 SqueezeNet)的準確率則出現了大幅下降。為什麼 MobileNetv2 的權重被轉換後,在未經後續訓練的情況下準確率幾乎為 0?而在訓練幾個 epoch 後,Top-5 準確率竟然超過 84%?這一點還有待分析。

相關焦點

  • 把CNN裡的乘法全部去掉會怎樣?華為提出移動端部署神經網絡新方法
    最近,我們又看到華為的另一篇論文,這一次沒有用加法替代乘法,而是用「按位移位」和「按位取反」來取代乘法運算。 但是,在移動環境中部署時,高昂的計算成本和巨大的耗電量成為主要瓶頸。而大量使用乘法的卷積層和全連接層正是計算成本的主要貢獻者。
  • 只有加法也能做深度學習,北大華為等提出AdderNet,性能不輸CNN
    現在的深度學習在很大程度上依賴於GPU硬體,做大量的乘法運算,限制了它在行動裝置上的應用,需要一種更高效的方法。如果能夠拋棄乘法運算,是不是會讓代碼運行速度更快呢?來自北京大學、華為諾亞方舟實驗室、鵬城實驗室的研究人員提出了一種加法器網絡AdderNet,去掉卷積乘法,並設計一種新的反向傳播算法,結果也能訓練神經網絡。而且實驗結果證明了,這種方法在MNIST、CIFAR-10、SVHN上已經接近傳統CNN的SOTA結果。
  • MIT學神開源微分太極;北大等提出沒有乘法的神經網絡
    機器之心機器之心&ArXiv Weekly Radiostation參與:杜偉、楚航、羅若天本周的重要論文有 MIT 學神胡淵鳴等開源的自動微分版太極以及北大、華為諾亞方舟實驗室等主張以加法運算代替深度神經網絡中的乘法運算
  • 7 Papers|MIT學神開源微分太極;北大等提出沒有乘法的神經網絡
    機器之心&ArXiv Weekly Radiostation參與:杜偉、楚航、羅若天本周的重要論文有 MIT 學神胡淵鳴等開源的自動微分版太極以及北大、華為諾亞方舟實驗室等主張以加法運算代替深度神經網絡中的乘法運算。
  • 華為開源只用加法的神經網絡:實習生領銜打造,效果不輸傳統CNN
    曉查 發自 凹非寺量子位 報導 | 公眾號 QbitAI沒有乘法的神經網絡,你敢想像嗎?無論是單個神經元的運算還是卷積運算,都不可避免地要使用乘法。然而乘法對硬體資源的消耗遠大於加法。如果不用乘法,全部改用加法應該可以讓運算速度大大提升。去年年底,來自北京大學、華為諾亞方舟實驗室、鵬城實驗室的研究人員將這一想法付諸實踐,他們提出了一種只用加法的神經網絡AdderNet(加法器網絡)。一作是華為諾亞方舟實習生,正在北大讀博三。
  • 效果比肩CNN| 華為諾亞方舟實驗室提出加法神經網絡蒸餾技術
    論文連結:https://arxiv.org/pdf/2009.13044.pdf研究背景深度卷積神經網絡(CNN)被廣泛應用於諸多計算機視覺領域的實際任務中(例如,圖片分類、物體檢測、語義分割等)。然而,為了保證性能,神經網絡通常是過參數化的,因此會存在大量的冗餘參數。
  • ICLR oral:清華提出離散化架構WAGE,神經網絡訓練推理合二為一
    迄今為止,這是中國作為第一署名單位裡唯一一篇被 ICLR 會議收錄的口頭報告文章。該報告主要探討如何實現對全離散化深度神經網絡進行訓練和推理,便於部署到嵌入式設備中。 論文地址:https://openreview.net/forum?
  • NeurIPS 2020線上分享 | 華為諾亞方舟:超越CNN的加法神經網絡
    目前出現了多種獲得高計算能效深度神經網絡的算法,如從準確度損失極少的預訓練神經網絡中刪除不重要參數或濾波器的權重剪枝方法,以及通過模仿教師模型輸出分布來直接學習學生模型的知識蒸餾方法。另一個獲得高效神經網絡的研究途徑是減少權重和激活值的位寬以降低內存使用和功耗。這類方法有很多,也可以大幅度降低計算複雜度,但生成網絡的性能依然低於 CNN 方法。
  • ISCA2016:體系結構頂級會議CNN走紅,神經網絡論文奪桂冠
    ISCA會議還有一個名人堂(ISCA Hall of Fame), 列出了1973年以來在ISCA上發表超過8篇論文的作者名單,包括近80名研究人員,目前華裔研究人員極少。但根據近10年的趨勢,可以預計不遠的將來會有更多華人上榜。華為派出了近40名研究人員參加這次大會,包括華為香農實驗室和華為中央硬體院的高層領導,表現出華為對跟蹤業界趨勢和提升創新能力的決心。
  • ResNeXt:何愷明 Facebook 升級 ResNet,提出神經網絡新維度
    近期一些深度神經網絡模型的基本結構示意圖康奈爾大學的Serge Belongie團隊也有類似的觀察與發現,他們解釋ResNet其實是眾多相對較淺的潛在網絡的一個集成。我們可以看到ResNet在增加深度的同時,極大地增加了組合數目,這也是其性能優異的原因之一。我們繼續研究每一個基礎組合網絡,並且探索在深度融合的過程中其相互之間會產生怎樣的影響。對比每個網絡單獨分開訓練得到的模型,我們發現,深度融合網絡裡較深的組合網絡性能得到了提升,但較淺的組合網絡性能反而下降了。我們猜想在訓練過程中,由於淺層的網絡容易收斂,它們能夠幫助深層的網絡進行優化。
  • 華為發布IPTime解決方案 實現端到端IP移動傳送
    三大系列產品的推出,進一步完善了IPTime解決方案,突破了移動寬帶瓶頸,實現了端到端IP移動傳送。華為IPTime的移動傳送解決方案具備完整的產品組合,可通過光纖、微波、銅纜等各種資源,完成移動基站的靈活覆蓋,實現快速部署和快速業務發放,滿足寬帶業務從移動終端到承載網全程無阻塞。該方案整網支持1588V2,可實現高精度的時鐘同步,適應LTE的需求。
  • 華為深度學習新模型DeepShift:移位和求反代替乘法,成本大降
    【新智元導讀】深度學習模型,尤其是卷積神經網絡的計算成本問題主要是由於卷積層和全連接層中大量進行乘法運算造成的。華為異構實驗室的研究人員提出,用移位和求反運算代替乘法,可有效緩解計算成本過高的問題,同時精度與傳統模型差距很小。戳右邊連結上 新智元小程序 了解更多!
  • 騰訊聯合港中文提出新型神經網絡壓縮方法
    在行動裝置和許多在線應用中,實時性能好的輕量級模型是一大重要需求,而為了保證神經網絡的實時性,很多時候都有必要對模型進行壓縮;但與此同時,幾乎所有神經網絡模型壓縮算法都會在壓縮過程中減損原始模型的準確度。因此,在進行模型壓縮時,需要在實時性和準確性之間找到一個合適的平衡。
  • 典型的深度學習算法(一):卷積神經網絡(CNN)
    在深度學習領域中,已經驗證的典型成熟算法有卷積神經網絡(CNN)、循環神經網絡(RNN)、生成對抗網絡(GAN)、深度強化學習(DRL)等,下面企通查將帶領大家對典型的深度學習算法之一——卷積神經網絡(CNN)一探究竟。
  • 結合符號主義和DL:DeepMind提出端到端神經網絡架構PrediNet
    DeepMind 最近的一項研究將符號人工智慧和深度學習結合起來,提出了一種新型端到端神經網絡架構 PrediNet。符號主義和連接主義是人工智慧領域中的兩大流派。連接主義 (connectionism),又稱為仿生學派 (bionicsism) 或生理學派 (physiologism),其主要原理為神經網絡及神經網絡間的連接機制與學習算法。人工智慧發展早期,符號主義佔據主要地位。而 20 世紀 90 年代後連接主義發展迅猛,其代表方法是神經網絡,利用多層神經網絡的深度學習當然屬於連接主義。
  • 斯坦福學者造出機器鴿;港科大等提出學生情緒分析新系統
    針對這些問題,來自北航、愛奇藝等機構的研究者提出了耦合知識蒸餾的輕量級視頻顯著區域檢測方法。輕量級視頻顯著區域檢測的難點在於模型泛化能力不足,時域空域線索結合難,影響方法的檢測性能。 研究者提出了一種輕量級的網絡架構 UVA-Net,並利用耦合知識蒸餾的訓練方法提高視頻顯著區域檢測性能。
  • 港科大博士生侯璐:基於損失函數的神經網絡量化方法|分享總結
    雷鋒網AI科技評論按:神經網絡功能強大,但是其巨大的存儲和計算代價也使得它的使用特性,特別是在一些計算能力相對較弱的行動裝置上受到了很大的限制。為了解決這個問題, 最近有許多針對於神經網絡壓縮和加速的工作被提出, 例如神經網絡剪枝, 權重矩陣低秩分解,權重量化等。這次分享主要是針對於權重量化這一類方法。
  • 百度開源移動端深度學習框架mobile-deep-learning(MDL)
    業界其他案例網際網路行業在移動端應用神經網絡的案例已經越來越多。目前的流派主要有兩種,其一是完全在客戶端運行神經網絡,這種方式的優點顯而易見,那就是不需要經過網絡,如果能保證運行速度,用戶體驗會非常流暢。如果能保證移動端高效運行神經網絡,可以使用戶感覺不到加載過程。
  • 如何評價Sparse R-CNN,目標檢測未來會如何發展?
    我之前跟mentor討論,他堅信cnn上也能像detr一樣去掉nms,但是我就勸他說不用position encoding 這樣的東西,cnn這個平滑性好像必須有這麼個設計,之後的嘗試也完全走偏了,這個認知在dense anchor的基礎上也是對的,但是之後就往怎麼增加feature map高頻上做了,完全沒意識到dense anchor有什麼問題,當然也承認,認識到我也一點不敢想能做成
  • 7Papers|斯坦福學者造出機器鴿;港科大等提出學生情緒分析新系統
    針對這些問題,來自北航、愛奇藝等機構的研究者提出了耦合知識蒸餾的輕量級視頻顯著區域檢測方法。輕量級視頻顯著區域檢測的難點在於模型泛化能力不足,時域空域線索結合難,影響方法的檢測性能。研究者提出了一種輕量級的網絡架構 UVA-Net,並利用耦合知識蒸餾的訓練方法提高視頻顯著區域檢測性能。