[研究分享] 深度學習網路壓縮



分層補償剪枝 (LcP) 後模型準確性 (y-axis) 以及運算資源 (x-axis)

分享一下我在 Microsoft Research 做的暑期專案,雖然是技術文章,但我盡量用科普的角度來敘述我的研究方向。我目前博士班的方向也大致上是深度網路模型壓縮。

深度類神經網路 (Deep Neural Networks)

簡單來說呢,深度學習在做的事情,就是學習把某些輸入變成某些輸出,什麼意思呢?常用的例子就是我今天有好多圖片(輸入),我想要我的電腦學會看到這些圖片知道裡面是狗還是貓(輸出)。深度學習就是透過演算法來訓練深度類神經網路,讓這個網路能夠正確的學會輸入跟輸出的關係。而深度類神經網路呢,就是有很多層相互連結運算的一種模型 (很簡略地介紹,有興趣的話 Google 能夠提供非常多資料)。

目前深度學習的發展,已經讓許多困難的問題都有突破性的進展,比如說物件偵測 (Object Detection), 語音識別 (Speech Recognition), 以及機器翻譯 (Machine Translation)。深度學習也因此造就了許多應用,比如說圖像風格轉移 (Style Transfer) 能夠輕易的把圖片換成另一種畫風但不改主要的內容。

模型壓縮 (Model Compression)

前面提到了 DeepNets 的好處,但 DeepNets 是一個有數百萬計個參數的模型,也就是說,實際上把它放在電腦裡,他會使用大量的記憶體以及存儲。再者,每次從輸入到輸出,DeepNets 都需要使用大量的 (10⁹) 浮點數運算,因此很耗時也很耗能。所以模型壓縮做的事情就是希望降低 DeepNets 所需要消耗的硬體資源但卻不降低它學習的能力,假設原本它能辨識圖片是一千個類別中的哪一類,且準確率 80%,我們希望模型壓縮完後,這件事情是不變的,但是縮需要的硬體需求大幅降低。這樣的好處有很多,其中一個就是能夠將這樣的模型放到硬體資源少的機器上,像是手機或是智慧型家電等等。

實際應用情境可能是怎樣呢?假設有個手機 App 使用了 DeepNets 來做圖片的美化,若不做網路壓縮,一種解決方案便是把圖片傳到這 App 的雲端伺服器,運算完後,把修完的圖送回手機呈現。這種方案的首要問題便是隱私的問題,若是能夠把網路壓縮,圖片便可以不用傳到雲端上也能夠使用到 DeepNets 的功能。

現在我們知道這項技術的用處了,但實際上我們怎麼做壓縮呢?一個方法便是做網路剪枝 (Pruning)。也就是說,雖然 DeepNets 有百萬計的連結,但不代表每個連結都很重要,我們也許能夠刪掉一些連結,還能夠保有 DeepNets 原有的功能。但是我們怎麼知道哪一層要剪枝哪一些運算節點呢?這其實是個困難的問題。

MIT 跟 Google 今年在一個計算機視覺的頂會 (ECCV 2018) 上發表了一篇論文 [1],透過學習來學習 DeepNets 如何剪枝(哪一層,剪哪些)。這樣一來,不論對於 DeepNets 的架構熟不熟悉,任何人都能夠對 DeepNets 做剪枝,因為怎麼剪枝也是靠電腦透過資料去學習的。

分層補償剪枝 (Layer-compensated Pruning)

說到這裡,我終於要說我暑期實習所做的專案了。實際上我們做的事情呢,便是把剪枝當成了一個優化的問題,然後在這優化問題的框架下,逐步做一些假設來簡化這個問題。這樣一來,我們也能夠去了解以前的剪枝方法在這個框架底下做了哪些假設。我們便發現,其實某些假設並不對,且會造就很大的誤差。因此呢,我們便提出了一個演算法,嘗試補償這些誤差。由於這演算法是每個層數補償一個可學習的誤差,我們稱它為分層補償剪枝 (Layer-compensated Pruning)。

而我們提出的演算法呢,從另一個角度來看,跟 [1] 做的事情挺像的,就是透過資料學習每一層該剪枝哪一些運算節點。但實際比較起來呢,我們的方法能夠將學習剪枝這件事情所花的時間大幅降低 (相差8倍)且能讓剪枝完模型保有很好的準確性。

實際上的細節,有興趣的人可以在 arXiv 上找到我們的論文(https://arxiv.org/abs/1810.00518)。

結語

模型壓縮是把深度學習帶入產品化的一個重要的技術,除了剪枝以外,當然還有許多其他種方法。不過目前這方面的研究都有一個趨勢,便是希望透過資料學習如何壓縮(AutoML),而不是透過人設計一些規則來決定如何壓縮。

Reference

[1] He, Yihui, et al. “Amc: Automl for model compression and acceleration on mobile devices.” Proceedings of the European Conference on Computer Vision (ECCV). 2018.

Source: Deep Learning on Medium