国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于自適應(yīng)分層閾值判斷的神經(jīng)網(wǎng)絡(luò)模型壓縮

2022-01-14 03:02鄒國良陳金宇鄭宗生王振華
計算機工程 2022年1期
關(guān)鍵詞:斷點剪枝正則

盧 鵬,萬 瑩,鄒國良,陳金宇,鄭宗生,王振華

(上海海洋大學信息學院,上海 201306)

0 概述

卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一類包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),是深度學習的代表算法之一[1]。自深度卷積神經(jīng)網(wǎng)絡(luò)AlexNet[2]問世并在圖像分類領(lǐng)域取得優(yōu)異成績后,CNN 算法得到了廣泛應(yīng)用[3],如計算機視覺領(lǐng)域中的圖像分類、目標檢測、語義分割等。同時,在ImageNet 比賽帶來的分類挑戰(zhàn)影響下,CNN 技術(shù)在架構(gòu)深度方面獲得重大突破[4],優(yōu)秀模型已經(jīng)從8 層發(fā)展到100 層以上。此外,CNN 在人工智能、自然語言處理、故障診斷上也具有廣闊的應(yīng)用前景。

面對眾多挑戰(zhàn),研究者希望構(gòu)建出快速并且緊湊的CNN 網(wǎng)絡(luò)[5-6]。常見的方法有權(quán)值修剪[7-8]、低秩擴展[9]、量化、二值化[10]、動態(tài)分解等。HAN 等首先計算出參數(shù)權(quán)重,在不影響整體精度的情況下修剪小幅度的權(quán)值,然后再次訓練。但此方法并不能同時減少計算時間和參數(shù)量,因為刪除的大部分參數(shù)屬于全連接層,其在總體浮點運算中占比很小。如在VGG16 中,全連接層參數(shù)占據(jù)總數(shù)的90%,但在總體浮點運算中只占比1%。低秩擴展通過對網(wǎng)絡(luò)層的分解來降低計算成本,量化、二值化、動態(tài)分解則進行快速推理,都屬于直接學習方法。然而,關(guān)于CNN 模型加速和壓縮的研究成果[11],大多都只能單獨提升速度或存儲容量,較少有能夠同時解決這兩個問題的方法。另一個壓縮CNN 模型的方向是網(wǎng)絡(luò)稀疏化。稀疏化可以施加于不同層次的結(jié)構(gòu),這雖然加大了模型壓縮率,加快了推理速度,但重復(fù)次數(shù)多且需要特殊的軟件/硬件加速器來節(jié)省時間[10]。

本文在網(wǎng)絡(luò)正則化的基礎(chǔ)上,提出一種新的閾值判定方法,以去除網(wǎng)絡(luò)層中的冗余連接,減少分配給參數(shù)的存儲,從而減少計算成本。文獻[12]提出的網(wǎng)絡(luò)修剪方法使用了固定閾值,從全局進行一次網(wǎng)絡(luò)剪枝,而本文則提出自適應(yīng)動態(tài)剪枝算法,在預(yù)剪枝階段逐層自適應(yīng)地分出斷點,并采用斷點中的最小值作為閾值,針對每層不同的閾值標準進行剪裁。

1 相關(guān)工作

目前CNN 模型已經(jīng)在計算機視覺領(lǐng)域取得了長足的進步,但是因為在一般情況下,深層網(wǎng)絡(luò)比淺層網(wǎng)絡(luò)的效果更好,所以卷積神經(jīng)網(wǎng)絡(luò)參數(shù)巨大,并且計算卷積層和全連接層需要大量的浮點矩陣乘法,導致計算開銷也非常大,雖然有的網(wǎng)絡(luò)可以在GPU 上實時運行,但是如此龐大的規(guī)模使其無法直接應(yīng)用于手機等移動設(shè)備中。因此,深度學習模型的壓縮成為一個亟需解決的重要問題。

目前多數(shù)CNN 網(wǎng)絡(luò)結(jié)構(gòu)(如VGGNet、AlexNet、ResNet、DenseNet[13]等)在卷積層都會產(chǎn)生大量的計算成本,導致全連接層中包含大量的網(wǎng)絡(luò)參數(shù)。因此,很多加速壓縮研究都集中在卷積層和全連接層。

為降低計算成本,研究者提出了近似卷積運算,即將權(quán)矩陣表示為2 個較小的低秩乘積,如奇異值分解(SVD)[9],但因為CNN 中的計算操作主要來自卷積層,所以這種方法在全連接層的作用比卷積層更大。然而,實現(xiàn)低秩分解通常會比較困難,因為分解過程包括計算復(fù)雜度高的分解操作。另一個問題是當前的低秩分解方法是逐層進行的,不能進行全局的參數(shù)壓縮,因為不同的網(wǎng)絡(luò)層具備的信息也是不同的。

在基于權(quán)值量化的方法中,文獻[14]使用8 位定點整數(shù)來代替32 位浮點數(shù),文獻[15]提出將實值權(quán)值量化為二元/三元權(quán)值(限為{-1,1}或{-1,0,1}的權(quán)值),文獻[15]提出了量化卷積神經(jīng)網(wǎng)絡(luò),其量化權(quán)重并將計算轉(zhuǎn)換為卷積層中的內(nèi)積。但是,二值化網(wǎng)絡(luò)在處理大型CNN 時會使準確率明顯下降。目前的二值化方式大多采用簡易的矩陣近似策略,忽略了二值化對最終性能造成的影響。在權(quán)重剪枝方面,文獻[12]提出用小的權(quán)值來修剪不重要的連接,通過存儲稀疏格式的模型來減少存儲空間,但這些方法需要專用的稀疏矩陣運算庫甚至硬件才能實現(xiàn)加速。針對結(jié)構(gòu)化稀疏問題,文獻[16]提出一種結(jié)構(gòu)化稀疏學習(SSL)方法來稀疏化CNN 中不同層次的結(jié)構(gòu)(如過濾器、通道或?qū)樱墨I[17]在訓練時通過隨機去激活卷積層上的輸入-輸出通道連接來引入稀疏性,文獻[18]在訓練過程中施加了神經(jīng)元水平的稀疏性,使一些神經(jīng)元可以被修剪以獲得緊湊的網(wǎng)絡(luò)。上述方法都利用訓練過程中的群體稀疏化來獲得結(jié)構(gòu)化稀疏性,是針對神經(jīng)元或者通道而不是權(quán)重進行修剪,因此不需要太多專用庫來實現(xiàn)推理加速,本文所使用的精簡方法也屬于此類。此外,文獻[19]通過組合網(wǎng)絡(luò)修剪、加權(quán)量化和霍夫曼編碼來進一步減少存儲,文獻[20]提出動態(tài)網(wǎng)絡(luò)手術(shù),參考文獻[9]的方法動態(tài)修剪和拼接連接。

雖然已有很多經(jīng)典的CNN 模型[1,21-22],但也有一些自動學習網(wǎng)絡(luò)架構(gòu)的探索,如在給定資源預(yù)算的情況下引入網(wǎng)絡(luò)架構(gòu)搜索的子模塊/超模塊優(yōu)化[23]。還有一些研究[24]提出利用強化學習來自動學習神經(jīng)結(jié)構(gòu),這些方法的搜索空間非常大,需要訓練數(shù)百個模型來區(qū)分優(yōu)劣。雖然選擇僅限于每一層的寬度,但網(wǎng)絡(luò)剪枝也可以被視為一種架構(gòu)學習方法。

目前除了對BP 神經(jīng)網(wǎng)絡(luò)的研究外,還有針對非迭代神經(jīng)網(wǎng)絡(luò)的研究。文獻[25]提出一種通用的幾何變換模型,遵循了訓練和自我訓練原則,為廣泛的問題提供了有效的解決方案。文獻[26]提出了一種以線性多項式作為構(gòu)造公式求解多元線性回歸任務(wù)的新方法,能夠?qū)崿F(xiàn)快速識別同時又能保證高精度。這些方法也是壓縮中的重要分支。

在上述的各類方案中,不同層級的稀疏性有不同的特點,最粗的層級在修剪時不需要特殊的包來獲得推理加速,但其靈活性較差,有時會剪掉完整的層,并且只有當深度超過50 層時,去除層才有效果。而更細致的修建方式(如權(quán)重修剪)雖然具有較高的靈活性和通用性,但卻又需要特殊的軟件和硬件進行推理[22]。相比之下,居中的通道級別的修剪及通道級稀疏,在靈活性和易于實現(xiàn)之間實現(xiàn)了良好的折衷,其可應(yīng)用于經(jīng)典的CNN 網(wǎng)絡(luò),即將每個神經(jīng)元視為一個通道。

2 自適應(yīng)動態(tài)剪枝方法

本文設(shè)計一種自適應(yīng)方案來實現(xiàn)CNN 的通道級稀疏。稀疏性在不同的層級上有不同的級別,如層級、通道級、內(nèi)核級或重量級。最粗的層級稀疏不需要特殊的軟件或硬件來進行加速,但靈活性較差。最細的重量級稀疏雖然能提供最高的靈活性和通用性,卻通常需要特殊的軟件或硬件加速器。相比之下,通道級的稀疏性在靈活性和易于實現(xiàn)之間實現(xiàn)了很好的折衷,其可應(yīng)用于任何典型的CNN 或全連接網(wǎng)絡(luò)(將每個神經(jīng)元視為一個通道),得到的網(wǎng)絡(luò)本質(zhì)上是未修剪網(wǎng)絡(luò)的“精簡版”,可以在傳統(tǒng)的CNN 平臺上進行有效推理,從而達到壓縮的目的。在本節(jié)中將介紹如何利用批歸一化(Batch Normalization,BN)層的權(quán)重,通過自適應(yīng)分層閾值判斷算法來確定閾值,從而有效識別和刪除網(wǎng)絡(luò)中不重要的通道。剪枝過程如圖1 所示。首先將基線模型按文獻[14]的方法正則化,獲得正則化模型后,通過自適應(yīng)閾值判斷對正則化后的權(quán)重進行分類,以最小值作為閾值進行剪枝,移除不重要的權(quán)重。由淺到深,直至最后一層,最后對剪枝結(jié)束的模型繼續(xù)訓練,以提高精度。

圖1 剪枝流程Fig.1 Pruning process

2.1 正則化必要性分析

在之前的工作中,基線模型進行訓練后將再次進行正則化處理,這是用一種相對比較簡單的模型來擬合復(fù)雜數(shù)據(jù)。有一些正則化可以控制神經(jīng)網(wǎng)絡(luò)防止過擬合,如L1 正則化、L2 正則化[27]、ElasticNet回歸[28]、最大范數(shù)約束[29]、Dropout[30]等。在L1 正則化中,對每個權(quán)重w,將λ|w|添加到目標函數(shù)中,其中,λ是正則化強度;在L2 正則化中,對于網(wǎng)絡(luò)中的每個權(quán)重w,將1/2λw2添加到目標中,其中,λ同為正則化強度;但有時L1 回歸太過,過多特征被稀疏為0,而當L2 回歸正則化不夠,回歸系數(shù)衰減太慢時,ElasticNet 綜合回歸則會帶來更好的效果。ElasticNet 回歸綜合了L1 正則化項和L2 正則化項,其目標函數(shù)如下:

正則化后可以得到一個稀疏模型,表示只有少數(shù)特征對這個模型有貢獻,絕大部分特征是沒有貢獻的,或者貢獻微小的可以去掉,為了探究正則化后權(quán)重的作用,本文將文獻[12]中VGG16 基線模型與正則化后進行對比。如圖2 所示,正則化方法削弱了不重要的特征變量,減小了特征變量的數(shù)量級。

圖2 正則化前后第2 層通道權(quán)重的對比Fig.2 Comparison of channel weights of the second layer before and after regularization

通過將正則化項引入神經(jīng)網(wǎng)絡(luò)的代價函數(shù)中,可得到輸入數(shù)據(jù)的稀疏性特征表示。稀疏性特征可以防止過擬合,提高泛化能力,更好地解釋模型。如同從生物學的角度來說,人腦中的大量神經(jīng)元,當受到外界刺激(圖像或者聲音)時,只有少量的神經(jīng)元被激活,大部分神經(jīng)元處于抑制狀態(tài)。因此,正則化后的權(quán)重值全部減小,已有部分通道接近于0。此時再進行裁剪時,能夠得到更好的效果。表1 中數(shù)據(jù)顯示,采用文獻[12]中相同的剪枝方法,正則化前后的模型精度相近,但正則化前的剪枝率僅16%,正則化后的剪枝率可達70%,由此進一步證明了正則化的必要性。

表1 正則化前后在相同閾值下的剪枝率對比Table 1 Comparison of pruning rates under the same threshold before and after regularization %

雖然正則化能夠為剪枝帶來優(yōu)勢,但之前的剪枝方法中確定全局閾值需要經(jīng)過大量實驗以及經(jīng)驗,通過逐次比對后選取最優(yōu)閾值百分比,且無法知道具體的閾值。因此,本文在前期正則化的基礎(chǔ)上,提出自適應(yīng)分層閾值判斷算法,根據(jù)每層的權(quán)重分析對權(quán)重點進行分類,形成斷點后選取最小值,逐層修剪加權(quán)連接,這種方法可以更準確地對閾值進行判斷,在剪枝率與精度中達到最優(yōu)平衡,得到更高的精度,從而更好地進行網(wǎng)絡(luò)模型壓縮。

2.2 分層斷點判斷

在文獻[12]關(guān)于網(wǎng)絡(luò)修剪的工作中,采用固定的百分比作為閾值進行全局修剪。但是如果固定百分比太高,則會導致一開始就修剪了大量連接,導致性能急劇下降。相反,如果固定百分比太低,則壓縮比可能比期望的價值小很多。因此,需要大量實驗進行經(jīng)驗積累,才能確定最終閾值。為了解決這個問題,本文使用自適應(yīng)分層閾值判斷算法對BN 層尺度因子進行聚類分析。在眾多散亂的尺度因子值中,自適應(yīng)地找到分類簇點,再根據(jù)簇點確定最終閾值。這避免了單一的百分比方式去確定閾值,使得每層都將有其自適應(yīng)的具體閾值。

按照文獻[12]中的稀疏方法,利用BN 層的縮放因子,通過聯(lián)合計算后得到每層的尺度因子,并根據(jù)這些尺度因子計算每層的閾值進行剪枝。每一層的自適應(yīng)分層斷點算法描述和計算流程如下:

算法1自適應(yīng)分層斷點算法

1)在每層的尺度因子中,隨機選取一個中心點X,以半徑h為內(nèi)核,找出內(nèi)核內(nèi)的所有數(shù)據(jù)點,將這些點歸屬于一個聚類C,同時,在該聚類中記錄數(shù)據(jù)點出現(xiàn)的次數(shù)加1,再利用概率密度計算中心點到每個內(nèi)核數(shù)據(jù)點的核密度,即加權(quán)平均值。目標函數(shù)如下:

目標函數(shù)的梯度估計如下:

2)將這些向量相加,得到向量Mh(X),X將沿著Mh(X)的方向移動,移動距離為||Mh(X)||,即mh(X)=Mh(X)+X,然后重復(fù)迭代。在每一次迭代中,滑動窗口會移向密度較高的區(qū)域,將中心點移動到窗口內(nèi)的點的平均值,滑動窗口中的密度與它內(nèi)部的點的數(shù)量成比例。通過移向窗口中點的平均值,它將逐漸向更高的點密度方向移動,移動后的樣本點迭代如下:

將迭代過程中遇到的點都應(yīng)歸類與簇C。若收斂時當前簇C的中心與其他已存在的簇心距離過小,則會將其合并,數(shù)據(jù)點出現(xiàn)次數(shù)也對應(yīng)合并。再次重復(fù)上述步驟直到所有點都被標記。

最后根據(jù)對每個點的訪問頻率,將訪問頻率最高的點作為斷點。實際上,每一個樣本點都需要計算其均值,并根據(jù)計算出的均值進行移動,直到滿足終止條件,最終得到的數(shù)據(jù)點也就是該點的聚類中心點。針對不同的BN 層,會自動聚類出不同的斷點。

2.3 閾值判定

在聚類出斷點后,將其由小到大進行排序,由斷點確定具體閾值。若選取的斷點數(shù)值越大,剪枝率將越高。由于權(quán)重越小,重要性越低,若選取的斷點越小,精度就將越高。因此,為了由斷點確定最優(yōu)的閾值,針對不同層進行了對比實驗。如圖3 所示,在CIFAR10數(shù)據(jù)集上,假設(shè)每層均采用斷點最小值作為閾值為基礎(chǔ)設(shè)置,在后續(xù)實驗中,將第2 層選取倒數(shù)第二小的斷點作為閾值,其他層仍采用最小值。依次再將第3~第6 層做同樣設(shè)置可看出,若增大閾值,提高剪枝率的情況下,精度將大幅下降。并且由于第2 層的通道數(shù)為64,提高閾值后對精度的影響最大。后續(xù)3、4 層的通道數(shù)為128,5、6 層的通道數(shù)為256,其精度影響逐漸減小,但仍超出文獻[12]中最低精度,因此更加不考慮倒數(shù)第三小的斷點作為閾值,可見全局采用斷點最小值作為閾值為最佳設(shè)置。

圖3 VGG16 閾值測試結(jié)果Fig.3 VGG16 threshold test result

3 實驗

本文實驗修剪了簡單的CNN 模型(VGGNet、ResNet、DenseNet)。與常用的壓縮模型AlexNet 不同,VGG 在全連接層的參數(shù)較少,因此,在這樣的網(wǎng)絡(luò)中修剪更具有挑戰(zhàn)性。在pytorch 深度學習平臺上實現(xiàn)了文獻[12]中的基線模型和正則化后的模型,并根據(jù)自適應(yīng)分層閾值判斷結(jié)果,繼續(xù)修剪網(wǎng)絡(luò)中的通道。

3.1 數(shù)據(jù)集

本文實驗使用以下數(shù)據(jù)集:

1)CIFAR[31]。CIFAR 包括CIFAR-10 和CIFAR-100。CIFAR-10數(shù)據(jù)集由10個類組成,每個類包含60 000張圖像,50 000 張用于訓練,10 000 張用于測試。CIFAR-100 數(shù)據(jù)集則由100 個類組成,每個類包含600 張圖像,與CIFAR-10 不同的是,CIFAR-100 中的100 個類又被分為20 個超類,每個圖像都帶有一個“精細”標簽(它所屬的類)和一個“粗糙”標簽(它所屬的超類)。

2)SVHN。SVHN 是一個現(xiàn)實世界的圖像數(shù)據(jù)集,用于機器學習和識別算法。分為完整數(shù)據(jù)與裁剪數(shù)據(jù),其中完整數(shù)據(jù)是帶有字符級邊界框的原始圖像,裁剪數(shù)據(jù)則已調(diào)整為固定的32 像素×32 像素分辨率。按照慣例,仍然使用604 388 個裁剪數(shù)據(jù)圖像進行訓練。

3)MNIST。MNIST 是一個手寫數(shù)字數(shù)據(jù)集,包含60 000 張訓練圖片和10 000 張測試圖像。為了測試本文方法在全連接網(wǎng)絡(luò)上的有效性,本文將與文獻[12]方法進行對比。

3.2 實驗網(wǎng)絡(luò)

在CIFAR 和SVHN 數(shù)據(jù)集上,實驗在3 種流行的網(wǎng)絡(luò)架構(gòu)VGGNet、ResNet 和DenseNet 上評估本文方法。VGGNet 最初是為ImageNet 分類而設(shè)計的。在實驗中,使用包含VGGNet 的16 和19 層網(wǎng)絡(luò)結(jié)構(gòu)和使用具有瓶頸結(jié)構(gòu)(ResNet-164)的164 層預(yù)激活ResNet。對于DenseNet,使用生長速率為12(DenseNet-40)的40 層DenseNet。在MNIST 數(shù)據(jù)集上,在與文獻[12]相同的三層全連接網(wǎng)絡(luò)上評估本文方法。

3.3 訓練、剪枝與微調(diào)

訓練、剪枝與微調(diào)過程如下:

1)基線訓練。首先從零開始訓練所有網(wǎng)絡(luò),作為基線網(wǎng)絡(luò)數(shù)據(jù)進行對比。所有網(wǎng)絡(luò)都使用SGD(Stochastic Gradient Descent)。在CIFAR 數(shù)據(jù)集上進行160 個epoch 的訓練,在SVHN 數(shù)據(jù)集上進行20 個epoch 的訓練,2 個數(shù)據(jù)集批量大小同為64,學習率同為0.1。在MNIST 數(shù)據(jù)集上進行30 個epoch的訓練,批量大小為256,初始學習率為0.1,經(jīng)過20 個epoch 后初始學習率為10。為了更好地對比閾值選定對精度結(jié)果和剪枝率的影響,本文方法參數(shù)設(shè)置與文獻[12]方法保持一致。

2)稀疏訓練。在稀疏化訓練時仍沿用文獻[12]方法,為每個通道引入比例因子。聯(lián)合訓練網(wǎng)絡(luò)權(quán)值與比例因子,對比例因子施加稀疏正則化后得到稀疏模型。

3)剪枝。針對稀疏以后的模型進行剪枝,需要確定剪枝閾值。在文獻[12]中采用統(tǒng)一全局閾值一次修剪,且閾值定義為所有比例因子值的某個百分比。缺點是由于不同層數(shù)的參數(shù)量不同,重要性也不同,全局閾值需要多次反復(fù)實驗,最終確定具體閾值,且增加1%或者降低1%剪枝比例對最終精度結(jié)果影響不大,因此閾值的判斷僅靠人為選擇。而本文將針對不同層,使用自適應(yīng)動態(tài)剪裁算法,自動確定不同層的具體閾值,而非百分比在精度與剪枝率取得平衡。這使得其能更好地進行裁剪,選取適合該層的閾值,而無需多次反復(fù)實驗。

4)微調(diào)。在剪枝后,將得到一個更窄、更緊湊的模型,實驗將繼續(xù)對模型微調(diào),在CIFAR、SVHN 和MNIST 數(shù)據(jù)集上,使用與基線訓練中相同的數(shù)據(jù)設(shè)置,再次訓練,以取得更好的精度效果。

3.4 結(jié)果對比與分析

在以往的經(jīng)驗中,第1 個卷積層在原始圖像的提取特征中起著重要作用,只存在較低的計算成本和較小的參數(shù)存儲(小于整個網(wǎng)絡(luò)的1%)。因此,在本文實驗中不修改該層的參數(shù)。同時網(wǎng)絡(luò)的全連接層不包含BN 層,同樣不進行修剪。

以VGG16 網(wǎng)絡(luò)為例,圖4 給出了剪枝層的斷點數(shù)。網(wǎng)絡(luò)層越深,通道的權(quán)重值增多,斷點數(shù)也逐步振蕩增加,但每層仍以斷點最小值為剪枝閾值。圖5對比了剪枝前后通道數(shù),可以看出層數(shù)越深剪枝幅度越大,通常在更深的網(wǎng)絡(luò)層具有的激活映射更小,占用的內(nèi)存也更少,因此會有更多的通道被修剪。

圖4 VGG16 分層斷點數(shù)Fig.4 Number of VGG16 layered break points

圖5 VGG16 分層剪枝通道數(shù)Fig.5 Number of VGG16 layered pruning channels

本文給出了VGG 網(wǎng)絡(luò)在數(shù)據(jù)集上的測試結(jié)果,為了更好地進行效果對比,以剪枝前的參數(shù)作為基線,將文獻[12]方法的剪枝率、測試錯誤率和參數(shù)量與本文方法進行對比,如表2~表4 所示。可以看出,本文不必依靠大量實驗或者以往經(jīng)驗確定閾值,而是使用自適應(yīng)分層閾值判斷算法可以自適應(yīng)地根據(jù)斷點選擇閾值進行分層剪枝,可以保持甚至提高至更好的精度。

表2 CIFAR10 數(shù)據(jù)集測試結(jié)果Table 2 Test result in CIFAR10 data set

表3 CIFAR100 數(shù)據(jù)集測試結(jié)果Table 3 Test result in CIFAR100 data set

表4 SVHN 數(shù)據(jù)集測試結(jié)果Table 4 Test result in SVHN data set

CIFAR10 數(shù)據(jù)集上的實驗結(jié)果顯示:在使用本文方法情況下,對VGG16 網(wǎng)絡(luò)模型剪枝率為56%,測試錯誤率較使用文獻[12]方法降低1.01 個百分點;對DenseNet 網(wǎng)絡(luò)模型剪枝率為36%,測試錯誤率較使用文獻[12]方法降低0.98 個百分點;對ResNet網(wǎng)絡(luò)模型剪枝率為32%,測試錯誤率較使用文獻[12]方法降低0.15 個百分點。

在CIFAR100 數(shù)據(jù)集上的實驗結(jié)果顯示:在使用本文方法情況下,對VGG16 網(wǎng)絡(luò)模型剪枝率為43%,測試錯誤率較使用文獻[12]方法降低1.52 個百分點;對DenseNet 網(wǎng)絡(luò)模型剪枝率較使用文獻[12]方法增加8%,測試錯誤率降低0.62 個百分點;對ResNet 網(wǎng)絡(luò)模型剪枝率為32%,測試錯誤率較使用文獻[12]方法降低0.91 個百分點。

在SVHN 數(shù)據(jù)集上的實驗結(jié)果顯示:在使用本文方法情況下,VGG16 網(wǎng)絡(luò)模型相較于文獻[12]方法犧牲了11%的剪枝率和0.21×106的模型參數(shù)量,降低測試錯誤率0.09 個百分點;對DenseNet 剪枝率較使用文獻[12]方法下降4%,測試錯誤率降低0.02 個百分點,模型參數(shù)量增加0.03%;ResNet 網(wǎng)絡(luò)模型剪枝率為33%,測試錯誤率較使用文獻[12]方法降低0.1 個百分點。

由此可以看出,本文方法能夠降低錯誤率,調(diào)節(jié)精度與剪枝率的平衡。雖然剪枝率沒有超過文獻[12]方法,但本文方法可以更好地在剪枝與精度中找到最優(yōu)平衡。表3 結(jié)果顯示,在同樣的數(shù)據(jù)集上,網(wǎng)絡(luò)層越深效果更好,同時剪枝率也會相應(yīng)提高。

針對LeNet 網(wǎng)絡(luò)模型,本文在MNIST 數(shù)據(jù)集上進行了測試并與文獻[12]全局剪枝方法進行了比較,測試結(jié)果如表5 所示,其中測試錯誤率降低0.05 個百分點,參數(shù)剪枝率達到82.8%。盡管正則化的作用主要用于對卷積層中的通道進行剪枝,但它也適用于對全連接層中的神經(jīng)元進行剪枝。文獻[12]中使用全局閾值修剪時有時會剪去整個層,而本文自適應(yīng)分層閾值判斷算法則避免了這個問題,并獲得了略低的測試誤差。

表5 MNIST 測試結(jié)果 %

4 結(jié)束語

目前,深度學習已經(jīng)在圖像、文本、音頻、視頻等諸多領(lǐng)域取得了巨大成功,同時也推動了很多相關(guān)智能產(chǎn)品的誕生。CNN 網(wǎng)絡(luò)模型雖然結(jié)構(gòu)越深效果越好,但是高容量、高訓練成本和推理成本都會影響計算效率。本文提出的自適應(yīng)分層閾值判斷算法,針對正則化后的模型進行剪枝,逐層對通道權(quán)重進行斷點分層后,選取最小值為閾值進行剪枝,擺脫了以往需要經(jīng)驗人為定義的固定閾值,進而獲得更加緊湊的卷積神經(jīng)網(wǎng)絡(luò),基于該算法可減少模型尺寸,且得到的模型不需要特殊的庫/硬件來進行有效的推理。在多個數(shù)據(jù)集上的實驗結(jié)果證明,本文方法可以減小模型尺寸且精度并沒有顯著損失。未來將研究多種壓縮方法相結(jié)合的方法,以獲得更好的壓縮結(jié)果。

猜你喜歡
斷點剪枝正則
人到晚年宜“剪枝”
斷點
J-正則模與J-正則環(huán)
π-正則半群的全π-正則子半群格
Virtually正則模
基于YOLOv4-Tiny模型剪枝算法
基于激活-熵的分層迭代剪枝策略的CNN模型壓縮
用Eclipse調(diào)試Python
火力發(fā)電機組自啟停(APS)系統(tǒng)架構(gòu)設(shè)計方案
一類無限可能問題的解法