深度學(xué)習(xí)模型壓縮方法的特點總結(jié)和對比
不管你是計算機視覺新手還是專家,你可能聽說過 AlexNet 于2012年贏得了ImageNet挑戰(zhàn)賽。這是計算機視覺發(fā)展史上的轉(zhuǎn)折點,因為它表明,深度學(xué)習(xí)模型能夠以前所未有的精度完成非常困難的任務(wù)。
但是你是否知道 AlexNet有6.2千萬訓(xùn)練參數(shù)?
另一個廣為人知的模型 VGGNet 則有1.38億訓(xùn)練參數(shù),是AlexNet 的兩倍之多。
我們知道,模型層數(shù)越多,那么表現(xiàn)的性能越好,那么是否需要關(guān)注和強調(diào)參數(shù)的數(shù)量呢?
上述模型在機器視覺領(lǐng)域已經(jīng)是基準了。但是在現(xiàn)實生產(chǎn)場景中,是否會被人們選擇部署呢?你是否在實際應(yīng)用中使用這些模型?
在回答上述問題之前,我們先了解如下背景知識。 物聯(lián)網(wǎng)裝備預(yù)測在2030年將達到1.25-5千億臺套的規(guī)模,并且其中20%都帶有攝像頭,這是一個130億的市場。
物聯(lián)網(wǎng)攝像頭設(shè)備包括家庭安全攝像頭(如Amazon Ring和Google Nest),當您到家時會打開門或在看到未知的人時通知您,智能車輛上的攝像頭可幫助您駕駛,停車場的攝像頭在您進出時打開大門,物聯(lián)網(wǎng)攝像頭設(shè)備的應(yīng)用場景十分廣泛!其中一些物聯(lián)網(wǎng)設(shè)備已經(jīng)在某種程度上使用人工智能,而其他設(shè)備正在慢慢趕上。
許多現(xiàn)實場景的應(yīng)用程序需要實時的設(shè)備處理能力。自動駕駛汽車就是一個很好的例子。為了使汽車在任何道路上安全行駛,它們必須實時觀察道路,如果有人走在汽車前面,必須停車。在這種情況下,需要在設(shè)備上實時地處理視覺信息和做出決策。
那么,現(xiàn)在回到之前的問題:我們能否使用前述模型部署到生活場景中?
如果你從事的是計算機視覺領(lǐng)域應(yīng)用和研究,你的應(yīng)用程序很可能需要物聯(lián)網(wǎng)設(shè)備。 主要的挑戰(zhàn)是物聯(lián)網(wǎng)設(shè)備資源受限;它們的內(nèi)存有限,計算能力低。而模型中可訓(xùn)練的參數(shù)越多,其規(guī)模就越大。深度學(xué)習(xí)模型的計算時間隨著可訓(xùn)練參數(shù)個數(shù)的增加而增加。此外,與較少參數(shù)的模型相比,所消耗的能量和占用的空間也越大。最終的結(jié)果是,當模型很大時,深度學(xué)習(xí)模型很難在資源受限的設(shè)備上部署。雖然這些模型已經(jīng)成功地在實驗室中取得了巨大的成果,但它們在許多實際應(yīng)用中并不可用。
在實驗室,通過昂貴的GPU可以實現(xiàn)模型的高效計算,但是在生產(chǎn)場景中,資金、能源、溫度等問題使得GPU的計算方式行不通。 盡管將這些模型部署在云端能夠提供高計算性能和存儲使用性,但是卻存在高時延的問題,因此不能滿足現(xiàn)實應(yīng)用的需求。
簡而言之,人工智能需要在靠近數(shù)據(jù)源的地方進行處理,最好是在物聯(lián)網(wǎng)設(shè)備本身進行處理!因此,我們可供選擇之一就是:減少模型的規(guī)模。
在不影響準確性的前提下,制作一個能在邊緣設(shè)備約束下運行的更小的模型是一個關(guān)鍵的挑戰(zhàn)。因為僅僅擁有一個可以在資源受限的設(shè)備上運行的小模型是不夠的,它應(yīng)該無論是在準確性和計算速度方面都具有很好的性能。
接下來將介紹幾種降低模型規(guī)模的方法。
修剪通過刪除對性能不敏感的冗余、不重要的連接來減少參數(shù)的數(shù)量。這不僅有助于減小整個模型的大小,而且節(jié)省了計算時間和能耗。
好處
· 可以在訓(xùn)練時和訓(xùn)練后執(zhí)行該操作
· 可以改善給定模型的計算時間/模型規(guī)模
· 既可以用于卷積網(wǎng)絡(luò),也可以用于全連接層
不足
· 相較于直接修改模型結(jié)構(gòu),剪枝的效果稍遜一籌
· 對于 TensorFlow模型,往往只能減小模型規(guī)模,但是不能降低計算時間
在DNN中,權(quán)重存儲為32位浮點數(shù)字。量化是通過減少比特數(shù)來表示這些權(quán)重的思想。權(quán)重可以量化為16位、8位、4位甚至1位。通過減少使用的比特數(shù),深度神經(jīng)網(wǎng)絡(luò)的規(guī)??梢燥@著減小。
好處
· 可以在訓(xùn)練時和訓(xùn)練后執(zhí)行該操作
· 既可以用于卷積網(wǎng)絡(luò),也可以用于全連接層
不足
· 量化權(quán)值使得神經(jīng)網(wǎng)絡(luò)更難收斂。為了保證網(wǎng)絡(luò)具有良好的性能,需要較小的學(xué)習(xí)速率
· 量化權(quán)重使得反向傳播不可行,因為梯度不能通過離散神經(jīng)元反向傳播。需要使用近似方法來估計損失函數(shù)相對于離散神經(jīng)元輸入的梯度
· TensorFlow的量化感知訓(xùn)練在訓(xùn)練過程中不做任何量化。訓(xùn)練期間只收集統(tǒng)計數(shù)據(jù),用于量化訓(xùn)練后的數(shù)據(jù)。
在知識蒸餾中,一個大型的、復(fù)雜的模型是在一個大型數(shù)據(jù)集上訓(xùn)練的。當這個大的模型能夠?qū)床灰姷臄?shù)據(jù)進行泛化并表現(xiàn)良好時,它就被傳輸?shù)揭粋€較小的網(wǎng)絡(luò)中。較大的網(wǎng)絡(luò)模型也稱為教師模型,較小的網(wǎng)絡(luò)也稱為學(xué)生網(wǎng)絡(luò)。
好處
· 如果你有一個預(yù)先訓(xùn)練好的教師網(wǎng)絡(luò),訓(xùn)練較小的(學(xué)生)網(wǎng)絡(luò)所需的訓(xùn)練數(shù)據(jù)較少。
· 如果你有一個預(yù)先訓(xùn)練好的教師網(wǎng)絡(luò),訓(xùn)練較小的(學(xué)生)網(wǎng)絡(luò)所需的時間很短。
· 可以縮小一個網(wǎng)絡(luò)而不管教師和學(xué)生網(wǎng)絡(luò)之間的結(jié)構(gòu)差異。
不足
· 如果沒有預(yù)先選練好的教師模型,那么訓(xùn)練學(xué)生模型將需要大規(guī)模的數(shù)據(jù)集和較長時間。
選擇性注意是指把注意力集中在感興趣的對象或元素上,而拋棄其他對象(通常是背景或其他與任務(wù)無關(guān)的對象)。它的靈感來自人眼生物學(xué)機制。當我們看東西的時候,我們一次只關(guān)注一個或幾個物體,其他的區(qū)域就會模糊。
這就需要在你現(xiàn)有的人工智能系統(tǒng)上添加一個選擇性的注意力網(wǎng)絡(luò)。
好處
· 更短的計算時間
· 規(guī)模更小的模型(通過這一方法生成的人臉識別器只有44KB大?。?/span>
· 精度保障
不足
· 只支持從頭開始的訓(xùn)練
利用矩陣/張量分解來估計信息參數(shù)。一個(m,n)維且秩為r的權(quán)矩陣A被更小維的矩陣代替。這種技術(shù)有助于將大矩陣分解成更小的矩陣。
好處
· 可被用于訓(xùn)練階段和訓(xùn)練后
· 可被用于卷積網(wǎng)絡(luò),也可用于全連接層
· 用于訓(xùn)練階段時,可以降低訓(xùn)練時間
最棒的是,所有這些技術(shù)是相輔相成的。它們可以按原樣應(yīng)用,也可以與一種或多種技術(shù)相結(jié)合。通過使用剪枝、量化和Huffman編碼三級流水線來減小預(yù)訓(xùn)練模型的大小,在ImageNet數(shù)據(jù)集上訓(xùn)練的VGG16模型從550MB降到了11.3MB。
上面討論的大多數(shù)技術(shù)都可以應(yīng)用于預(yù)先訓(xùn)練的模型,作為后處理步驟,可以減小模型大小并提高計算速度。但它們也可以在訓(xùn)練期間使用。量化越來越受歡迎,現(xiàn)在已經(jīng)被引入機器學(xué)習(xí)框架。我們可以預(yù)期修剪很快也會被引入流行的框架中。
在本文中,我們研究了將基于深度學(xué)習(xí)的模型部署到資源受限設(shè)備(如物聯(lián)網(wǎng)設(shè)備)的動機,以及減小模型大小以使其適應(yīng)物聯(lián)網(wǎng)設(shè)備而不影響準確性的需求。我們還討論了一些現(xiàn)代技術(shù)壓縮深度學(xué)習(xí)模型的利弊。最后,我們談到了每一種技術(shù)可以單獨應(yīng)用,也可以組合使用。
作者:Sabina Pokhrel
deephub翻譯組 Oliver Lee
寬泛科技專注為人工智能、邊緣計算、影視后期、動漫設(shè)計、商務(wù)應(yīng)用等領(lǐng)域,
提供基于人臉識別、深度學(xué)習(xí)、視覺計算、VR/AR/MR、桌面虛擬化、
數(shù)據(jù)存儲及數(shù)據(jù)可視化、視訊會議等信息化解決方案及服務(wù)。
如果您有合作需求或?qū)氋F建議,歡迎來信。
郵箱:hezuo@kuanfans.com
合作熱線:(021) 5415 5559