• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于DSD和剪枝的模型壓縮與加速

      2018-11-22 00:47:12褚瑩凌力
      微型電腦應(yīng)用 2018年11期
      關(guān)鍵詞:運(yùn)算量錯(cuò)誤率剪枝

      褚瑩, 凌力

      (復(fù)旦大學(xué) 通信科學(xué)與工程系,上海 200433)

      0 引言

      隨著ImageNet數(shù)據(jù)集的出現(xiàn),學(xué)術(shù)界涌現(xiàn)出許多高性能的卷積神經(jīng)網(wǎng)絡(luò)模型。在過去幾年中,卷積神經(jīng)網(wǎng)絡(luò)模型的結(jié)構(gòu)愈發(fā)復(fù)雜,直接導(dǎo)致參數(shù)和卷積操作數(shù)大幅增加,使得模型體積增大、運(yùn)行時(shí)間增長(zhǎng)。當(dāng)這些網(wǎng)絡(luò)被布置到傳感器和移動(dòng)設(shè)備上時(shí),由于有限的存儲(chǔ)空間和計(jì)算資源,使得模型的運(yùn)行效果無法達(dá)到最佳。因此針對(duì)卷積神經(jīng)網(wǎng)路模型壓縮和加速的研究成為卷積神經(jīng)網(wǎng)絡(luò)領(lǐng)域的一大熱點(diǎn)。傳統(tǒng)模型壓縮研究的方法主要分為兩種:

      (1)通過剪枝去除冗余權(quán)重。如Denton[1]等人利用神經(jīng)網(wǎng)絡(luò)的線性結(jié)構(gòu),通過尋找一個(gè)合適的低秩逼近以達(dá)到到減少參數(shù)的目的。奇異值分解(SVD)和塔克分解同樣可以減少權(quán)重的數(shù)目[2]。在此基礎(chǔ)上,優(yōu)化矩陣的存儲(chǔ)方式可以進(jìn)一步減少參數(shù)的存儲(chǔ)空間。如Han提出的深度壓縮[3]中利用聚類和哈夫曼編碼大幅壓縮了參數(shù)的存儲(chǔ)空間。

      (2)優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)減少參數(shù)數(shù)量。近年來也涌現(xiàn)出不少神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的創(chuàng)新之作,如使用卷積層或全局平均池化代替全連接層。Network In Network[4]和GoogleNet[5]的網(wǎng)絡(luò)結(jié)構(gòu)都采用了替換卷積層的思想,從而獲得了不錯(cuò)的成績(jī)。

      一般來說,我們通過將低于閾值的權(quán)重置為零來實(shí)現(xiàn)剪枝,此時(shí)再通過優(yōu)化存儲(chǔ)方式可以進(jìn)一步減少存儲(chǔ)空間,但若未引入針對(duì)稀疏矩陣的相乘方法,無法實(shí)現(xiàn)模型加速。

      在此基礎(chǔ)上,本文提出了剪枝和DSD(Dense-Sparse-Dense)訓(xùn)練技術(shù)相結(jié)合的模型壓縮方法。其中剪枝采用裁去冗余卷積核的方式加速模型運(yùn)行速度、壓縮模型大小,并結(jié)合DSD訓(xùn)練方法提高剪枝后模型的正確率。

      1 系統(tǒng)流程

      本系統(tǒng)流程如下:

      (1)以待壓縮網(wǎng)絡(luò)為基礎(chǔ),以每個(gè)卷積核權(quán)重的絕對(duì)值之和為排序標(biāo)準(zhǔn),進(jìn)行排序。

      (2)根據(jù)設(shè)置的剪枝百分比裁去對(duì)應(yīng)的卷積核,并調(diào)整后一層的卷積核權(quán)重。

      (3)訓(xùn)練模型。

      (4)恢復(fù)一定比例的卷積核,并再次訓(xùn)練模型。

      (5)根據(jù)所需正確率可以重復(fù)進(jìn)行(1)~(4)步驟,直到模型輸出的準(zhǔn)確率滿足需求。

      系統(tǒng)流程圖,如圖1所示。

      2 DSD訓(xùn)練方法和卷積核剪枝策略

      2.1 卷積核剪枝

      卷積核剪枝是Li[6]等人提出的一種剪枝策略,是針對(duì)傳統(tǒng)剪枝方法無法加速模型運(yùn)行速度的改進(jìn)方案。設(shè)第i層卷積層的通道數(shù)為ni,輸入的特征圖高為hi,寬為wi,將輸入的特征圖xi∈Rni×hi×wi轉(zhuǎn)化為xi+1∈Rni+1×hi+1×wi+1,作為下一層的輸入。第i層卷積層的卷積核表示為ni+1個(gè)三維卷積核Fi,j∈Rni×k×k,即每個(gè)卷積核由ni個(gè)二維濾波器K∈Rk×k構(gòu)成。由此可得,第i+1層卷積層進(jìn)行的運(yùn)算量為ni+1nik2hu+iwi+1。如圖2所示。

      圖1 系統(tǒng)流程圖

      圖2 刪去卷積核和特征圖的對(duì)應(yīng)關(guān)系

      當(dāng)卷積核Fi,j被裁剪后,對(duì)應(yīng)的特征圖xi+1,j會(huì)被連帶刪除,從而減少nik2hi+1wi+1次運(yùn)算。并且下一層卷積層的卷積核中對(duì)應(yīng)的部分也會(huì)被刪去,進(jìn)一步減少ni+2k2hi+2wi+2次運(yùn)算。第i層卷積層剪去m個(gè)卷積核后,會(huì)對(duì)于第i層和i+1層都會(huì)減少比例為m/ni+1的運(yùn)算量。如圖2所示,當(dāng)?shù)趇+1層刪去第j個(gè)卷積核后,對(duì)應(yīng)特征圖的第j維被刪去。

      2.1.1 卷積核刪除策略

      為了減少正確率的下降,我們希望刪去對(duì)最后結(jié)果貢獻(xiàn)最小的卷積核。在本實(shí)驗(yàn)中,我們通過計(jì)算權(quán)重的絕對(duì)值之和來衡量卷積核的重要性,這是因?yàn)楫?dāng)特征圖對(duì)應(yīng)的權(quán)重絕對(duì)值較小時(shí),說明該部分對(duì)產(chǎn)生的特征圖貢獻(xiàn)較小。

      2.1.2 卷積層敏感度衡量方法

      本文中,卷積層敏感度是指對(duì)于不同的卷積層,刪除相同數(shù)目的卷積核對(duì)正確率的影響。我們認(rèn)為正確率下降越多的卷積層越敏感。通過觀察VGG-16后我們發(fā)現(xiàn),同階段的卷積層(即相鄰且生成的特征圖大小相同的卷積層)敏感度相近。為了避免增加更多的參數(shù),對(duì)于同階段的卷積層,我們采用相同的刪除比例,對(duì)于較敏感的卷積層,我們的策略是降低刪除比例,甚至避免刪除這部分卷積層的卷積核,從而減少正確率的降低。

      2.2 DSD訓(xùn)練

      DSD(Dense-Sparse-Dense)是Han[7]等人提出的一種去除卷積層冗余連接的訓(xùn)練方法。流程如圖3所示。

      在DSD訓(xùn)練過程中,稀疏化是通過在權(quán)重更新的過程中忽略較小的權(quán)重實(shí)現(xiàn)的。但由于在之后的再密集過程中,為了恢復(fù)信息、提高正確率,會(huì)恢復(fù)這部分權(quán)重進(jìn)行再訓(xùn)練,導(dǎo)致最后生成的模型在運(yùn)行時(shí)并不能達(dá)到加速的效果。

      所以在我們的方案中,我們使用卷積核剪枝替代稀疏化的過程,相當(dāng)于忽略n個(gè)卷積核的所有節(jié)點(diǎn),從而實(shí)現(xiàn)加速的目的。并在再密集過程中,恢復(fù)m個(gè)原卷積核的所有節(jié)點(diǎn),即恢復(fù)一部分信息,通過再訓(xùn)練,進(jìn)一步提高正確率。

      圖3 DSD訓(xùn)練過程

      3 實(shí)驗(yàn)性能測(cè)試與分析

      3.1 DSD測(cè)試與分析

      為了獲取DSD的性能基準(zhǔn),我們將DSD訓(xùn)練應(yīng)用到了VGG-16(Simonyan & Zisserman(2014))中。VGG-16通常用于目標(biāo)檢測(cè),語義分割和遷移學(xué)習(xí)。在本實(shí)驗(yàn)中,我們將每層刪除比例設(shè)置為30%(第一層不刪)。如表1所示。

      表1 傳統(tǒng)訓(xùn)練方法和DSD的錯(cuò)誤率比較

      DSD訓(xùn)練使錯(cuò)誤率下降了4.31%(Top-1)和2.65%(Top-5)。和LLR(降低學(xué)習(xí)率,再訓(xùn)練與DSD相同的迭代次數(shù))相比,DSD訓(xùn)練得到的結(jié)果也更為優(yōu)異。

      3.2 卷積核剪枝測(cè)試與分析

      同樣的,我們將卷積核剪枝技術(shù)應(yīng)用到VGG-16中。以CIFASR-10為數(shù)據(jù)集的VGG-16由13個(gè)卷積層和2個(gè)全連接層構(gòu)成,其中運(yùn)算量主要集中在卷積層中。對(duì)于生成512維特征圖的卷積層,在保證不降低正確率的情況下,能夠刪去至少60%的卷積核。我們推測(cè)是因?yàn)閷?duì)于4×4或2×2的特征圖,存在更多的冗余連接。并且我們發(fā)現(xiàn)對(duì)于CIFAR-10數(shù)據(jù)集,第一層可以刪去的比例比之后的3~7層更多。這對(duì)于CIFAR-10數(shù)據(jù)集是合理的,因?yàn)榈谝粚蛹词贡粍h去80%的卷積核,剩下卷積核的數(shù)目(12)依然大于類別數(shù)(10)。但是若移去第2層卷積層80%的卷積核,生成的特征圖將由64降到12,可能會(huì)丟失重要信息,從而導(dǎo)致正確率的下降。最后我們實(shí)驗(yàn)發(fā)現(xiàn),在保證正確率不下降的條件下,對(duì)于第1層和8~13層可以刪去50%的卷積核,減少共34%的運(yùn)算量,和1.5E+07的參數(shù)數(shù)量,相當(dāng)于減少了34%的運(yùn)行時(shí)間。

      3.3 剪枝和DSD相結(jié)合的模型壓縮與加速測(cè)試與分析

      我們使用卷積核剪枝替代DSD中稀疏化的過程,以直接刪除最終的卷積核比例為基準(zhǔn),通過觀察本策略在VGG-16網(wǎng)絡(luò)中的表現(xiàn),如圖4所示。

      我們發(fā)現(xiàn)對(duì)于同一卷積層而言,當(dāng)保持剪枝比例相同時(shí),恢復(fù)不同比例的卷積核,模型的正確率在60%以后緩慢上升。這是因?yàn)橥ㄟ^剪枝后的再訓(xùn)練,重要的連接得以加強(qiáng),替代了一部分低權(quán)重的作用,因而此時(shí)剩余40%的卷積核對(duì)正確率的影響較小。

      圖4 恢復(fù)不同比例卷積核錯(cuò)誤率比較

      由圖4可見,當(dāng)恢復(fù)60%的卷積核時(shí),本文提出的方案得到的TOP-5錯(cuò)誤率為9.01%,雖然比只使用DSD的錯(cuò)誤率高0.44%,但純DSD方案沒有加速的效果,而本方案能夠減少40%以上的運(yùn)算量,所以0.44%的錯(cuò)誤率上升仍在可接受范圍內(nèi)。

      當(dāng)采取60%的恢復(fù)策略時(shí),和未采用DSD訓(xùn)練方法的方案相比,在保持相同準(zhǔn)確率的情況下,運(yùn)算量進(jìn)一步減少了11%,達(dá)到45%。如表3所示。

      表3 運(yùn)算量降低結(jié)果對(duì)比

      這是因?yàn)椴捎肈SD的方案后,相當(dāng)于我們將卷積核的重要性進(jìn)行了區(qū)分,稀疏化后留下的卷積核最為重要,通過稀疏化后的訓(xùn)練和恢復(fù)后的訓(xùn)練得到了二次加強(qiáng)。而恢復(fù)的卷積核通過恢復(fù)后訓(xùn)練得到了一次加強(qiáng),權(quán)重較小的卷積核則被舍去,得以提高最終模型運(yùn)行速度。

      4 總結(jié)

      針對(duì)傳統(tǒng)的卷積核剪枝方案,本文提出了一種結(jié)合DSD訓(xùn)練方法的模型壓縮與加速方法。通過將DSD訓(xùn)練過程中的稀疏化過程替換成卷積核剪枝,并在再密集過程中只恢復(fù)部分卷積核的方法,使得模型兼具卷積核剪枝和DSD訓(xùn)練方法的優(yōu)點(diǎn),減少了模型45%的運(yùn)行時(shí)間。未來的工作中,還可以進(jìn)一步區(qū)分卷積層的重要性,通過輪番運(yùn)行稀疏化和再密集過程,提高準(zhǔn)確率。

      猜你喜歡
      運(yùn)算量錯(cuò)誤率剪枝
      限制性隨機(jī)試驗(yàn)中選擇偏倚導(dǎo)致的一類錯(cuò)誤率膨脹*
      人到晚年宜“剪枝”
      基于YOLOv4-Tiny模型剪枝算法
      用平面幾何知識(shí)解平面解析幾何題
      減少運(yùn)算量的途徑
      正視錯(cuò)誤,尋求策略
      教師·中(2017年3期)2017-04-20 21:49:49
      剪枝
      天津詩人(2017年2期)2017-03-16 03:09:39
      讓拋物線動(dòng)起來吧,為運(yùn)算量“瘦身”
      解析小學(xué)高段學(xué)生英語單詞抄寫作業(yè)錯(cuò)誤原因
      降低學(xué)生計(jì)算錯(cuò)誤率的有效策略
      平邑县| 稷山县| 南涧| 利津县| 开原市| 娄底市| 璧山县| 白水县| 泽州县| 察雅县| 江达县| 平湖市| 甘德县| 潜山县| 盐亭县| 峨边| 宜城市| 敖汉旗| 辛集市| 华坪县| 宝坻区| 乳源| 蓝田县| 济阳县| 固安县| 松原市| 固始县| 仲巴县| 贵港市| 怀集县| 金塔县| 伊川县| 凉城县| 邯郸市| 游戏| 富民县| 盐城市| 百色市| 宜宾县| 静乐县| 丹东市|