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