丁文銳,劉春蕾,李越,張寶昌
1. 北京航空航天大學(xué) 無(wú)人系統(tǒng)研究院,北京 100083
2. 北京航空航天大學(xué) 電子信息工程學(xué)院,北京 100083
3. 北京航空航天大學(xué) 自動(dòng)化科學(xué)與電氣工程學(xué)院,北京 100083
近年來(lái),以深度卷積神經(jīng)網(wǎng)絡(luò)[1-3]為代表的人工智能技術(shù)得到了學(xué)術(shù)與工業(yè)領(lǐng)域的廣泛關(guān)注,被視為一次具有重大意義的技術(shù)革新。目前深度卷積神經(jīng)網(wǎng)絡(luò)在多個(gè)領(lǐng)域,諸如計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別以及自然語(yǔ)言處理等,得到了大量的應(yīng)用。當(dāng)前,移動(dòng)互聯(lián)、物聯(lián)網(wǎng)等技術(shù)與各個(gè)產(chǎn)業(yè)深度融合,以各類無(wú)人系統(tǒng)為平臺(tái)載體的移動(dòng)便攜終端設(shè)備在識(shí)別應(yīng)用的需求方面不斷增加。然而,一方面,高性能的深度網(wǎng)絡(luò)模型往往較大,這對(duì)將其裝備到小內(nèi)存的移動(dòng)端無(wú)疑是一巨大挑戰(zhàn)。另一方面,深度卷積神經(jīng)網(wǎng)絡(luò)的一大弊端即計(jì)算復(fù)雜度高,在運(yùn)行較大的卷積網(wǎng)絡(luò)模型時(shí),為了實(shí)現(xiàn)網(wǎng)絡(luò)中最常見(jiàn)的點(diǎn)積運(yùn)算需要進(jìn)行大量計(jì)算。因此,復(fù)雜深度神經(jīng)網(wǎng)絡(luò)的劣勢(shì),即構(gòu)成的大量權(quán)重參數(shù)會(huì)導(dǎo)致相當(dāng)大的存儲(chǔ)空間、內(nèi)存帶寬以及計(jì)算資源上的消耗,使得在資源受限的移動(dòng)端難以進(jìn)行部署,從而使其在實(shí)際使用中仍存在著很大的局限性。
基于以上問(wèn)題,需要對(duì)網(wǎng)絡(luò)進(jìn)行模型壓縮以獲得輕量化模型,使其可以更方便地部署到小內(nèi)存的移動(dòng)端設(shè)備上。現(xiàn)有研究對(duì)深度網(wǎng)絡(luò)模型壓縮已經(jīng)做出較多綜述性研究[4-9]。模型壓縮[10-11]主要分為高效結(jié)構(gòu)設(shè)計(jì)、模型剪枝、網(wǎng)絡(luò)量化等方法。而本文則主要針對(duì)于網(wǎng)絡(luò)量化中的極致量化,即二值卷積神經(jīng)網(wǎng)絡(luò)(Binary Convolutional Neural Network,BNN,簡(jiǎn)稱二值網(wǎng)絡(luò))進(jìn)行全面綜述。所謂二值網(wǎng)絡(luò),其目標(biāo)是將激活和權(quán)重同時(shí)量化為二值,二值化后的網(wǎng)絡(luò)具有以下幾個(gè)優(yōu)點(diǎn):第一,內(nèi)存更少。對(duì)于嵌入式移動(dòng)設(shè)備來(lái)說(shuō),通常無(wú)法部署較大內(nèi)存的網(wǎng)絡(luò)模型。而網(wǎng)絡(luò)量化減少了網(wǎng)絡(luò)所需要的內(nèi)存,使得網(wǎng)絡(luò)模型更容易部署。第二,計(jì)算速度更高。當(dāng)今典型的卷積神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練時(shí)通常需要較大的訓(xùn)練數(shù)據(jù)集和較多的迭代次數(shù),巨大的計(jì)算量會(huì)導(dǎo)致較長(zhǎng)的網(wǎng)絡(luò)訓(xùn)練時(shí)間,而網(wǎng)絡(luò)量化可以使得網(wǎng)絡(luò)的計(jì)算成本相對(duì)減少,比如,模型當(dāng)中的二值量化可以將浮點(diǎn)32位的數(shù)據(jù)轉(zhuǎn)化為1位的數(shù)據(jù),從而將浮點(diǎn)運(yùn)算轉(zhuǎn)化為位運(yùn)算,使得計(jì)算速度大大提高。因此開(kāi)展卷積神經(jīng)網(wǎng)絡(luò)二值化技術(shù)研究,不僅是對(duì)相關(guān)理論基礎(chǔ)的進(jìn)一步豐富和擴(kuò)展,更是對(duì)整個(gè)深度學(xué)習(xí)領(lǐng)域有著重要的實(shí)際應(yīng)用和理論價(jià)值,二值卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用優(yōu)勢(shì)示意如圖1所示。
圖1 二值卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用優(yōu)勢(shì)示意圖
近年來(lái)研究者們已經(jīng)提出了一系列卷積神經(jīng)網(wǎng)絡(luò)二值化算法和訓(xùn)練方法來(lái)降低二值化過(guò)程中的性能損失。比如,XNOR-Net[12]算法通過(guò)重建具有單個(gè)比例因子的全精度濾波器,有效地實(shí)現(xiàn)卷積運(yùn)算。文獻(xiàn)[13]提出了一種新的結(jié)構(gòu)變體Bi-Real Net,通過(guò)增加網(wǎng)絡(luò)的便捷連接(Shortcut)來(lái)大大增強(qiáng)網(wǎng)絡(luò)的表達(dá)能力。文獻(xiàn)[14]提出一種損失感知的方法,將二值量化損失考慮到端到端的網(wǎng)絡(luò)中。文獻(xiàn)[15]提出了使用殘差網(wǎng)絡(luò)進(jìn)行二值量化,可在精確性和復(fù)雜性之間做出權(quán)衡。PCNN[16](Projection Convolutional Neural Networks)通過(guò)離散反向傳播對(duì)多個(gè)投影進(jìn)行擴(kuò)展來(lái)學(xué)習(xí)一組不同的量化核。然而現(xiàn)有技術(shù)研究雖然取得了較大的進(jìn)展,但仍未解決二值網(wǎng)絡(luò)與全精度網(wǎng)絡(luò)之間巨大的性能差異問(wèn)題。因此,二值卷積神經(jīng)網(wǎng)絡(luò)的更多潛力有待進(jìn)一步挖掘。
本文主要從提高網(wǎng)絡(luò)的表達(dá)能力和充分挖掘網(wǎng)絡(luò)的訓(xùn)練潛力方面出發(fā),將現(xiàn)有研究二值卷積神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行全面綜述。具體來(lái)講,提高網(wǎng)絡(luò)的表達(dá)能力可以從量化方法和結(jié)構(gòu)設(shè)計(jì)兩方面出發(fā),充分挖掘網(wǎng)絡(luò)訓(xùn)練潛力可以從損失函數(shù)設(shè)計(jì)、訓(xùn)練策略等角度出發(fā)。此外,本文還介紹了二值卷積神經(jīng)網(wǎng)絡(luò)在不同任務(wù)和硬件平臺(tái)的發(fā)展情況,并總結(jié)了未來(lái)發(fā)展可能面臨的挑戰(zhàn)。本文章節(jié)組織如下:第1節(jié)介紹了二值卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)描述;第2節(jié)從提高網(wǎng)絡(luò)表達(dá)能力和充分挖掘網(wǎng)絡(luò)訓(xùn)練潛力出發(fā)介紹現(xiàn)有的方法;第3節(jié)介紹不同方法在不同任務(wù)和硬件平臺(tái)中的性能以及分析;第4節(jié)介紹影響及發(fā)展趨勢(shì),第5節(jié)總結(jié)全文。
在全精度卷積神經(jīng)網(wǎng)絡(luò)中,卷積基本運(yùn)算可以表示為
Xl+1=Xl*Wl
(1)
式中:Xl和Wl分別代表第l層的特征圖與權(quán)重;*代表卷積算子。大量的浮點(diǎn)乘加運(yùn)算造成了卷積神經(jīng)網(wǎng)絡(luò)推理過(guò)程中效率低下的問(wèn)題,并且浮點(diǎn)型權(quán)重需要大量的存儲(chǔ)空間。因此,希望采用二值化的方式來(lái)減少內(nèi)存,降低計(jì)算復(fù)雜度。
二值卷積神經(jīng)網(wǎng)絡(luò)是指具有二值權(quán)重和二值激活的深度網(wǎng)絡(luò)模型,特別是通過(guò)sign(·)函數(shù)來(lái)進(jìn)行二值化,即
(2)
(3)
(4)
式中:αl代表l層的尺度因子。
反向傳播過(guò)程可以表示為
(5)
式中:L代表網(wǎng)絡(luò)損失。由于反向傳播過(guò)程中,量化器sign(·)的導(dǎo)數(shù)為沖擊波形式,零點(diǎn)處梯度無(wú)窮,非零點(diǎn)處梯度為0,即會(huì)在更新過(guò)程中造成梯度消失或梯度爆炸。因此,必須設(shè)計(jì)合適的梯度來(lái)代替sign(·)函數(shù)的原始梯度來(lái)進(jìn)行反向傳播。現(xiàn)有研究中,研究者通常采用如圖2所示的方波或者三角波的形式或采用其他近似sign(·)函數(shù)的導(dǎo)數(shù)來(lái)代替反向傳播中的量化器梯度。
圖2 量化函數(shù)sign(·)的梯度近似示意圖
近年來(lái),二值卷積神經(jīng)網(wǎng)絡(luò)領(lǐng)域得到頗多關(guān)注,催生了眾多種類的二值卷積神經(jīng)網(wǎng)絡(luò)方法,從發(fā)展之初的使用預(yù)定義函數(shù)直接對(duì)權(quán)重和輸入進(jìn)行量化的樸素二值化方法,到目前使用基于多種角度和技術(shù)的基于優(yōu)化的二值化方法,研究者們?cè)诙稻W(wǎng)絡(luò)領(lǐng)域已進(jìn)行了諸多探索。在目前的基于優(yōu)化的二值方法中,有多種優(yōu)化的思想與技術(shù),包括通過(guò)設(shè)計(jì)二值優(yōu)化算法來(lái)近似全精度值、通過(guò)設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)來(lái)增大網(wǎng)絡(luò)的表達(dá)能力,與通過(guò)改進(jìn)網(wǎng)絡(luò)損失函數(shù)來(lái)限制權(quán)重等。然而,即使在二值網(wǎng)絡(luò)中配置上述方法,二值卷積神經(jīng)網(wǎng)絡(luò)相比于其對(duì)應(yīng)的全精度網(wǎng)絡(luò),仍然會(huì)產(chǎn)生相當(dāng)大的精度損失,不利于其在很多具有高精度需求的設(shè)備上應(yīng)用。因此如何優(yōu)化二值卷積神經(jīng)網(wǎng)絡(luò),使其在具有節(jié)省資源優(yōu)勢(shì)的同時(shí)保持較高的網(wǎng)絡(luò)精度,仍是一個(gè)具有挑戰(zhàn)性的問(wèn)題。本文認(rèn)為,二值卷積神經(jīng)網(wǎng)絡(luò)性能損失的原因主要可歸結(jié)為兩點(diǎn):其一是有限的表達(dá)能力,其二是不充分的訓(xùn)練。因此,基于這兩點(diǎn),本文從結(jié)構(gòu)設(shè)計(jì)和量化方法兩方面出發(fā)闡述當(dāng)前提升二值網(wǎng)絡(luò)表達(dá)能力的方法,從損失函數(shù)設(shè)計(jì)、訓(xùn)練策略等角度出發(fā)歸納挖掘網(wǎng)絡(luò)訓(xùn)練潛力的方法。最后,再針對(duì)其他任務(wù)平臺(tái)所提出的方法進(jìn)行簡(jiǎn)單介紹。
2.1.1 二值優(yōu)化方法
樸素的二值網(wǎng)絡(luò)計(jì)算直接將激活函數(shù)和權(quán)重量化為1和-1[17],這種映射方式雖然簡(jiǎn)單,但對(duì)全精度特征和權(quán)重所包含的豐富信息造成了巨大損失,極大降低了量化后網(wǎng)絡(luò)的表達(dá)能力。作為考慮量化誤差的早期研究,Rastegari等提出了XNOR-Net[12],將權(quán)重和激活都進(jìn)行二值化。與先前的研究不同,該工作通過(guò)引入二值參數(shù)的比例因子對(duì)浮點(diǎn)數(shù)值進(jìn)行更準(zhǔn)確地近似。對(duì)于權(quán)重部分,比例因子的計(jì)算過(guò)程為
(6)
式中:α為權(quán)重部分的尺度因子,該尺度因子為逐通道級(jí),通過(guò)最小化量化誤差計(jì)算而得。尺度因子α的引入可降低二值參數(shù)與對(duì)應(yīng)全精度參數(shù)的誤差,進(jìn)而對(duì)浮點(diǎn)數(shù)值進(jìn)行更準(zhǔn)確地近似。激活函數(shù)的量化與式(6)類似。該方法可以大幅度降低由直接量化所帶來(lái)的性能損失,并且首次在大型圖像識(shí)別數(shù)據(jù)集ImageNet上進(jìn)行了實(shí)驗(yàn)驗(yàn)證,為接下來(lái)的二值網(wǎng)絡(luò)研究奠定了基礎(chǔ)。
XNOR-Net優(yōu)化算法掀起了二值網(wǎng)絡(luò)研究的熱潮。為了進(jìn)一步減少量化誤差,高階殘差量化(HORQ)[15]采用基于量化殘差的全精度激活的遞歸近似,而不是XNOR-Net中使用的一步近似。該算法通過(guò)遞歸執(zhí)行殘差量化操作來(lái)獲得遞減尺度的二值激活,并通過(guò)對(duì)這些二值激活進(jìn)行線性組合來(lái)得到最終的量化激活。高階殘差量化的引入在提升網(wǎng)絡(luò)表達(dá)能力的同時(shí),不可避免地帶來(lái)了計(jì)算量升高的問(wèn)題。此后文獻(xiàn)[18]引入了一種比例因子獲取的新方式——數(shù)據(jù)驅(qū)動(dòng)。其通過(guò)學(xué)習(xí)帶有參數(shù)的門(mén)函數(shù),來(lái)從未量化的激活中預(yù)測(cè)通道級(jí)的比例因子。該方法在增加不足1%計(jì)算量的情況下大大提高了二值卷積神經(jīng)網(wǎng)絡(luò)的性能。
XNOR-Net[12]優(yōu)化算法與HORQ[15]算法均從網(wǎng)絡(luò)前向傳播入手,然而反向傳播算法對(duì)于二值卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練亦是至關(guān)重要。在對(duì)二值網(wǎng)絡(luò)進(jìn)行反向傳播部署時(shí),由于sign函數(shù)的梯度不連續(xù)可導(dǎo),通常采用直通估計(jì)器(Straight Through Estimator,STE)的方法來(lái)對(duì)梯度進(jìn)行近似。但由于sign的實(shí)際梯度與STE之間存在明顯的梯度不匹配,極易導(dǎo)致反向傳播誤差積累的問(wèn)題,致使網(wǎng)絡(luò)訓(xùn)練偏離正常的極值點(diǎn),使得二值網(wǎng)絡(luò)優(yōu)化不足,從而嚴(yán)重降低性能。對(duì)于近似sign函數(shù)梯度的方波梯度,除了[-1,+1]范圍之內(nèi)的參數(shù)梯度不匹配外,還存在[-1,+1]范圍之外的參數(shù)將不被更新的問(wèn)題。直觀來(lái)看,精心設(shè)計(jì)的二值化近似函數(shù)可以緩解反向傳播中的梯度失配問(wèn)題。Bi-Real Net[13]提供了一個(gè)自定義的近似sign函數(shù)(ApproxSign)來(lái)替換 sign 函數(shù)以進(jìn)行反向傳播中的梯度計(jì)算,該梯度以三角波形式近似sign函數(shù)的梯度,相比于傳統(tǒng)的STE其相對(duì)于沖擊波的相似度更高,因而更貼近于sign函數(shù)梯度的計(jì)算。BNN+[19]直接提出用swishsign函數(shù)對(duì)sign函數(shù)進(jìn)行近似來(lái)獲取更優(yōu)近似梯度。這些梯度近似方法能進(jìn)一步對(duì)二值卷積神經(jīng)網(wǎng)絡(luò)的反向更新過(guò)程進(jìn)行適度優(yōu)化。
2.1.2 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
除了直接優(yōu)化量化方法外,也有很多研究從網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)方面出發(fā),通過(guò)優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)提升網(wǎng)絡(luò)的表達(dá)能力。Liu等[20]從二值濾波器的重設(shè)計(jì)出發(fā),設(shè)計(jì)了循環(huán)二值卷積神經(jīng)網(wǎng)絡(luò)(Circulant Binary Convolutional Network, CBCN),提出了循環(huán)濾波器和循環(huán)二值卷積,通過(guò)多角度旋轉(zhuǎn)二值濾波器來(lái)增強(qiáng)二值化卷積特征的表達(dá)能力;與此同時(shí),該循環(huán)濾波器也可提升網(wǎng)絡(luò)的旋轉(zhuǎn)不變性,提升二值網(wǎng)絡(luò)對(duì)于旋轉(zhuǎn)物體的識(shí)別魯棒性。為優(yōu)化該循環(huán)濾波器,該文還提出了相應(yīng)的循環(huán)反向傳播用以對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。此外,為了提升網(wǎng)絡(luò)的表達(dá)能力,Bi-Real Net[13]將每層卷積的輸入特征圖連接到后續(xù)網(wǎng)絡(luò)中,這種方法實(shí)質(zhì)上是通過(guò)結(jié)構(gòu)轉(zhuǎn)換來(lái)調(diào)整數(shù)據(jù)分布,對(duì)網(wǎng)絡(luò)的提升效果十分明顯。除此之外,Zhuang等[21]提出了組網(wǎng)絡(luò)(GroupNet),即將網(wǎng)絡(luò)分成若干組,在這些組中,通過(guò)聚集一組均勻的二元分支可以有效地重構(gòu)全精度網(wǎng)絡(luò),該策略顯示出對(duì)不同任務(wù)(包括分類和語(yǔ)義分割)的強(qiáng)大性能優(yōu)勢(shì),在準(zhǔn)確性和節(jié)省大量計(jì)算資源方面均有一定優(yōu)越性。此外,文獻(xiàn)[18]中比例因子獲取的方式也可以看作對(duì)結(jié)構(gòu)的改進(jìn),通過(guò)增加顯著模塊(Squeeze and Excitation,SE)來(lái)提高網(wǎng)絡(luò)的表達(dá)能力。如圖3所示,列出了Bi-Real Net[13]、文獻(xiàn)[18]和GroupNet[21]的網(wǎng)絡(luò)結(jié)構(gòu)。相比于XNOR-Net,以上幾種方法在提升表達(dá)能力的同時(shí),通常需要額外的存儲(chǔ)或者計(jì)算成本,但與全精度網(wǎng)絡(luò)相比仍然具有較大的理論加速比。對(duì)于Bi-Real Net而言,由于只增加了shortcut的個(gè)數(shù)(加法計(jì)算量),該計(jì)算量相對(duì)于整體的flops而言是微乎其微的;對(duì)于GroupNet而言,其同時(shí)增加了存儲(chǔ)和計(jì)算量,但是由于增加的是二值計(jì)算,相比于全精度而言,理論上仍然存在較大的加速比;對(duì)于文獻(xiàn)[18]中的網(wǎng)絡(luò)而言,其僅僅增加了不足1%的計(jì)算量,但卻取得了ResNet18在ImageNet上正確分類率65.4%的結(jié)果。
圖3 網(wǎng)絡(luò)結(jié)構(gòu)示意圖
BinaryDuo[22]算法提出二值卷積神經(jīng)網(wǎng)絡(luò)損失并非由于其表達(dá)能力有限,而是極度有限的兩個(gè)狀態(tài)使得模型難以被優(yōu)化。因此,在提高模型表達(dá)能力的同時(shí),仍然有一系列算法并行挖掘網(wǎng)絡(luò)的訓(xùn)練潛力。本節(jié)從損失函數(shù)設(shè)計(jì)和訓(xùn)練策略的角度對(duì)這些訓(xùn)練方法進(jìn)行歸納。
2.2.1 損失函數(shù)設(shè)計(jì)
從網(wǎng)絡(luò)的訓(xùn)練方面來(lái)看,僅關(guān)注某一層很難保證經(jīng)過(guò)一系列層后最終輸出的精確性。因此,網(wǎng)絡(luò)的訓(xùn)練需全局考慮二值化以及特定的任務(wù)目標(biāo)。近來(lái),大量研究工作對(duì)于網(wǎng)絡(luò)訓(xùn)練中的損失函數(shù)進(jìn)行探究,以期在二值化帶來(lái)的限制下?lián)p失函數(shù)仍能較為準(zhǔn)確地引導(dǎo)網(wǎng)絡(luò)參數(shù)的學(xué)習(xí)過(guò)程。
通常來(lái)講,一般的二值化方案僅關(guān)注對(duì)浮點(diǎn)數(shù)值的精確局部逼近,而忽略二值參數(shù)對(duì)全局損失的影響。Hou等[14]提出了損失感知二值化方法,使用擬牛頓算法與對(duì)角哈希近似直接將與二值權(quán)重相關(guān)的總損失最小化,并求得了近端步驟的有效閉環(huán)解。該文證明了除了從量化角度考慮與任務(wù)相關(guān)的損失外,設(shè)計(jì)額外的量化感知損失項(xiàng)也是可行的。另一方面,激活的分布對(duì)于整個(gè)網(wǎng)絡(luò)的優(yōu)化也是至關(guān)重要的。Ding等[23]總結(jié)了二值卷積神經(jīng)網(wǎng)絡(luò)中由前向二值化和反向傳播引起的問(wèn)題,包括激活分布的“退化”、“飽和”和“梯度不匹配”。為解決這些問(wèn)題,Ding等[23]提出了一系列對(duì)于二值特征圖的約束,聯(lián)合任務(wù)中的損失函數(shù)共同指導(dǎo)網(wǎng)絡(luò)訓(xùn)練,盡可能降低這些問(wèn)題帶來(lái)的不利影響。此外,全精度模型也可以損失函數(shù)的形式為二值網(wǎng)絡(luò)提供引導(dǎo)信息,用以指導(dǎo)、優(yōu)化二值網(wǎng)絡(luò)的訓(xùn)練。Liu等[24]認(rèn)為如果二值網(wǎng)絡(luò)能學(xué)習(xí)到與全精度網(wǎng)絡(luò)相似的分布,則其表現(xiàn)可獲得一定程度的提升。因而提出了基于“分布損失”的方法,通過(guò)計(jì)算二值網(wǎng)絡(luò)與全精度網(wǎng)絡(luò)輸出之間的KL散度來(lái)衡量二者分布間的差距,進(jìn)而引導(dǎo)二值卷積神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)與全精度網(wǎng)絡(luò)輸出相似的分布。同樣地,文獻(xiàn)[18]從特征圖級(jí)的約束出發(fā),以全精度網(wǎng)絡(luò)的特征圖為引導(dǎo)信息,通過(guò)注意力匹配損失函數(shù)的引入來(lái)對(duì)二值網(wǎng)絡(luò)的特征圖與全精度特征圖進(jìn)行匹配,提升二值網(wǎng)絡(luò)的訓(xùn)練潛能。另外,在卷積核級(jí)的約束上,Gu等[25]提出Bayesian損失,將全精度核和特征的先驗(yàn)分布合并到二值網(wǎng)絡(luò)中,通過(guò)對(duì)全精度卷積核的引導(dǎo)來(lái)提升二值卷積核的表達(dá)能力。
總結(jié)來(lái)講,利用構(gòu)建損失函數(shù)來(lái)提高二值卷積網(wǎng)絡(luò)的訓(xùn)練潛能,一般可以在不增加網(wǎng)絡(luò)推理時(shí)間的同時(shí)提升網(wǎng)絡(luò)性能,是當(dāng)下較為流行的訓(xùn)練手段之一。
2.2.2 訓(xùn)練策略
由于二值網(wǎng)絡(luò)所具有的高度離散性,其訓(xùn)練過(guò)程常需要引入特殊的訓(xùn)練方法,以使得訓(xùn)練過(guò)程穩(wěn)定且獲得更高的收斂精度。因此一類廣為研究的方法,即對(duì)二值網(wǎng)絡(luò)的訓(xùn)練方法進(jìn)行重新設(shè)計(jì),以構(gòu)建出高效的二值網(wǎng)絡(luò)。
傳統(tǒng)的二值方法同時(shí)對(duì)激活函數(shù)和權(quán)重進(jìn)行優(yōu)化,文獻(xiàn)[26]認(rèn)為這對(duì)反向傳播本就使用近似梯度的低比特網(wǎng)絡(luò)來(lái)說(shuō)是較為困難的,為此該文提出使用兩階段優(yōu)化策略來(lái)逐步找到良好的局部最小值。具體來(lái)說(shuō),首先構(gòu)建僅具有量化權(quán)重的網(wǎng)絡(luò)并對(duì)此進(jìn)行優(yōu)化,然后將該優(yōu)化所得的網(wǎng)絡(luò)作為預(yù)訓(xùn)練模型,將其激活也進(jìn)行量化,對(duì)權(quán)重與激活均量化的網(wǎng)絡(luò)進(jìn)行訓(xùn)練。與此同時(shí),文獻(xiàn)[26]還提出另一種漸進(jìn)式優(yōu)化方法,通過(guò)在訓(xùn)練過(guò)程中逐漸減少網(wǎng)絡(luò)中數(shù)值表示的位寬,實(shí)現(xiàn)從高精度網(wǎng)絡(luò)到低精度網(wǎng)絡(luò)的逐漸轉(zhuǎn)換。這種漸進(jìn)式訓(xùn)練策略可以為低位寬模型提供適宜的初始化條件,有助于減輕低比特網(wǎng)絡(luò)的訓(xùn)練難度。
與此同時(shí),模型蒸餾的方法被廣泛應(yīng)用在二值網(wǎng)絡(luò)訓(xùn)練中。一般來(lái)講,模型蒸餾的方法是通過(guò)大型教師模型提供引導(dǎo)信息,指導(dǎo)小型學(xué)生模型訓(xùn)練。在二值網(wǎng)絡(luò)的應(yīng)用中,全精度網(wǎng)絡(luò)或高精度網(wǎng)絡(luò)一般被視作教師模型,二值網(wǎng)絡(luò)或低精度網(wǎng)絡(luò)一般被視作學(xué)生模型,以實(shí)現(xiàn)二值網(wǎng)絡(luò)的引導(dǎo)性訓(xùn)練。文獻(xiàn)[26-27]等多篇論文都提出模型蒸餾的思想,通過(guò)高精度模型所生成的特征圖對(duì)低精度模型的訓(xùn)練過(guò)程加以指導(dǎo),從而使得低精度特征圖接近于高精度特征圖以獲取更高的訓(xùn)練精度。Zhuang等[26]提出一種基于全精度輔助訓(xùn)練的方案。該方案通過(guò)共同訓(xùn)練全精度網(wǎng)絡(luò)和二值網(wǎng)絡(luò),使得二值網(wǎng)絡(luò)的更新能夠同時(shí)借助全精度網(wǎng)絡(luò)提供的信息。實(shí)驗(yàn)證明該方法可有效提升二值網(wǎng)絡(luò)的訓(xùn)練性能。與純粹的蒸餾思想不同,文獻(xiàn)[28]提出了一種借助生成對(duì)抗模型來(lái)引導(dǎo)二值網(wǎng)絡(luò)訓(xùn)練的方法。該文利用對(duì)抗學(xué)習(xí)中生成器與判別器相互對(duì)抗、共同獲得性能提升的思想,將二值網(wǎng)絡(luò)視作生成器,生成“假”特征圖,由相應(yīng)的全精度網(wǎng)絡(luò)生成“真”特征圖,通過(guò)引入一個(gè)判別器對(duì)真假特征圖進(jìn)行鑒別,使得二值網(wǎng)絡(luò)生成特征圖分布更接近于全精度特征圖,從而提高二值網(wǎng)絡(luò)性能。
另外,一種基于“耦合-分解”思想的訓(xùn)練策略在BinaryDuo[22]方法中被提出。該文通過(guò)利用梯度失配估計(jì)器進(jìn)行實(shí)驗(yàn)發(fā)現(xiàn),對(duì)于二值網(wǎng)絡(luò)中存在的梯度不匹配問(wèn)題,采用更高的激活精度比修改激活函數(shù)的可微近似更為有效?;谠摪l(fā)現(xiàn),BinaryDuo在訓(xùn)練過(guò)程中將兩個(gè)二值激活耦合為三元激活,對(duì)該三元耦合網(wǎng)絡(luò)進(jìn)行優(yōu)化,并將優(yōu)化所得的網(wǎng)絡(luò)解耦為二值網(wǎng)絡(luò),通過(guò)微調(diào)進(jìn)一步提升網(wǎng)絡(luò)性能。同時(shí),文獻(xiàn)[29]中提出了一種實(shí)現(xiàn)梯度量化的DoReFa-Net。由于向前/向后遍歷期間的卷積可以分別在低位寬權(quán)重和激活/梯度上運(yùn)行,因此DoReFa-Net可以使用位卷積內(nèi)核來(lái)加快訓(xùn)練和推理速度。
此外,在訓(xùn)練二值卷積神經(jīng)網(wǎng)絡(luò)時(shí)選擇適當(dāng)?shù)某瑓?shù)和特定的優(yōu)化器有助于提高二值網(wǎng)絡(luò)的性能,使二值網(wǎng)絡(luò)的收斂更為迅速并最終達(dá)到較高的收斂精度。大多數(shù)現(xiàn)有的二值卷積神經(jīng)網(wǎng)絡(luò)模型選擇了自適應(yīng)學(xué)習(xí)率優(yōu)化器,例如Adam優(yōu)化器,使用Adam優(yōu)化器可以使訓(xùn)練過(guò)程收斂更快更好[30]。同時(shí),設(shè)置批量歸一化處理對(duì)于網(wǎng)絡(luò)的訓(xùn)練也很關(guān)鍵,在網(wǎng)絡(luò)訓(xùn)練過(guò)程中通過(guò)批量歸一化處理對(duì)網(wǎng)絡(luò)的特征圖分布進(jìn)行調(diào)整,能夠使網(wǎng)絡(luò)訓(xùn)練更加充分,有助于提升二值網(wǎng)絡(luò)的整體性能。另外,一些研究者試圖從信息論的角度對(duì)二值網(wǎng)絡(luò)進(jìn)行解釋,并得出了相關(guān)的正則化訓(xùn)練技巧。Qin等[31]指出量化函數(shù)的使用使得二值網(wǎng)絡(luò)的前向與反向傳播都不可避免地產(chǎn)生了信息損失。為了降低這種損失,Qin等[31]從最大化信息熵的角度出發(fā)來(lái)最小化前向傳播中的信息損失,通過(guò)簡(jiǎn)單地正則化操作使得二值網(wǎng)絡(luò)的訓(xùn)練更為魯棒。
除圖像分類任務(wù)之外,目標(biāo)檢測(cè)與語(yǔ)義分割也是視覺(jué)領(lǐng)域的常見(jiàn)任務(wù)之一,且相比于圖像分類其復(fù)雜度更高、難度更大,其性能對(duì)于二值化的敏感度也更高。目前領(lǐng)域內(nèi)存在少量研究,其二值網(wǎng)絡(luò)是專門(mén)為這兩種復(fù)雜任務(wù)而設(shè)計(jì)的。
在目標(biāo)檢測(cè)方面,由于常規(guī)的網(wǎng)絡(luò)二值化方法通常在具有受限表達(dá)能力的一級(jí)或兩級(jí)檢測(cè)器中直接量化權(quán)重和激活,這會(huì)造成信息冗余,從而導(dǎo)致大量誤報(bào)并嚴(yán)重降低性能。針對(duì)這一問(wèn)題,二值檢測(cè)器BiDet[32]提出充分利用二值卷積神經(jīng)網(wǎng)絡(luò)的表達(dá)能力,通過(guò)冗余消除進(jìn)行目標(biāo)檢測(cè),通過(guò)減少誤報(bào)來(lái)提高檢測(cè)精度。具體來(lái)說(shuō),將信息瓶頸(Information Bottleneck,IB)原理推廣到目標(biāo)檢測(cè)領(lǐng)域,對(duì)高級(jí)特征圖中的信息量進(jìn)行限制,并且使得特征圖與對(duì)象檢測(cè)之間的互信息最大化。與此同時(shí),BiDet學(xué)習(xí)稀疏對(duì)象先驗(yàn),以便后驗(yàn)者可專注于具有誤報(bào)消除的信息檢測(cè)預(yù)測(cè)。BiDet是第一個(gè)提出將目標(biāo)檢測(cè)任務(wù)中的主干網(wǎng)絡(luò)和檢測(cè)網(wǎng)絡(luò)同時(shí)量化的二值網(wǎng)絡(luò),然而其結(jié)果顯示,二值化后的網(wǎng)絡(luò)產(chǎn)生了較大性能損失,二值卷積神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測(cè)任務(wù)中仍然任重而道遠(yuǎn)。
對(duì)于語(yǔ)義分割任務(wù)而言,其對(duì)于網(wǎng)絡(luò)特征圖的多尺度信息要求更高。在這種要求下,GroupNet[21]提出二值并行卷積(Binary Parallel Atrous Convolution, BPAC),該算法將豐富的多尺度上下文嵌入到BNN中以進(jìn)行準(zhǔn)確的語(yǔ)義分割。與僅使用Groupnet相比,具有BPAC的Group-Net可以在保持復(fù)雜度不變的情況下顯著提高模型性能。
除此之外的大部分應(yīng)用方法均是以分類為主,在其他應(yīng)用上進(jìn)行遷移和測(cè)試,很少有針對(duì)任務(wù)本身設(shè)計(jì)的二值化方法。
近年來(lái)網(wǎng)絡(luò)結(jié)構(gòu)搜索(Neural Architecture Search, NAS)[33]在深度學(xué)習(xí)領(lǐng)域取得了令人振奮的成績(jī),這種方法通常自動(dòng)設(shè)計(jì)針對(duì)于各種任務(wù)的最佳神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)。二值網(wǎng)絡(luò)結(jié)構(gòu)搜索(Binary Neural Architecture Search, BNAS)[34]提出將通道采樣和降低搜索空間引入到NAS中,以顯著降低搜索成本,通過(guò)基于性能的策略來(lái)放棄有效性低的操作。Shen等[35]提出了一個(gè)用于自動(dòng)搜索緊湊而準(zhǔn)確的二值卷積神經(jīng)網(wǎng)絡(luò)的新框架。具體而言,基于該框架的二值網(wǎng)絡(luò)將每層中的通道數(shù)編碼到搜索空間中,并在訓(xùn)練過(guò)程中利用進(jìn)化算法進(jìn)行優(yōu)化。實(shí)驗(yàn)表明,該方法搜索得到的二值卷積神經(jīng)網(wǎng)絡(luò)模型在模型大小和計(jì)算增量都可以接受的情況下,可以實(shí)現(xiàn)與全精度模型完全匹配的性能。
除NAS之外,還有一些研究從優(yōu)化角度重新考慮二值網(wǎng)絡(luò)的優(yōu)化問(wèn)題。文獻(xiàn)[36]認(rèn)為在二值網(wǎng)絡(luò)中,不能僅將訓(xùn)練中的全精度權(quán)重直接類似于實(shí)值網(wǎng)絡(luò)中的權(quán)重。相反,它們的主要作用是在訓(xùn)練過(guò)程中為二值權(quán)重的更新提供慣性。因此,文獻(xiàn)[36]為二值網(wǎng)絡(luò)的優(yōu)化提供了新穎的見(jiàn)解,根據(jù)慣性來(lái)解釋當(dāng)前二值網(wǎng)絡(luò)優(yōu)化方法,并設(shè)計(jì)了一個(gè)專用于二值網(wǎng)絡(luò)的優(yōu)化器Bop。根據(jù)將Bop用于二值網(wǎng)絡(luò)優(yōu)化其在CIFAR-10和ImageNet數(shù)據(jù)集上的性能表現(xiàn),文獻(xiàn)[36]很好地證明了該種二值網(wǎng)絡(luò)優(yōu)化新視角的可行性。而將訓(xùn)練中的全精度權(quán)重重新從慣性的角度加以定義以及引入Bop在一起,也可以幫助研究者們對(duì)二值網(wǎng)絡(luò)優(yōu)化有更深入地理解,并為進(jìn)一步改進(jìn)二值網(wǎng)絡(luò)的訓(xùn)練方法開(kāi)辟了新的道路。
此外,考慮到在二值網(wǎng)絡(luò)中梯度下降法并不適用于量化函數(shù),文獻(xiàn)[37]提出可以將二值網(wǎng)絡(luò)的優(yōu)化看作一個(gè)離散的優(yōu)化問(wèn)題,為量化函數(shù)設(shè)置新的目標(biāo)以最小化損失。對(duì)于離散優(yōu)化問(wèn)題,其目標(biāo)是找到一組目標(biāo),以使每個(gè)單元(包括輸出)都有線性可分離的問(wèn)題要解決。給定這些目標(biāo),網(wǎng)絡(luò)將分解為單獨(dú)的感知器,因而可以使用標(biāo)準(zhǔn)凸方法進(jìn)行學(xué)習(xí)。在此基礎(chǔ)上,文獻(xiàn)[37]開(kāi)發(fā)了一種用于學(xué)習(xí)深閾值網(wǎng)絡(luò)的遞歸微型批處理算法。該方法的提出為量化領(lǐng)域開(kāi)辟了一個(gè)新的研究方向,并在分類數(shù)據(jù)集ImageNet上進(jìn)行了驗(yàn)證。
二值卷積神經(jīng)網(wǎng)絡(luò)量化應(yīng)用主要集中在目標(biāo)分類任務(wù)上,同時(shí)在目標(biāo)檢測(cè)與語(yǔ)義分割任務(wù)上也有少部分應(yīng)用。本節(jié)將分別介紹不同應(yīng)用中常用的數(shù)據(jù)集。
3.1.1 分類數(shù)據(jù)集
對(duì)于分類任務(wù),常用的數(shù)據(jù)集主要包括MNIST手寫(xiě)字體數(shù)據(jù)集[38]、SVHN數(shù)據(jù)集[39]、CIFAR10/100數(shù)據(jù)集[40]以及ImageNet大規(guī)模圖像數(shù)據(jù)集[41]。
MNIST:該數(shù)據(jù)集來(lái)自美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所,由不同人手寫(xiě)的數(shù)字圖片構(gòu)成。數(shù)據(jù)集包含60 000個(gè)用于訓(xùn)練的樣本和10 000個(gè)用于測(cè)試的樣本。這些樣本均已經(jīng)過(guò)尺寸標(biāo)準(zhǔn)化處理使數(shù)字位于圖像中心。每個(gè)樣本大小固定為28×28像素,其像素值范圍為0~1。
SVHN:該數(shù)據(jù)來(lái)源于谷歌街景圖像中門(mén)牌號(hào)碼,每張圖片中包含一組‘0~9’的阿拉伯?dāng)?shù)字。數(shù)據(jù)集分成了訓(xùn)練集、測(cè)試集與附加集3個(gè)子集。其中訓(xùn)練集中包含73 257個(gè)數(shù)字,測(cè)試集中包含26 032個(gè)數(shù)字,附加集有531 131個(gè)數(shù)字。其圖像大小固定為32×32像素,像素值范圍為0~1。相比于同為數(shù)字識(shí)別數(shù)據(jù)集的MNIST,SVHN由于標(biāo)記數(shù)據(jù)更多、來(lái)自自然場(chǎng)景,因而識(shí)別難度更大。
CIFAR10/100:CIFAR10與CIFA100均為彩色圖片數(shù)據(jù)集。其中CIFAR10由包含10個(gè)類別的60 000個(gè)彩色圖像樣本組成,并被分成了訓(xùn)練集與測(cè)試集兩個(gè)子集。訓(xùn)練集和測(cè)試集分別包含50 000張與10 000張圖像,每張圖像分辨率為32×32像素。該數(shù)據(jù)集覆蓋了包括飛機(jī)、汽車(chē)、鳥(niǎo)類、貓、鹿、狗、青蛙、馬、船和卡車(chē)在內(nèi)的10個(gè)類別,類別之間完全互斥。與CIFAR10數(shù)據(jù)組成結(jié)構(gòu)一致,CIFAR100則包含具有更為細(xì)致分類的100個(gè)類別,每個(gè)類別包含了600個(gè)圖像樣本,為500個(gè)訓(xùn)練樣本與100個(gè)測(cè)試樣本的組合。由于需要進(jìn)行更精細(xì)的識(shí)別,CIFAR100的識(shí)別難度比CIFAR10更大。
ImageNet:ImageNet是一個(gè)用于視覺(jué)對(duì)象識(shí)別研究的大型可視化數(shù)據(jù)庫(kù)。相比于前面介紹的數(shù)據(jù)集,ImageNet不管在圖片數(shù)量還是圖片分辨率上都有數(shù)量級(jí)上的提升。其由1 000個(gè)類別組成,包括了約120萬(wàn)張訓(xùn)練圖像和5萬(wàn)張驗(yàn)證圖像。ImageNet對(duì)深度學(xué)習(xí)的浪潮起了巨大的推動(dòng)作用,也是當(dāng)前神經(jīng)網(wǎng)絡(luò)量化在分類數(shù)據(jù)集上驗(yàn)證的最常用數(shù)據(jù)集。
3.1.2 目標(biāo)檢測(cè)與語(yǔ)義分割數(shù)據(jù)集
相比于圖像分類數(shù)據(jù)集,目標(biāo)檢測(cè)與語(yǔ)義分割數(shù)據(jù)集由于標(biāo)注工作量巨大,因而其建立過(guò)程更為復(fù)雜。目前領(lǐng)域內(nèi)常用的檢測(cè)、分割數(shù)據(jù)集有PASCAL VOC2012[42]數(shù)據(jù)集與COCO[43]數(shù)據(jù)集。
PASCAL VOC2012:該數(shù)據(jù)集源于 PASCAL 視覺(jué)目標(biāo)檢測(cè)比賽,用于評(píng)估計(jì)算機(jī)視覺(jué)領(lǐng)域中包括語(yǔ)義分割、目標(biāo)檢測(cè)等在內(nèi)的多種任務(wù)上模型的性能。該數(shù)據(jù)集包含人、常見(jiàn)動(dòng)物、交通車(chē)輛、室內(nèi)家具用品在內(nèi)的4個(gè)大類并進(jìn)一步細(xì)分為20小類。對(duì)于檢測(cè)任務(wù),VOC2012包含了11 540張圖片在內(nèi)的27 450個(gè)物體,而對(duì)于分割任務(wù),VOC2012則包含了2 913張圖片在內(nèi)的6 929個(gè) 物體。
COCO:該數(shù)據(jù)集是 Microsoft 團(tuán)隊(duì)提供的用于圖像識(shí)別和目標(biāo)檢測(cè)的數(shù)據(jù)集,是一個(gè)大型、豐富的物體檢測(cè)與分割數(shù)據(jù)集。該數(shù)據(jù)集以場(chǎng)景理解為目標(biāo),主要從復(fù)雜的日常場(chǎng)景截取圖像。數(shù)據(jù)集由80個(gè)類別構(gòu)成,涵括了超過(guò)33萬(wàn)張圖片,其中20萬(wàn)張有標(biāo)注,整個(gè)數(shù)據(jù)集中個(gè)體的數(shù)目超過(guò)了150萬(wàn)個(gè)。現(xiàn)有研究使用COCO trainval 35K(115K圖像)進(jìn)行分割訓(xùn)練,并使用minival(5K圖像)進(jìn)行分割驗(yàn)證。
對(duì)于MNIST、SVHN,由于其類別較小,數(shù)據(jù)量也較少,現(xiàn)有二值卷積神經(jīng)網(wǎng)絡(luò)在這些數(shù)據(jù)集上往往取得接近于全精度的結(jié)果,對(duì)于二值方法性能評(píng)估的意義不大。因此,近年來(lái)很少有工作報(bào)告該數(shù)據(jù)集上的測(cè)試精度。CIFAR10/100介于MNIST、SVHN與ImageNet之間,但由于數(shù)據(jù)量有限,在CIFAR數(shù)據(jù)集上進(jìn)行測(cè)試容易造成過(guò)擬合,但由于其相對(duì)難度和訓(xùn)練時(shí)間適中,也多為研究者所采用。
在本節(jié)中,列出了近年來(lái)關(guān)于二值卷積神經(jīng)網(wǎng)絡(luò)比較經(jīng)典和先進(jìn)方法的結(jié)果,其所有數(shù)據(jù)都是直接引用對(duì)應(yīng)原始論文中的結(jié)果。在此,選取了XNOR-Net[12]、Bi-Real Net[13]、XNOR-Net++[44]、PCNN[16]、BONN[11]、IR-Net[31]、CI-Net[45]、BNN[17]、ABC-Net[46]、BNN+[19]、CBCN[20]、GroupNet[21]、文獻(xiàn)[18]中的baseline、文獻(xiàn)[18]以及BinaryDuo[22]等方法來(lái)進(jìn)行對(duì)比,用以顯示當(dāng)前二值網(wǎng)絡(luò)在目標(biāo)分類任務(wù)上的性能水平,如表1所示,其中:FP表示全精度網(wǎng)絡(luò)。
從表1的結(jié)果中,可以看出,由于訓(xùn)練時(shí)的GPU資源有限,目前大部分研究在展示基于ImageNet數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果時(shí),都選用了模型較小、對(duì)GPU資源需求較少的ResNet18[1]結(jié)構(gòu)?;诙祪?yōu)化的XNOR-Net方法比樸素量化的BNN高出9%(51.2%~42.2%),這也說(shuō)明了XNOR-Net方法優(yōu)化得到的尺度因子在量化過(guò)程中大大提高了二值化模型的表達(dá)能力。此外,基于結(jié)構(gòu)設(shè)計(jì)的方法,Bi-Real Net、CBCN、GroupNet、文獻(xiàn)[18]中的方法進(jìn)一步提高了二值網(wǎng)絡(luò)的表達(dá)能力。通過(guò)一個(gè)簡(jiǎn)單的特征圖短接的加法操作,Bi-Real Net對(duì)二值卷積后進(jìn)行了信息補(bǔ)償,從而獲得了超過(guò)5%的性能提升。GroupNet則采用犧牲計(jì)算量的方法來(lái)擴(kuò)展二值分支,當(dāng)擴(kuò)展到4倍時(shí),其ResNet18的Top-1性能高達(dá)64.4%,這也說(shuō)明了從結(jié)構(gòu)設(shè)計(jì)角度對(duì)二值網(wǎng)絡(luò)進(jìn)行適當(dāng)調(diào)整,可以大幅增加其表達(dá)能力。但是如何在結(jié)構(gòu)設(shè)計(jì)中同時(shí)考慮效率與分類精度兩個(gè)方面,以獲得這兩個(gè)度量上的平衡,是目前存在的一個(gè)關(guān)鍵問(wèn)題。
表1 不同新型的二值卷積神經(jīng)網(wǎng)絡(luò)在ImageNet分類數(shù)據(jù)集上的驗(yàn)證
關(guān)于訓(xùn)練策略而言,BinaryDuo通過(guò)對(duì)較高精度的三值網(wǎng)絡(luò)的解耦,在不增加推理過(guò)程中存儲(chǔ)和計(jì)算量的情況下大大提高了二值網(wǎng)絡(luò)的性能。此外,文獻(xiàn)[18]方法使用了模型蒸餾、漸進(jìn)量化等多種訓(xùn)練策略,很大程度上挖掘了模型的訓(xùn)練潛力。其ResNet18結(jié)構(gòu)在ImageNet分類數(shù)據(jù)集上可以達(dá)到65.4%的精度,在增加不足1%計(jì)算量的情況下,將其與全精度網(wǎng)絡(luò)的性能差距縮小到了3.9%。
文獻(xiàn)[21]認(rèn)為在目標(biāo)檢測(cè)任務(wù)中,對(duì)檢測(cè)網(wǎng)絡(luò)的主干部分和特征金字塔均進(jìn)行二值化處理對(duì)性能的影響較小。但是,對(duì)于網(wǎng)絡(luò)的其他部分,如檢測(cè)頭,當(dāng)進(jìn)行量化時(shí)情況并不樂(lè)觀。實(shí)驗(yàn)表明對(duì)檢測(cè)頭進(jìn)行二值化會(huì)導(dǎo)致檢測(cè)性能明顯下降。這種下降可以根據(jù)檢測(cè)網(wǎng)絡(luò)的特性得到解釋。一般認(rèn)為,檢測(cè)網(wǎng)絡(luò)的檢測(cè)頭部分是負(fù)責(zé)將提取的多級(jí)特征適配到分類和回歸目標(biāo),其表達(dá)能力對(duì)于檢測(cè)器的性能至關(guān)重要。但是,當(dāng)多級(jí)信息進(jìn)行二值化操作而被強(qiáng)制約束為{-1,1}時(shí),其信息會(huì)遭到破壞而影響檢測(cè)性能。同時(shí)這也表明除主干外的其他檢測(cè)模塊對(duì)量化都很敏感,需要得到更多的研究以減輕其量化困難的問(wèn)題,因而這也很可能是未來(lái)工作的一個(gè)有希望的方向。
此外,對(duì)于語(yǔ)義分割任務(wù)而言,文獻(xiàn)[21]提出的基于ResNet50骨干網(wǎng)的Group-Net性能下降相對(duì)最大。進(jìn)一步表明,廣泛使用的瓶頸結(jié)構(gòu)對(duì)于二值網(wǎng)絡(luò)并不友好。
除了目標(biāo)分類、目標(biāo)檢測(cè)和語(yǔ)義分割等一些主流應(yīng)用驗(yàn)證,還有一些研究也在其他應(yīng)用上進(jìn)行過(guò)實(shí)驗(yàn)驗(yàn)證,比如文獻(xiàn)[28]在目標(biāo)跟蹤任務(wù)中的Got10k、OTB50、OTB100及 UAV123等數(shù)據(jù)集上進(jìn)行驗(yàn)證,實(shí)驗(yàn)表明在跟蹤任務(wù)的精度和成功率兩大指標(biāo)方面,二值網(wǎng)絡(luò)與全精度網(wǎng)絡(luò)仍然具有一定的差距。此外,Bi-Real Net將二值模型應(yīng)用在深度估計(jì)應(yīng)用領(lǐng)域,其是自動(dòng)駕駛和無(wú)人導(dǎo)航的重要任務(wù),壓縮深度估計(jì)CNN對(duì)于將強(qiáng)大的CNN部署到內(nèi)存和計(jì)算資源有限的移動(dòng)設(shè)備至關(guān)重要。在深度估計(jì)任務(wù)上進(jìn)行驗(yàn)證時(shí),Bi-Real Net 采用了KITTI數(shù)據(jù)集[47]。結(jié)果表明,在深度估計(jì)實(shí)驗(yàn)中,Bi-Real Net二值卷積神經(jīng)網(wǎng)絡(luò)幾乎能達(dá)到和全精度網(wǎng)絡(luò)相近的性能,僅僅產(chǎn)生了0.3%的微量性能損失。另外,還有研究[16]在人臉識(shí)別、行人重識(shí)別、手勢(shì)分類[48]等應(yīng)用上進(jìn)行過(guò)實(shí)驗(yàn)驗(yàn)證,實(shí)驗(yàn)結(jié)果顯示直接遷移的二值網(wǎng)絡(luò)在其他任務(wù)應(yīng)用上還與全精度網(wǎng)絡(luò)有一定的差距。
為了能夠使二值網(wǎng)絡(luò)得到實(shí)際中的應(yīng)用,目前針對(duì)二值網(wǎng)絡(luò)的嵌入式設(shè)備開(kāi)發(fā)也有相應(yīng)研究。Bi-Real Net基于嵌入式應(yīng)用的Vivado設(shè)計(jì)套件[49]估算了18層Bi-Real Net及其在現(xiàn)場(chǎng)可編程門(mén)陣列(Field-Programmable Gate Aray, FPGA)上的全精度網(wǎng)絡(luò)的執(zhí)行時(shí)間。與FPGA板上的全精度網(wǎng)絡(luò)相比,二值卷積神經(jīng)網(wǎng)絡(luò)Bi-Real Net使用相同或更少的資源將執(zhí)行速度加速6.07倍。與全精度卷積相比,二值卷積層的速度提高了15.8倍。通過(guò)累加所有操作的執(zhí)行時(shí)間,最終經(jīng)過(guò)測(cè)試,18層Bi-Real Net比具有相同結(jié)構(gòu)的全精度網(wǎng)絡(luò)能夠加速7.38倍。
另外如文獻(xiàn)[50]所述,在二值網(wǎng)絡(luò)領(lǐng)域已經(jīng)有一些推斷框架,例如BMXNet[51]、BitStream[52]、BitFlow[53]。其中,BitStream和BitFlow只進(jìn)行了論文發(fā)表,而沒(méi)有建立源代碼或二值庫(kù)。BMXNet 雖然開(kāi)源,但在 Google Pixel 1 手機(jī)上進(jìn)行的測(cè)試顯示,其運(yùn)行速度甚至比全精度推斷框架TensorFlow Lite還要慢。因此,為了填補(bǔ)二值網(wǎng)絡(luò)推理框架缺失的空白,京東AI開(kāi)源了一個(gè)針對(duì)ARM指令集高度優(yōu)化的二值網(wǎng)絡(luò)推理框架dabnn[54],這也是第1個(gè)高度優(yōu)化的針對(duì)二值網(wǎng)絡(luò)的開(kāi)源推理框架。和BMXNet相比,dabnn的速度得到了一個(gè)數(shù)量級(jí)的提升。一些研究者也實(shí)際部署與應(yīng)用該推理框架,用以測(cè)試所設(shè)計(jì)二值網(wǎng)絡(luò)的實(shí)際推理速度。如IR-Net便使用dabnn框架計(jì)算了算法部署到實(shí)際移動(dòng)設(shè)備中時(shí)的效率。與現(xiàn)有的高性能推理(包括NCNN[30]和DSQ[55])比較結(jié)果如表2[31]所示,從中可以看出相比于全精度網(wǎng)絡(luò)與其他低位寬網(wǎng)絡(luò),二值卷積神經(jīng)網(wǎng)絡(luò)IR-Net的推理速度要快得多。與此同時(shí),IR-Net的模型大小也可以大大減小,且在IR-Net中引入的移位尺度幾乎不會(huì)帶來(lái)額外的推理時(shí)間和存儲(chǔ)消耗。
表2 不同二值卷積神經(jīng)網(wǎng)絡(luò)在推理過(guò)程中的存儲(chǔ)量和推理時(shí)間[31]
表3[49]顯示了各種方案中BNN的參數(shù)大小和計(jì)算成本。計(jì)算成本(Floating Point Operations, FLOPs)是根據(jù)Bi-Real Net中的方法計(jì)算而得,即浮點(diǎn)數(shù)乘法的數(shù)量與1/64倍1位乘法的數(shù)量之和。從表中的結(jié)果可以看出,對(duì)于大部分基于訓(xùn)練方法或者優(yōu)化近似的二值卷積神經(jīng)網(wǎng)絡(luò)而言,其并未改變其網(wǎng)絡(luò)的基本結(jié)構(gòu)配置,因此在推理過(guò)程中,具有相近的參數(shù)和浮點(diǎn)計(jì)算量。對(duì)于一些擴(kuò)展結(jié)構(gòu)的二值卷積神經(jīng)網(wǎng)絡(luò)而言,其參數(shù)和計(jì)算量會(huì)相對(duì)增加,以GroupNet為例,當(dāng)擴(kuò)展倍數(shù)為1時(shí),GroupNet的參數(shù)量和計(jì)算量與普通二值網(wǎng)絡(luò)相同,而當(dāng)相應(yīng)擴(kuò)展倍數(shù)時(shí),其卷積層的計(jì)算量和參數(shù)量也會(huì)成倍增加。
表3 各種新型二值卷積神經(jīng)網(wǎng)絡(luò)在ImageNet分類數(shù)據(jù)集上的參數(shù)量和FLOPS[49]
二值卷積神經(jīng)網(wǎng)絡(luò)旨在解決深度學(xué)習(xí)技術(shù)的效率瓶頸,這將會(huì)對(duì)社會(huì)產(chǎn)生積極影響。特別是,由于小型智能設(shè)備廣泛的商業(yè)價(jià)值和令人興奮的前景,全世界將配備數(shù)十億個(gè)小型、聯(lián)網(wǎng)和智能設(shè)備。這些設(shè)備中的許多設(shè)備將嵌入家庭、車(chē)輛、工廠和城市中。此外,可穿戴設(shè)備正變得越來(lái)越流行。低功耗計(jì)算設(shè)備的激增將推動(dòng)工業(yè)領(lǐng)域乃至整個(gè)社區(qū)的發(fā)展,并在下一波個(gè)人計(jì)算浪潮中發(fā)揮至關(guān)重要的作用。重要的是,這些設(shè)備將在很大程度上依賴于現(xiàn)代深度學(xué)習(xí),從而在感知和決策方面變得“智能”。通過(guò)將數(shù)據(jù)從移動(dòng)設(shè)備上載到云來(lái)依靠云計(jì)算可能會(huì)遇到許多問(wèn)題,由于延遲、隱私問(wèn)題,更是難以實(shí)現(xiàn),因而變得不可行。因此,迫切需要在移動(dòng)設(shè)備本身上執(zhí)行深度學(xué)習(xí)推理。但是,深度學(xué)習(xí)方法主要是為“重”平臺(tái)(例如GPU)設(shè)計(jì)的,而大多數(shù)移動(dòng)設(shè)備都沒(méi)有配備強(qiáng)大的GPU,也沒(méi)有足夠的內(nèi)存來(lái)運(yùn)行和存儲(chǔ)龐大的深度模型。解決這些瓶頸將使我們能夠設(shè)計(jì)和實(shí)施有效的深度學(xué)習(xí)系統(tǒng),這將幫助我們解決各種實(shí)際應(yīng)用,例如具有高度隱私的個(gè)人計(jì)算。因此,二值卷積神經(jīng)網(wǎng)絡(luò)作為解決在提高深度學(xué)習(xí)推理效率以使其更具可擴(kuò)展性和實(shí)用性方面的核心技術(shù)挑戰(zhàn),將會(huì)為整個(gè)社會(huì)帶來(lái)巨大利益。
此外,目前二值網(wǎng)絡(luò)應(yīng)用主要面向目標(biāo)分類,一些文章也專門(mén)設(shè)計(jì)了針對(duì)于語(yǔ)義分割和目標(biāo)檢測(cè)任務(wù)的二值網(wǎng)絡(luò)。而對(duì)于視頻、語(yǔ)音、其他時(shí)序信號(hào)方面,網(wǎng)絡(luò)量化技術(shù)的發(fā)展和應(yīng)用仍處于較為空白的階段。而面對(duì)這些應(yīng)用,若要取得較好的量化結(jié)果,必須充分考慮應(yīng)用的特點(diǎn),比如視頻信號(hào)具有強(qiáng)幀間相關(guān)性特點(diǎn)。語(yǔ)音、通信信號(hào)為一維信號(hào),量化后可能會(huì)顯示出與二維圖像信號(hào)完全不同的特點(diǎn),要考慮其時(shí)域、頻域特點(diǎn),結(jié)合任務(wù)特征進(jìn)行量化處理。
盡管二值卷積神經(jīng)網(wǎng)絡(luò)中現(xiàn)今已取得很大進(jìn)展,但相對(duì)于全精度網(wǎng)絡(luò)而言,仍然面臨巨大的性能損失,特別是對(duì)大型網(wǎng)絡(luò)和數(shù)據(jù)集。主要原因可能包括:① 尚不清楚哪種網(wǎng)絡(luò)結(jié)構(gòu)是適合二值化的,即未能總結(jié)出網(wǎng)絡(luò)哪些組成即使進(jìn)行二值化之后,也可以保留網(wǎng)絡(luò)中較為充足的信息。② 即 使我們具有用于二值化的梯度估計(jì)器或近似函數(shù),在離散空間中優(yōu)化二進(jìn)制網(wǎng)絡(luò)也是一個(gè)難題。但是通過(guò)現(xiàn)有的研究明確了提高二值網(wǎng)絡(luò)表達(dá)能力以及充分挖掘其訓(xùn)練潛力都將對(duì)提高二值網(wǎng)絡(luò)性能產(chǎn)生積極影響。
本文對(duì)二值卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行全面的綜述,主要從提高網(wǎng)絡(luò)表達(dá)能力與充分挖掘網(wǎng)絡(luò)訓(xùn)練潛力的角度出發(fā),給出當(dāng)前二值卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展脈絡(luò)與研究現(xiàn)狀。具體而言,從二值化量化方法設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì)兩方面進(jìn)行提高網(wǎng)絡(luò)表達(dá)能力方法的概述,從損失函數(shù)設(shè)計(jì)和訓(xùn)練策略兩方面進(jìn)行充分挖掘網(wǎng)絡(luò)訓(xùn)練潛力方法的概述。最后,將二值卷積神經(jīng)網(wǎng)絡(luò)在不同任務(wù)與硬件平臺(tái)的應(yīng)用情況進(jìn)行總結(jié)和討論,并展望了未來(lái)研究可能面臨的挑戰(zhàn)。對(duì)于當(dāng)前二值卷積神經(jīng)網(wǎng)絡(luò)的研究,本文總結(jié)如下:
1) 二值卷積神經(jīng)網(wǎng)絡(luò)占用存儲(chǔ)空間小、計(jì)算效率高,研究的主要挑戰(zhàn)是其與全精度網(wǎng)絡(luò)之間巨大的性能差異。
2) 二值網(wǎng)絡(luò)的研究,主要以提高網(wǎng)絡(luò)的表達(dá)能力和挖掘網(wǎng)絡(luò)的訓(xùn)練潛力為主。
3) 針對(duì)于挖掘網(wǎng)絡(luò)訓(xùn)練潛力的方法,在一般情況推理模式下模型存儲(chǔ)和計(jì)算量都不發(fā)生改變,而模型性能提高。
4) 部分對(duì)于以提高網(wǎng)絡(luò)表達(dá)能力為主的方法會(huì)增加網(wǎng)絡(luò)的存儲(chǔ)或計(jì)算量,并容易獲得顯著的性能提升。
5) 現(xiàn)在二值網(wǎng)絡(luò)的應(yīng)用主要以ImageNet數(shù)據(jù)集上的目標(biāo)分類為主,少量研究也在目標(biāo)檢測(cè)、語(yǔ)義分割、目標(biāo)跟蹤、深度估計(jì)、人臉識(shí)別及行人重識(shí)別等應(yīng)用上進(jìn)行驗(yàn)證,表明二值網(wǎng)絡(luò)的適用范圍較廣。
6) 目前將二值網(wǎng)絡(luò)配置在硬件設(shè)備上實(shí)現(xiàn)實(shí)際加速已有一些研究,主要集中在ARM、FPGA上,但開(kāi)源研究仍較少,由于各種結(jié)構(gòu)設(shè)計(jì)和輔助模塊,在真實(shí)硬件設(shè)備上并不一定有較大的加速比,因此,實(shí)際硬件加速也將是二值網(wǎng)絡(luò)研究的一個(gè)重點(diǎn)方向。
綜上所述,二值卷積神經(jīng)網(wǎng)絡(luò)的研究將對(duì)未來(lái)嵌入式小型便攜設(shè)備的發(fā)展產(chǎn)生不可忽略的作用,并可極大推動(dòng)深度學(xué)習(xí)技術(shù)的發(fā)展和應(yīng)用。