姜麗莉,黃承寧
(南京工業(yè)大學浦江學院 計算機與通信工程學院,江蘇 南京 211200)
2016年何愷明博士等人[1]在CVPR大會中提出殘差學習方法,并以此為基礎(chǔ)提出名為殘差網(wǎng)絡 (Residual Network,ResNet)的神經(jīng)網(wǎng)絡模型,其核心思想在于通過恒等映射解決深層次網(wǎng)絡在訓練中出現(xiàn)的梯度彌散問題導致的退化問題,增強了網(wǎng)絡對復雜特征提取模式的學習能力與計算性能。
根據(jù)通用近似定理[2],一個足夠?qū)挼纳窠?jīng)網(wǎng)絡足以逼近任意有限維向量空間上的連續(xù)緊致函數(shù),并由2017年Zhou Lu等人[3]以及2018年Boris Hanin等人[4]給出相應證明。而寬神經(jīng)網(wǎng)絡存在參數(shù)量巨大的問題,在2015年Ronen Eldan等人[5]對深層神經(jīng)網(wǎng)絡進行研究之后,發(fā)現(xiàn)擁有同樣數(shù)量神經(jīng)元的深神經(jīng)網(wǎng)絡相比寬神經(jīng)網(wǎng)絡具備更強的特征學習能力與更少的參數(shù)量??梢钥闯觯銐蛏畹纳窠?jīng)網(wǎng)絡模型在理論上也應具備極強的擬合能力[6],但在實踐中發(fā)現(xiàn)深層神經(jīng)網(wǎng)絡卻可能出現(xiàn)梯度彌散與梯度爆炸問題[7],這將致使訓練誤差增大。
在對這一問題的研究分析中,Mark Sandler博士等人在CVPR大會中提出,因為引入了如ReLU等激活函數(shù),使得神經(jīng)網(wǎng)絡在計算中存在不可逆的信息損失,這導致了深層次網(wǎng)絡訓練中容易出現(xiàn)梯度彌散問題,并由此提出,可以通過去除低維度ReLU使得網(wǎng)絡模型的內(nèi)部結(jié)構(gòu)具備足夠的信息保存能力以避免此問題的出現(xiàn)[8]。而何愷明博士等人所提出的殘差學習則考慮了另一種解決方法,通過將恒等映射引入神經(jīng)網(wǎng)絡之中,使得網(wǎng)絡模型的內(nèi)部結(jié)構(gòu)具備足夠的信息保存能力以解決上述問題[1]。
該文設計了一個基于注意力機制的改進殘差網(wǎng)絡。對表情樣本利用多個帶有SE模塊的特征層進行特征提取,利用注意力機制增強關(guān)鍵特征通道,在ResNet-50的基礎(chǔ)上減少了計算量并提高了識別準確率。
殘差學習的核心思想在于讓神經(jīng)網(wǎng)絡擬合恒等映射H(x)=x,同時在其網(wǎng)絡模型內(nèi),引入短路機制與恒等映射[9],以此設計了標準殘差單元,其具體內(nèi)部結(jié)構(gòu)如圖1所示。
圖1 標準殘差單元的內(nèi)部結(jié)構(gòu)
令xn為第n層殘差單元的輸入,則其最終輸出yn如式(1)所示:
yn=F(xn,Wn)+xn
(1)
其中,Wn是第n層殘差單元的權(quán)重,目標函數(shù)F為神經(jīng)網(wǎng)絡需要學習的殘差函數(shù),由于恒等映射的存在,殘差函數(shù)F即輸出與輸入的殘差yn-xn。
以上文的標準殘差單元為例,其內(nèi)部結(jié)構(gòu)存在一個ReLU線性整流門以及兩層權(quán)重w1和w2,則其殘差函數(shù)F的定義表達式如式(2)所示:
F(xn,wn):=ReLU(xn·w1)·w2
(2)
由式(1)及式(2)可以得出,ResNet中淺層殘差單元Rl到深層殘差單元Rh的學習特征的表達式如式(3) 所示:
(3)
由式(3),依據(jù)鏈式法則求一階偏導數(shù),可以求得深層殘差單元Rh到淺層殘差單元Rl的梯度傳播中的梯度?F(xl)的表達式如式(4)所示:
(4)
對式(3)及式(4)進行分析可以得到,由于恒等映射將淺層殘差單元的輸入直接傳播到深層殘差單元,可以保證當一個深度為h層的神經(jīng)網(wǎng)絡所擬合的殘差已經(jīng)足夠小時,網(wǎng)絡深度的繼續(xù)增加不會導致過多的信息損失,即當淺層網(wǎng)絡已經(jīng)擬合數(shù)據(jù)后,網(wǎng)絡深度的增加不會大幅影響模型對數(shù)據(jù)的訓練誤差。由此可以得出,通過引入恒等映射這種短路機制,可以有效緩解因深層次網(wǎng)絡的信息損失導致的梯度彌散問題。
ResNet神經(jīng)網(wǎng)絡是由多層卷積層層疊組成的殘差神經(jīng)網(wǎng)絡,在考慮性能等因素之后,深層次ResNet網(wǎng)絡的內(nèi)部結(jié)構(gòu)中選用了瓶頸(Bottleneck)殘差單元[1]。瓶頸殘差單元是對殘差學習單元的改進,將標準殘差單元中原有的一個3×3卷積核拆分為兩個1×1卷積核,分別用于對特征圖的提升維度與降低維度操作,可以對稀疏的輸入信息進行壓縮,從而減少網(wǎng)絡的參數(shù)數(shù)量及計算量,提升神經(jīng)網(wǎng)絡的訓練速度與特征提取能力。瓶頸殘差單元的內(nèi)部結(jié)構(gòu)如圖2所示。
圖2 瓶頸殘差單元的內(nèi)部結(jié)構(gòu)
ResNet神經(jīng)網(wǎng)絡依據(jù)其內(nèi)部結(jié)構(gòu)中卷積層數(shù)量的不同,分別具有不同實現(xiàn)模型,如由18層卷積層組成的ResNet-18模型、由34層卷積層組成的ResNet-34模型等,具體內(nèi)部結(jié)構(gòu)如圖3所示。
在ResNet的特征層中,選用一個3×3卷積核步長為2的池化層對輸入信息進行下采樣,可以使輸入數(shù)據(jù)降維,進而減少參數(shù)數(shù)量。而在不同的實現(xiàn)模型中,特征層的具體實現(xiàn)也存在差異。ResNet-18與ResNet-34等淺層神經(jīng)網(wǎng)絡使用1.1節(jié)中所提及的標準殘差單元作為特征層的殘差單元,而ResNet-50、ResNet-101以及ResNet-151等深層神經(jīng)網(wǎng)絡則選用上文所提及的瓶頸殘差單元。各ResNet模型的特征層的具體結(jié)構(gòu)如表1所示。
圖3 ResNet的內(nèi)部結(jié)構(gòu)
表1 ResNet各模型的特征層結(jié)構(gòu)、參數(shù)量及計算量
由表1可以得出,ResNet-50模型可以兼具模型的特征學習能力以及計算性能,因此選為文中表情識別方法的特征提取器以及baseline。
激活函數(shù)是在神經(jīng)網(wǎng)絡的線性代數(shù)求解中引入非線性因素,使得神經(jīng)網(wǎng)絡具有擬合非線性函數(shù)的能力[10]。神經(jīng)網(wǎng)絡中常用sigmoid函數(shù)、tanh函數(shù)以及ReLU函數(shù)作為激活函數(shù)[11],現(xiàn)進行分析如下:
2.1.1 sigmoid(σ)
sigmoid函數(shù)亦稱為logistic函數(shù)與邏輯回歸函數(shù),其定義表達式及導數(shù)表達式如式(5)所示:
(5)
通過對式(5)及其函數(shù)圖像與導數(shù)圖像進行分析,結(jié)論如下:sigmoid函數(shù)具有平滑性質(zhì),易于求導;sigmoid函數(shù)的輸出并不是零中心化,即其輸出均值不為0,這會導致輸出存在方差偏移現(xiàn)象,影響網(wǎng)絡訓練中梯度下降的收斂性;當sigmoid函數(shù)的輸入值非常大或非常小時出現(xiàn)飽和,其導數(shù)趨于0,使得神經(jīng)網(wǎng)絡容易出現(xiàn)梯度彌散問題,這導致網(wǎng)絡參數(shù)的更新速度以指數(shù)衰減的形式減慢。
2.1.2 tanh
tanh函數(shù)即正切雙曲函數(shù),其定義表達式及導數(shù)表達式如式(6)所示:
tanh'(x)=1-tanh2(x)
(6)
通過對式(6)及其函數(shù)圖像與導數(shù)圖像進行分析,結(jié)論如下:tanh函數(shù)的輸出為零中心化,這使得使用tanh函數(shù)作為激活函數(shù)可以避免輸出的方差偏移現(xiàn)象的出現(xiàn);tanh函數(shù)同樣存在因飽和導致梯度彌散的問題,進而使得網(wǎng)絡參數(shù)的更新速度減慢。
2.1.3 ReLU
ReLU函數(shù)即線性整流函數(shù),其定義表達式及導數(shù)表達式如式(7)所示:
(7)
通過對式(7)及其函數(shù)圖像與導數(shù)圖像的分析,結(jié)論如下:ReLU函數(shù)具有單側(cè)抑制的性質(zhì),即在x=(-∞,0)區(qū)間中神經(jīng)元的激活被抑制,這使得神經(jīng)網(wǎng)絡中的神經(jīng)元具有稀疏激活性,可以較好地提高模型的學習能力與泛化性能;ReLU函數(shù)在x=(-∞,0)區(qū)間上其導數(shù)為1,這使得神經(jīng)網(wǎng)絡不會出現(xiàn)梯度爆炸問題;但ReLU函數(shù)一樣存在因其輸出非零中心化,進而出現(xiàn)輸出的方差偏移問題,將導致網(wǎng)絡收斂速度變慢;同時存在因在x=(-∞,0)區(qū)間上y=0導致的神經(jīng)元不被激活的問題,進而出現(xiàn)神經(jīng)元死亡問題。
2.1.4 Swish
為利用結(jié)合上述激活函數(shù)的優(yōu)點并解決其缺點,如神經(jīng)元死亡等問題,谷歌大腦實驗組的Prajit Ramachandran等人提出了Swish指數(shù)線性函數(shù)[12],其定義表達式及導數(shù)表達式如式(8)所示:
Swish(x):=x·σ(x)
(8)
通過對式(8)及其函數(shù)圖像與導數(shù)圖像進行分析,結(jié)論如下:Swish激活函數(shù)具有下確界、非單調(diào)、平滑等性質(zhì),在x=(0,∞)區(qū)間上的導數(shù)趨近于1,具有ReLU函數(shù)所具備的優(yōu)勢;同時Swish激活函數(shù)的輸出接近零中心化,可以加速神經(jīng)網(wǎng)絡的收斂;Swish激活函數(shù)在x=(-∞,0)區(qū)間上的輸出不為0,解決了神經(jīng)元死亡問題;同時Swish具有下確界,這使其對負數(shù)噪聲具有較高的健壯性。
據(jù)此考慮,該文利用Swish激活函數(shù)替代模型中的ReLU激活函數(shù),并在后文中驗證其性能。
注意力機制是在神經(jīng)網(wǎng)絡的內(nèi)部結(jié)構(gòu)中對人類視覺注意力機制進行的仿生[13],其基本思想是通過分配權(quán)重的方式,使神經(jīng)網(wǎng)絡關(guān)注于重要信息,并抑制非重要信息,減少數(shù)據(jù)噪聲,可實現(xiàn)讓神經(jīng)網(wǎng)絡對關(guān)鍵特征進行針對性學習,減少計算量,增強特征表達能力并提高信噪比,進而提高模型的泛化能力。
Squeeze-and-Excitation (SE)模塊是2018年由Momenta的胡杰等人于CVPR大會上提出的通道注意力模塊[14],其核心思想在于通過在神經(jīng)網(wǎng)絡的內(nèi)部結(jié)構(gòu)中增加一個子網(wǎng)絡,用于自動學習每一個輸出通道的權(quán)重與關(guān)聯(lián)性,再對輸出通道按照對應權(quán)重進行加權(quán),增強重要的信息通道。在SE模塊的內(nèi)部結(jié)構(gòu)中,按照其計算需求將模塊內(nèi)部劃分為Squeeze、Excitation以及Reweight三個子模塊,其具體結(jié)構(gòu)如圖4所示。
圖4 SE模塊的內(nèi)部結(jié)構(gòu)
Squeeze部分設計為通過一個全局池化層,按照空間維度將H×W×C的特征通道通過全局池化,壓縮為一個1×1×C的實數(shù)數(shù)列特征,每個特征通道所對應的實數(shù)z表征著該特征通道上注意力權(quán)重,用于增強關(guān)鍵特征通道并抑制非關(guān)鍵特征通道。對特征通道c的Squeeze操作的定義表達式如式(9)所示:
(9)
Excitation部分設計為每個特征通道學習對應權(quán)重,以學習特征通道之間的相關(guān)性。其內(nèi)部通過兩個全連接層,對z分別進行提升維度和降低維度操作,可以限制模型的復雜度并輔助泛化。最后通過sigmoid函數(shù)門進行歸一化獲得介于區(qū)間(0,1)中的權(quán)重s。對實數(shù)z的Excitation操作的定義表達式如式(10)所示:
s=Fexcitation(z,W):=σ(ReLU(zW1)W2)
(10)
Reweight部分是將上述操作中得到的通道權(quán)重s進行scale操作以點乘方式對先前的特征通道c進行逐一加權(quán)操作,進而得到最終的輸出y。對通道權(quán)重s與特征通道c的scale操作的計算表達式如式(11)所示:
y=Fscale(c,s):=cs
(11)
SE模塊可以通過短路方式直接接入ResNet-50模型的殘差單元內(nèi)部結(jié)構(gòu)之中,組成SE-ResNet-50神經(jīng)網(wǎng)絡[14],可以提高ResNet-50模型對特征通道信息之間復雜的相關(guān)性的擬合能力。其具體實現(xiàn)方式如圖5 所示。
圖5 SE-ResNet-50的殘差單元結(jié)構(gòu)
據(jù)此考慮,該文利用Swish激活函數(shù)替代模型中的ReLU激活函數(shù),并在后文中驗證其性能。
訓練神經(jīng)網(wǎng)絡所使用的訓練工作站的具體軟硬件環(huán)境參數(shù)如下:CPU:AMD Zen R7 1700 3.75 GHz,硬盤:三星SSD sm961 256 GB,內(nèi)存:芝奇 DDR4 Trident Z 3200 C15 32 GB,GPU型號:技嘉 AORUS GeForce GTX 1080 Ti,操作系統(tǒng):Windows 10 專業(yè)版。CPU與GPU性能在時間容許范圍內(nèi)支持較大的迭代代數(shù),硬盤容量與顯存容量支持較大的訓練數(shù)據(jù)集以及數(shù)據(jù)增廣方式,并支持較大的訓練批量,以此設置模型的訓練超參數(shù),并選用Adam優(yōu)化器對模型進行優(yōu)化。訓練超參數(shù)如表2所示。
表2 模型訓練的超參數(shù)
該文所采用的數(shù)據(jù)集為中科院和北京大學的聯(lián)合實驗室提供的CAS-PEAL-R1數(shù)據(jù)集[15],該數(shù)據(jù)集中的表情部分包含了由377名不同年齡、性別組成的表演者的一共1 885張照片,包含5種表情數(shù)據(jù),如閉眼、皺眉、張嘴、微笑、驚訝等常見表情,足以滿足課堂評估的專注度分析中所需的表情類別。
文中神經(jīng)網(wǎng)絡訓練所用的表情數(shù)據(jù)選用CAS-PEAL-R1數(shù)據(jù)集中的閉眼、皺眉、微笑、驚訝等四種一共1 508張圖片,通過隨機裁剪與左右翻轉(zhuǎn)等預處理方式對數(shù)據(jù)集進行數(shù)據(jù)增強,最終得到12 064張圖片數(shù)據(jù),其中四種表情各3 016張圖片數(shù)據(jù)。對數(shù)據(jù)集依照留出法以6∶2∶2的比例隨機劃分為訓練集、驗證集以及測試集,即訓練集中包含7 238張訓練圖片,驗證集中包含2 413張驗證圖片,測試集中包含2 413張測試圖片。
該文選用交叉熵損失函數(shù)度量真實樣本分布與預測樣本分布的差異,監(jiān)督所提出模型的訓練。交叉熵損失函數(shù)的定義表達式如式(12)所示:
(12)
其中,p(x)是表情樣本x的真實分布,q(x)是文中模型對表情樣本x的預測分布。
在經(jīng)過1 000代迭代之后,模型在訓練集上的損失均趨于0,訓練集上的正確率趨于99.9%,測試集上的正確率趨于94.1%??梢姡O計的基于改進殘差網(wǎng)絡的表情識別方法具有較好的識別性能。
該文利用混淆矩陣評估模型對表情類別在識別過程中的混淆程度?;煜仃嚨母餍蟹謩e代表相應表情類別的真實情況,而各列分別代表識別模型對相應表情類別的預測情況,矩陣中任意元素xij表征著第i類的數(shù)據(jù)被模型識別為第j類的百分比,即矩陣的反對角線上的數(shù)值越高,模型的識別混淆程度越低,反之非反對角線上的數(shù)值越高,模型的識別混淆程度越高。在試驗之后,對文中模型的表情識別結(jié)果繪制混淆矩陣,結(jié)果如表3所示。
表3 表情識別的混淆矩陣 %
從表3分析可知,模型對閉眼的識別混淆程度最低,準確率為99.9%;模型對微笑的識別混淆程度最高,準確率僅為89.3%;并從中可以得到模型將微笑混淆為驚訝與皺眉的程度略高,說明該識別模型對微笑的識別方法尚有待改進。綜合可見,設計的模型對人臉表情類型的識別效果具有較低的混淆程度。
表4 文中模型與baseline的對比
表4是文中模型(SE-ResNet-50+Swish)與ResNet-50以及SE-ResNet-50進行比較的匯總結(jié)果。分析可知,SE-ResNet-50在ResNet-50的基礎(chǔ)上引入SE模塊之后,雖然增加了網(wǎng)絡層數(shù),但憑借引入注意力機制的方式反而減少了計算量,與此同時參數(shù)數(shù)量沒有顯著增多,對表情識別的準確率有明顯提高;SE-ResNet-50 +Swish相比于SE-ResNet-50的參數(shù)數(shù)量與計算量等無顯著增多,但準確率有稍微提升??梢?,該文在表情識別方法中對殘差網(wǎng)絡的改進有可取之處。
設計了一個基于注意力機制的改進殘差網(wǎng)絡。對表情樣本利用多個帶有SE模塊的特征層進行特征提取,利用注意力機制增強關(guān)鍵特征通道,在ResNet-50的基礎(chǔ)上減少了計算量并提高了識別準確率。下一步將針對多姿態(tài)表情識別進行進一步研究,增強網(wǎng)絡對不同環(huán)境下的特征學習能力。