曹渝昆,桂麗嬡
(上海電力大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 200090)
在深度學(xué)習(xí)領(lǐng)域,研究人員通常將循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)視為序列建模的默認(rèn)配置[1-2],但其普遍存在梯度消失或梯度爆炸且不能實(shí)現(xiàn)并行化等問(wèn)題,而可實(shí)現(xiàn)并行化處理的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)具有不同于序列時(shí)間方向的反向傳播路徑及穩(wěn)定的梯度,因此其從20世紀(jì)80年代開(kāi)始就被廣泛應(yīng)用于語(yǔ)音識(shí)別[3]、自然語(yǔ)言處理(Natural Language Processing,NLP)[4]、句子與文本分類(lèi)[5-7]及音頻與圖像生成[8-9]等任務(wù)中。
卡內(nèi)基梅隆大學(xué)的BAI等人于2018年提出一種時(shí)間卷積網(wǎng)絡(luò)(Temporal Convolutional Network,TCN)[10],其在序列數(shù)據(jù)處理任務(wù)上相比經(jīng)典循環(huán)神經(jīng)網(wǎng)絡(luò)具有更大的性能優(yōu)勢(shì)。雖然TCN提供了高效跨時(shí)間而非本地調(diào)用的方法,且無(wú)須完全按照順序處理,加快了訓(xùn)練速度,但是其仍存在計(jì)算量大和參數(shù)冗余的問(wèn)題,導(dǎo)致其難以應(yīng)用于算力和存儲(chǔ)空間受限的手機(jī)、平板電腦、筆記本電腦等終端設(shè)備。為此,本文基于深度可分離卷積,提出一種輕量級(jí)時(shí)間卷積網(wǎng)絡(luò)(Lightweight TCN,L-TCN)結(jié)構(gòu)。
L-TCN網(wǎng)絡(luò)結(jié)構(gòu)主要受TCN網(wǎng)絡(luò)結(jié)構(gòu)的啟發(fā)。TCN是基于卷積神經(jīng)網(wǎng)絡(luò)核心結(jié)構(gòu)的一個(gè)簡(jiǎn)單架構(gòu),其在不同任務(wù)和數(shù)據(jù)集上的性能均優(yōu)于經(jīng)典遞歸神經(jīng)網(wǎng)絡(luò),如長(zhǎng)短期循環(huán)記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò),同時(shí)具有更大的內(nèi)存空間[10]。為簡(jiǎn)化TCN的規(guī)模,本文將深度可分離卷積應(yīng)用于TCN中,提出L-TCN結(jié)構(gòu)。L-TCN的主要特點(diǎn)是:1)使用因果卷積[7],確保了不發(fā)生信息泄露問(wèn)題;2)使用深度可分離卷積[11],減少了卷積運(yùn)算中的參數(shù)量,提高了計(jì)算效率[12];3)使用深度網(wǎng)絡(luò)(殘差層搭建)和空洞卷積[7]保存有效歷史時(shí)間序列數(shù)據(jù),從而利用歷史值進(jìn)行時(shí)間序列預(yù)測(cè)。
L-TCN使用因果空洞深度可分離卷積作為卷積層,并將每?jī)蓚€(gè)卷積層與恒等映射封裝為一個(gè)殘差模塊,由殘差模塊堆疊出深度網(wǎng)絡(luò)。基于深度可分離卷積的L-TCN結(jié)構(gòu)如圖1所示,其中,Z為卷積輸入,T為輸入序列個(gè)數(shù),i為殘差塊個(gè)數(shù)。L-TCN由很多個(gè)殘差塊串聯(lián)而成,殘差塊個(gè)數(shù)由具體任務(wù)的輸入和輸出尺寸決定。
圖1 L-TCN網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of L-TCN network
由于序列建模任務(wù)通常需要較大的感受野,而感受野尺寸依賴(lài)于網(wǎng)絡(luò)深度及濾波器大小等,因此本文采用通用殘差模塊加強(qiáng)L-TCN網(wǎng)絡(luò)的穩(wěn)定性。殘差網(wǎng)絡(luò)(Residual Network,ResNet)通過(guò)加入shortcut connection,使其變得更加容易優(yōu)化。包含一個(gè)shortcut connection的多層網(wǎng)絡(luò)被稱(chēng)為一個(gè)殘差塊。一個(gè)深度網(wǎng)絡(luò)中如果期望用一個(gè)非線(xiàn)性單元f(x,θ)去逼近目標(biāo)函數(shù)h(x),則可以將目標(biāo)函數(shù)拆分成恒等函數(shù)x和殘差函數(shù)(h(x)-x)。
h(x)=x+(h(x)-x)
(1)
根據(jù)通用近似定理,一個(gè)由神經(jīng)網(wǎng)絡(luò)構(gòu)成的非線(xiàn)性單元可近似逼近原始目標(biāo)函數(shù)或殘差函數(shù),而對(duì)于后者的學(xué)習(xí)相比前者更簡(jiǎn)單[13]。因此,原優(yōu)化問(wèn)題轉(zhuǎn)換為:使非線(xiàn)性單元f(x,θ)近似逼近殘差函數(shù)(h(x)-x),并使用(f(x,θ)+x)逼近h(x)。
在L-TCN殘差模塊內(nèi),有兩層因果空洞深度可分離卷積,根據(jù)非線(xiàn)性特性,使用修正線(xiàn)性單元(Rectified Linear Unit,ReLU)[14],并將權(quán)值歸一化[15]應(yīng)用于卷積濾波器。此外,L-TCN在殘差模塊內(nèi)的每個(gè)因果空洞深度可分離卷積都可添加Dropout以實(shí)現(xiàn)正則化,防止過(guò)擬合現(xiàn)象,最終由多個(gè)殘差模塊堆疊出一個(gè)深度可分離的L-TCN。
圖2給出了L-TCN殘差連接示例。殘差塊中有兩層因果空洞深度可分離卷積,在L-TCN中輸入與輸出具有不同維度,因此需要使用額外的1×1卷積來(lái)確保對(duì)應(yīng)元素相加具有相同維度。其中,k代表卷積核大小,本文取卷積核尺寸為3,d表示空洞系數(shù),本文取空洞系數(shù)為1,相當(dāng)于普通卷積操作。
圖2 L-TCN殘差連接示例Fig.2 Example of L-TCN residual connection
1.3.1 因果卷積
序列問(wèn)題強(qiáng)調(diào)先后順序,RNN的特性使其有助于解決時(shí)間序列預(yù)測(cè)問(wèn)題,但其由于串行處理序列數(shù)據(jù),因此訓(xùn)練速度慢。CNN可以并行處理序列數(shù)據(jù),速度比RNN快,但普通卷積網(wǎng)絡(luò)會(huì)將序列中未來(lái)的數(shù)據(jù)和過(guò)去的數(shù)據(jù)同等對(duì)待,導(dǎo)致從未來(lái)數(shù)據(jù)到過(guò)去數(shù)據(jù)的泄露。因此,使用因果卷積[7]代替普通卷積處理序列數(shù)據(jù),其計(jì)算公式如下:
(2)
如圖3所示,在因果卷積中,t時(shí)刻的輸出只與前一層中t時(shí)刻及更早時(shí)間的元素進(jìn)行卷積,不存在從未來(lái)到過(guò)去的數(shù)據(jù)泄露。
圖3 因果卷積Fig.3 Causal convolution
1.3.2 空洞卷積
一個(gè)簡(jiǎn)單的因果卷積只能通過(guò)網(wǎng)絡(luò)深度保障歷史時(shí)間序列數(shù)據(jù)的安全,而普通因果卷積網(wǎng)絡(luò)的感受野很小,多層卷積感受野增長(zhǎng)又太慢,不能覆蓋較長(zhǎng)的序列。這使得將因果卷積應(yīng)用于序列任務(wù)會(huì)非常困難,尤其是需要較長(zhǎng)歷史的任務(wù)。文獻(xiàn)[7]通過(guò)使用空洞卷積[13],在不增加參數(shù)量的同時(shí)增加了輸出單元感受野[14]。
空洞卷積通過(guò)給卷積核插入“空洞”增加卷積核大小。若將(d-1)個(gè)空洞插入到卷積核的兩個(gè)元素之間,則此時(shí)卷積核的有效大小為:
m′=m+(m-1)×(d-1)
(3)
其中,d為空洞系數(shù)。在加大了感受野后,每個(gè)卷積輸出都包含較大范圍的信息,如圖4[16]所示。圖4(a)對(duì)應(yīng)3×3的空洞卷積,空洞為0,與普通卷積操作一樣;圖4(b)對(duì)應(yīng)3×3的空洞卷積,實(shí)際的卷積核還是3×3,空洞為1,但是該卷積核的感受野已經(jīng)增大到了7×7;圖4(c)對(duì)應(yīng)空洞卷積,實(shí)際的卷積核還是3×3,空洞為3,該卷積核的感受野已經(jīng)增大到15×15??梢钥闯?增加空洞后,參數(shù)量不增加但是大幅增加了感受野的范圍。
圖4 空洞卷積Fig.4 Dilated convolution
1.3.3 深度可分離卷積
深度可分離卷積減少了卷積運(yùn)算中的參數(shù)量,同時(shí)提高了計(jì)算效率,并且已在圖像分類(lèi)任務(wù)中取得成功應(yīng)用[17],相比給定參數(shù)量的Xception架構(gòu)[11]和給定級(jí)別執(zhí)行所需參數(shù)量的MobileNets系列架構(gòu)[12]更具性能優(yōu)勢(shì)。普通卷積需要同時(shí)考慮空間信息及通道相關(guān)性,然后對(duì)輸出進(jìn)行非線(xiàn)性激活。深度可分離卷積先進(jìn)行通道卷積,將普通卷積在空間維度上進(jìn)行分離,以增加網(wǎng)絡(luò)寬度并豐富提取特征,再進(jìn)行逐點(diǎn)卷積,不僅降低了卷積操作的計(jì)算復(fù)雜度,減少了參數(shù)量,并且不會(huì)對(duì)實(shí)驗(yàn)結(jié)果的精確度造成很大的影響[18]。
普通卷積操作的計(jì)算公式如下:
(4)
其中,W為卷積核,y為輸入特征圖,i、j為輸入特征圖分辨率,k、l為輸出特征圖分辨率,m為通道個(gè)數(shù)。
深度可分離卷積先進(jìn)行通道卷積,如式(5)所示(其中⊙表示對(duì)應(yīng)元素相乘),再進(jìn)行逐點(diǎn)卷積,如式(6)所示,最后將式(5)代入式(6)得到深度可分離卷積,如式(7)所示。
(5)
(6)
SepConv(WP,Wd,y)(i,j)=
PonitwiseConv(i,j)(Wp,DepthwiseConv(i,j)(Wd,y))
(7)
L-TCN結(jié)構(gòu)使用因果空洞深度可分離卷積作為卷積層:1)給普通卷積加上因果關(guān)系,使得卷積適用于序列任務(wù);2)在因果卷積的基礎(chǔ)上結(jié)合空洞卷積,使得空洞卷積可以改變卷積過(guò)程中的卷積核大小,增加卷積過(guò)程中的感受野;3)使用深度可分離卷積的卷積方式,先進(jìn)行通道卷積再進(jìn)行逐點(diǎn)卷積,從而改變了傳統(tǒng)卷積方式。該卷積層通過(guò)這3種操作,限定了輸入對(duì)輸出的影響,并改變了卷積核大小及卷積方式,使其能更好地應(yīng)用于序列建模任務(wù)。
通過(guò)L-TCN結(jié)構(gòu)可以看出,網(wǎng)絡(luò)主要包括卷積層、歸一化層和Dropout層,主要參數(shù)和計(jì)算量均在卷積層,因此本文主要研究卷積層中的參數(shù)和計(jì)算量。L-TCN的輕量化設(shè)計(jì)主要通過(guò)卷積層的深度可分離卷積進(jìn)行實(shí)現(xiàn)。深度可分離卷積[11-12]的核心思想是將一個(gè)完整的卷積運(yùn)算分解為通道卷積與逐點(diǎn)卷積。深度可分離卷積相比普通卷積操作降低了參數(shù)量和計(jì)算量,這是因?yàn)槠鋵?duì)每個(gè)通道都單獨(dú)進(jìn)行學(xué)習(xí)使每個(gè)通道對(duì)應(yīng)不同過(guò)濾器,而不是所有通道對(duì)應(yīng)同一個(gè)過(guò)濾器,得到的特征質(zhì)量更佳。
本文提出的輕量化設(shè)計(jì)方法將網(wǎng)絡(luò)模型中的一維普通卷積替換為深度可分離卷積,如圖5所示。
圖5 L-TCN輕量化設(shè)計(jì)Fig.5 Lightweight design of L-TCN
假設(shè)輸入層是一個(gè)大小為M×1、N通道的序列,被P個(gè)大小為K×1×N的卷積核進(jìn)行卷積,在步長(zhǎng)為1、卷積補(bǔ)零的情況下,普通一維卷積所需的權(quán)重?cái)?shù)量計(jì)算(忽略偏置參數(shù))如式(8)所示,相應(yīng)的操作次數(shù)計(jì)算如式(9)所示。
W1Dconv=K×1×N×P
(8)
O1Dconv=M×1×K×1×N×P
(9)
在使用深度可分離卷積后,忽略偏置參數(shù)時(shí)通道卷積部分的參數(shù)個(gè)數(shù)計(jì)算如式(10)所示,相應(yīng)的操作次數(shù)計(jì)算如式(11)所示。點(diǎn)卷積部分的參數(shù)個(gè)數(shù)和操作次數(shù)計(jì)算如式(12)、式(13)所示。
Wdc=K×1×N
(10)
Odc=M×1×K×1×N
(11)
Wpc=N×P
(12)
Opc=M×1×N×P
(13)
在使用深度可分離卷積時(shí)的參數(shù)總個(gè)數(shù)計(jì)算(忽略偏置參數(shù))如式(14)所示,相應(yīng)的操作次數(shù)計(jì)算如式(15)所示。權(quán)重?cái)?shù)量和操作次數(shù)的比值計(jì)算如式(16)、式(17)所示。
W1Dsc=K×1×N+N×P
(14)
O1Dsc=M×1×K×1×N+M×1×N×P
(15)
(16)
(17)
由以上公式可以看出,對(duì)于每一層卷積層,深度可分離卷積層與普通卷積層相比可明顯降低參數(shù)量和計(jì)算量。L-TCN主要由深度可分離卷積層構(gòu)成,因此與TCN相比,L-TCN可以明顯降低網(wǎng)絡(luò)模型的參數(shù)量和計(jì)算量,無(wú)論在網(wǎng)絡(luò)訓(xùn)練還是在網(wǎng)絡(luò)預(yù)測(cè)時(shí),其均可減小存儲(chǔ)空間的占用,節(jié)約計(jì)算時(shí)間,并降低對(duì)硬件計(jì)算能力的要求。
實(shí)驗(yàn)軟件環(huán)境為Windows 10操作系統(tǒng),深度學(xué)習(xí)框架為T(mén)ensorflow 1.12。實(shí)驗(yàn)硬件環(huán)境為Intel Core i3-8100HQ 四核處理器,內(nèi)存為16 GB,GPU為NVIDIA?GeForce GTX 1060。
L-TCN在The adding problem[19-21]數(shù)據(jù)集、Copy memory[20-22]數(shù)據(jù)集和Sequential MNIST[23-24]數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)評(píng)估,并與TCN、LSTM和門(mén)控循環(huán)單元(Gated Recurrent Unit,GRU)這3種應(yīng)用于時(shí)間序列預(yù)測(cè)的典型網(wǎng)絡(luò)進(jìn)行性能對(duì)比。
在The adding problem數(shù)據(jù)集[18-20]中,數(shù)據(jù)集輸入數(shù)據(jù)由兩行組成,第一行包含0到1之間的隨機(jī)浮點(diǎn)數(shù),第二行除了期望隨機(jī)選擇的兩個(gè)位置標(biāo)記為1外,其余都為0,相應(yīng)的輸出標(biāo)簽是一個(gè)浮點(diǎn)數(shù),將輸入數(shù)據(jù)第一行中的兩個(gè)數(shù)字相加,而這兩個(gè)數(shù)字在第二行中標(biāo)記為1,其中T表示輸入序列的長(zhǎng)度。本文使用L-TCN、TCN、LSTM、GRU進(jìn)行時(shí)間序列預(yù)測(cè),實(shí)驗(yàn)結(jié)果如圖6和表1所示,其中輸入為400×2的序列,輸出為1個(gè)浮點(diǎn)數(shù),T取400,訓(xùn)練集為50 000條時(shí)間序列,測(cè)試集為10 000條時(shí)間序列。該實(shí)驗(yàn)使用了1個(gè)殘差塊和2層可分離卷積,每層濾波器個(gè)數(shù)為24,卷積核尺寸為5,優(yōu)化器為Adam。
圖6 4種網(wǎng)絡(luò)結(jié)構(gòu)在The adding problem數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Fig.6 Experimental results of four network structureson The adding problem dataset
表1 4種網(wǎng)絡(luò)結(jié)構(gòu)在The adding problem數(shù)據(jù)集上的性能對(duì)比Table 1 Performance comparison of four network structureson The adding problem dataset
由圖6和表1可以看出:1)在數(shù)據(jù)參數(shù)量只有TCN的20%時(shí),L-TCN可以取得與TCN同等的損失值,說(shuō)明L-TCN確實(shí)減少了參數(shù)量,與上文理論分析相符合;2)在同等損失值的條件下,L-TCN預(yù)測(cè)耗時(shí)約為T(mén)CN的27.8%,也說(shuō)明了L-TCN確實(shí)降低了網(wǎng)絡(luò)計(jì)算量,速度更快,與上文理論分析相符合;3)在同等參數(shù)條件下,L-TCN比LSTM和GRU的損失值更低,耗時(shí)更短。
在Copy memory數(shù)據(jù)集中,每個(gè)輸入序列的長(zhǎng)度為T(mén)+20。序列的前10個(gè)數(shù)字在1~8中隨機(jī)產(chǎn)生,最后11個(gè)數(shù)字全部為9(第1個(gè)9是一個(gè)標(biāo)記分隔符),序列中的其他數(shù)字都是0。該實(shí)驗(yàn)?zāi)繕?biāo)是生成一個(gè)長(zhǎng)度相同的輸出,除了分隔符后面的最后10個(gè)值之外,其他位置都為0,因此網(wǎng)絡(luò)模型的主要任務(wù)是在此重復(fù)輸入10個(gè)值[19-21]。實(shí)驗(yàn)結(jié)果如圖7和表2所示,其中輸入為601×1的序列,輸出為長(zhǎng)度相同的601個(gè)數(shù)字,訓(xùn)練集為30 000條時(shí)間序列,測(cè)試集為6 000條時(shí)間序列。該實(shí)驗(yàn)使用了1個(gè)殘差塊和2層可分離卷積,每層濾波器個(gè)數(shù)為10,卷積核尺寸為8,優(yōu)化器為RMSProp。
圖7 4種網(wǎng)絡(luò)結(jié)構(gòu)在Copy memory數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Fig.7 Experimental results of four network structureson the Copy memory dataset
表2 4種網(wǎng)絡(luò)結(jié)構(gòu)在Copy memory數(shù)據(jù)集上的性能對(duì)比Table 2 Performance comparison of four network structureson Copy memory dataset
由圖7和表2可以看出,在TCN與L-TCN損失值水平差不多的情況下,網(wǎng)絡(luò)模型數(shù)據(jù)量降低了約66.7%,說(shuō)明L-TCN確實(shí)減少了模型參數(shù)量。在同等損失值的條件下,L-TCN預(yù)測(cè)耗時(shí)也比TCN降低了約66.7%,說(shuō)明L-TCN確實(shí)降低了網(wǎng)絡(luò)模型的計(jì)算量,損失值也明顯比另外兩種循環(huán)網(wǎng)絡(luò)結(jié)構(gòu)更具優(yōu)勢(shì),并且在1 000次測(cè)試中的平均單次測(cè)試時(shí)間也大幅減少。
Sequential MNIST是一個(gè)手寫(xiě)的數(shù)字分類(lèi)數(shù)據(jù)集,經(jīng)常被用于測(cè)試循環(huán)神經(jīng)網(wǎng)絡(luò)保存歷史時(shí)間序列數(shù)據(jù)的能力[22-23]。實(shí)驗(yàn)結(jié)果如圖8和表3所示,其中輸入為784×1的序列,使用了2個(gè)殘差塊和4層可分離卷積,每層濾波器尺寸為6,每層濾波器個(gè)數(shù)為20,優(yōu)化器為Adam。
圖8 4種網(wǎng)絡(luò)結(jié)構(gòu)在Sequential MNIST數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Fig.8 Experimental results of four network structureson the Sequential MNIST dataset
表3 4種網(wǎng)絡(luò)結(jié)構(gòu)在Sequential MNIST數(shù)據(jù)集上的性能對(duì)比Table 3 Performance comparison of four network structureson Sequential MNIST dataset
由圖8和表3可以看出,在預(yù)測(cè)精度方面,L-TCN比其他循環(huán)神經(jīng)網(wǎng)絡(luò)具有更好的表現(xiàn),與TCN相比,網(wǎng)絡(luò)模型數(shù)據(jù)量降低了約66.7%,但預(yù)測(cè)精度基本相同,并且在1 000次測(cè)試中的平均單次測(cè)試時(shí)間也大幅減少。
針對(duì)序列預(yù)測(cè)問(wèn)題,本文通過(guò)將深度可分離卷積取代時(shí)間卷積網(wǎng)絡(luò)中的普通卷積,設(shè)計(jì)一種輕量級(jí)時(shí)間卷積網(wǎng)絡(luò)結(jié)構(gòu)。理論分析與實(shí)驗(yàn)結(jié)果表明,與TCN相比,該網(wǎng)絡(luò)結(jié)構(gòu)在不犧牲預(yù)測(cè)精度的前提下,能明顯降低網(wǎng)絡(luò)參數(shù)量和計(jì)算量,節(jié)省網(wǎng)絡(luò)存儲(chǔ)空間和計(jì)算時(shí)間,從而說(shuō)明輕量級(jí)網(wǎng)絡(luò)更適用于存儲(chǔ)空間和計(jì)算能力有限的移動(dòng)終端。此外,實(shí)驗(yàn)也證明了在同等網(wǎng)絡(luò)參數(shù)規(guī)模的情況下,輕量級(jí)時(shí)間卷積網(wǎng)絡(luò)相比傳統(tǒng)LSTM和GRU等循環(huán)神經(jīng)網(wǎng)絡(luò)具有更高的預(yù)測(cè)精度及更少的預(yù)測(cè)時(shí)間。后續(xù)將對(duì)輕量級(jí)時(shí)間卷積網(wǎng)絡(luò)中的參數(shù)設(shè)置進(jìn)行算法調(diào)優(yōu),以期得到更加精準(zhǔn)的預(yù)測(cè)結(jié)果。