徐洋,張旭
(201620 上海市 上海工程技術大學 機械與汽車工程學院)
近年來,自動駕駛技術已成為車輛工程領域的研究熱點,并在保障行車安全、減少交通事故、提高道路通行能力等方面有著巨大的潛力[1]。自動駕駛系統(tǒng)一般由環(huán)境感知、路徑規(guī)劃和決策控制三部分組成。道路場景識別在自動駕駛技術中扮演著關鍵角色,具備優(yōu)異的道路場景識別能力,可有效提高自動駕駛系統(tǒng)的安全性?;谏疃葘W習算法的圖像分類技術可以用于道路環(huán)境識別,因此本文對道路場景天氣、道路場景地點和行車時間段進行了分類識別。盡管深度學習已經在圖像分類[2]、故障診斷[3]等方面取得了巨大成功,但是數(shù)據(jù)不平衡仍會給深度學習方法帶來不利影響,因此需要針對不平衡的道路場景數(shù)據(jù)設計更加穩(wěn)健的識別方法,進一步提高車輛對道路場景的識別能力。
深度學習可以較好地完成圖像識別任務[4],并在目標檢測[5]和圖像分類[6]等任務上都取得了很好的效果。事實上,圖像分類技術也可以用于道路場景識別。
1998 年,文獻[7]首次將卷積神經網絡運用于手寫體數(shù)字識別,標志著深度學習在圖像識別任務上的開端。2012 年,文獻[8]提出的Alex Net 具備了現(xiàn)時卷積神經網絡架構的基本特征,并在當年度ImageNet LSVRC-2010 競賽中取得了37.5%和17%的top-1和top-5錯誤率并奪得冠軍。在這之后,許多優(yōu)秀的卷積神經網絡相繼被提出,例如Xception[9]在圖像分類中表現(xiàn)出色,但是性能仍然會受到大規(guī)模不平衡數(shù)據(jù)的影響。
激活函數(shù)在深度學習理論的發(fā)展過程中扮演著關鍵角色,激活函數(shù)可提高卷積神經網絡的非線性表達能力,提高網絡解決非線性識別任務的性能。
深度學習在道路場景識別任務中取得了巨大的成功,而進一步提高其識別性能的關鍵之一就是設計更好的激活函數(shù)[10]?,F(xiàn)實中的識別任務大多是線性不可分的,添加激活函數(shù)可以提高神經網絡模型的非線性表達能力??紤]神經網絡的基本單元神經元結構,具體見圖1。
圖1 含有激活函數(shù)的單個神經元Fig.1 Single neuron with activation function
神經元激活函數(shù)的輸入x 為各觸角輸入v 與權重w 的乘積和加上偏置值b。將此結果輸入激活函數(shù)f 之后產生神經元沖動。如果沒有非線性激活函數(shù)的作用,分類器的本質只是線性方程,不能處理現(xiàn)實生活中的非線性問題。
在人工神經網絡發(fā)展初期,Sigmoid 和Tanh激活函數(shù)被廣泛運用于決策應用,兩者都為飽和激活函數(shù),容易在神經網絡訓練過程中產生梯度彌散問題。2012 年,Krizhevsky 在Alex Net 中使用修正線性單元(Rectified linear units,ReLU)作為激活函數(shù),并取得了當年度的Image-net 競賽冠軍;ReLU 的負半軸可使部分神經元輸出為零,提高了網絡的稀疏性,減少了參數(shù)之間的依賴關系,從而緩解了過擬合的發(fā)生。由于其計算簡便,加快了模型的收斂速度,且在x 正半軸的梯度為1,有效解決了早期激活函數(shù)如Sigmoid和Tanh 的梯度彌散問題。與此同時,由于ReLU負半軸恒為零,導致了部分神經元的“壞死”現(xiàn)象。學者相繼提出了Leaky-ReLU、ELU、PReLU等作為改進方案,然而Leaky-ReLU 和PReLU 引入的額外超參數(shù)α會減慢神經網絡的收斂速度,也會增加訓練難度。
本文提出的改進激活函數(shù)Sigmoid-ReLU,將Sigmoid 和ReLU 函數(shù)在x 的正負半軸采取了不同方式的組合,保證正半軸梯度的同時使得負半軸輸出不為零。在伯克利大學BDD100K 道路場景數(shù)據(jù)集的實驗表明,本文模型可以取得比Leaky-ReLU,ELU 及其他模型更高的道路場景分類正確率,有效緩解神經元的“壞死”現(xiàn)象,大大減少了模型分類損失,提高了模型性能。
采用非線性激活函數(shù)可以對輸入數(shù)據(jù)進行非線性表達,提高網絡的表征能力和識別性能,本小節(jié)將對經典的激活函數(shù)進行探討。
在人工神經網絡發(fā)展的早期,飽和型S 激活函數(shù)常用于決策,具有代表性的是Sigmoid 函數(shù)和Tanh 函數(shù)(如圖2 所示)。Sigmoid 函數(shù)在早期運用中因其可微性廣受歡迎,適用于反向傳播訓練算法。其數(shù)學定義為
圖2 Sigmoid 和Tanh 的函數(shù)圖像Fig.2 Graph of Sigmoid and Tanh
但當Sigmoid 被運用到深層網絡中,非零中心且恒正的輸出導致神經網絡權值僅有一個更新方向,影響收斂速度的同時降低了網絡性能,且當輸入值趨向于+∞或-∞時,函數(shù)的梯度接近0,這意味著在反向傳播過程中,部分神經元會達到飽和而無法得到有效訓練,與其相鄰的神經元也訓練得很慢,即梯度彌散問題。Tanh[11]激活函數(shù)一定程度上提高了網絡收斂速度,但仍無法有效解決梯度彌散問題。Tanh 函數(shù)的數(shù)學定義為
為克服上述飽和激活函數(shù)的缺陷,學者提出了不飽和激活函數(shù)作為解決方案,最具有代表性的是修正線性單元(ReLU)[12]。其目前已經是眾多卷積神經網絡(Convolution neural network)架構的默認激活函數(shù)。修正線性單元數(shù)學形式簡練,具體如下:
ReLU 在正半軸對x 的梯度恒為1,有效解決了飽和激活函數(shù)Sigmoid 和Tanh 存在的梯度彌散問題,由于是簡單的判別式計算,運算速度有了較大的提升。然而當數(shù)據(jù)落入ReLU 的負半軸,由于其輸出是零,因此在訓練過程中一部分的神經單元將得不到訓練,同樣造成了神經元的“壞死”現(xiàn)象,影響了模型的表征能力,降低了模型的識別性能。
針對ReLU 帶來的神經元“壞死”現(xiàn)象,Leaky-ReLU(LReLU)可通過給ReLU 負半軸一個斜率α來避免。然而有研究發(fā)現(xiàn),LReLU 的性能表現(xiàn)并不穩(wěn)定。Leaky-ReLU(LReLU)的數(shù)學定義如下:
ReLU、LReLU 和Sigmoid 激活函數(shù)的曲線如圖3 所示。LReLU 在負半軸有一個斜率,但是在訓練過程中LReLU 不斷改變容易造成訓練的不穩(wěn)定,多次實驗結果也證明了這一點,因此需要提出一種新的性能更好的激活函數(shù)。
圖3 ReLU,LReLU 和Sigmoid 的函數(shù)圖像Fig.3 Graph of ReLU,LReLU and Sigmoid
為解決上述問題,學者又提出了ELU 激活函數(shù),數(shù)學形式如下:
ELU 函數(shù)曲線如圖4 所示。實驗中發(fā)現(xiàn),ELU 函數(shù)的性能相比ReLU 并沒有顯著提高。
圖4 ELU 函數(shù)圖像Fig.4 Graph of ELU
本節(jié)在對常見激活函數(shù)進行討論的基礎上,結合多種激活函數(shù)的特點,分析了激活函數(shù)的作用原理,提出了改進的Sigmoid-ReLU 激活函數(shù)。
卷積神經網絡的訓練過程主要由前向傳播和反向傳播兩部分組成。前向傳播是指將輸入數(shù)據(jù)經過一系列網絡層處理后得出實際輸出的過程;反向傳播通過計算前向傳播輸出和期望輸出之間的差異從而得出損失,通過誤差反向傳播法和鏈式法則更新各層神經元參數(shù),提高網絡模型對數(shù)據(jù)的擬合能力并進一步減少前向損失。下面以卷積神經網絡中核心的卷積層為例,對神經網絡的前向和反向傳播算法進行分析,從理論上分析激活函數(shù)的作用原理。
在前向傳播算法中,上層輸入數(shù)據(jù)進行加權操作后輸入激活函數(shù)后生成輸出值:
式中:上標——通道數(shù)和網絡層數(shù);w——卷積核;b——偏置值;σ——激活函數(shù)。
由式(6)可知,在卷積神經網絡的前向傳播中,激活函數(shù)的作用是對卷積操作的結果進行非線性化處理,提高網絡的非線性表達能力,因此激活函數(shù)不能是常數(shù)或者線性函數(shù),否則再多的層數(shù)也只是線性表達,無益于網絡性能的提升。
反向傳播過程是真正意義上的參數(shù)調優(yōu)過程,各網絡層會在此過程更新內部的卷積核參數(shù)及偏置值。通過計算前向傳播結果與期望值的差異得出損失值,通過反向傳播算法、梯度下降法和鏈式法則進行參數(shù)更新,具體過程如下:
(1)根據(jù)實際需要選擇合適的損失函數(shù)J如交叉熵損失函數(shù)或均方誤差損失函數(shù),計算輸出層的梯度誤差δL
(2)利用數(shù)學歸納法,求卷積層的梯度誤差δL
3)根據(jù)式(9)更新w 和b
從式(7)—式(9)可以得出以下結論:(1)最終的參數(shù)更新數(shù)值與激活函數(shù)導數(shù)之間存在線性關系,這說明激活函數(shù)會直接影響卷積神經網絡模型的參數(shù)更新和收斂速度。為使神經網絡的參數(shù)盡量落在全局最優(yōu)解附近,激活函數(shù)在開始階段的導數(shù)應該足夠大以加快模型收斂,在后半段減小導數(shù),使得模型平穩(wěn)收斂;(2)參數(shù)更新的方向與該層輸入值的正負有關,直接與激活函數(shù)相關,因此激活函數(shù)應在正負兩半軸都有非零輸出。
綜上,設計的激活函數(shù)應滿足以下幾個條件:(1)非常數(shù)或線性表達式;(2)在正負半軸都有非零輸出;(3)導數(shù)絕對值呈現(xiàn)“先大后小”的特點;(4)便于計算。
由前文分析可知,理想的激活函數(shù)應該在前半段導數(shù)較大,加快網絡的收斂,而在后半段導數(shù)應逐步減小,使得網絡平穩(wěn)收斂。而現(xiàn)有的激活函數(shù)并不能滿足上述要求,因此必須將不同激活函數(shù)的優(yōu)點進行組合,提出改進的激活函數(shù)Sigmoid-ReLU。
ReLU 在 正半軸是線性的,因此計算比較簡單,也克服了梯度彌散問題,但由于 負半軸恒為零,增加稀疏性的同時“殺死”了部分神經元;Sigmoid 激活函數(shù)的導數(shù)滿足“先大后小”的特點。結合兩種激活函數(shù)的特點,進行優(yōu)化組合,可以提高網絡的識別性能。基于上述Sigmoid,ReLU和LReLU 激活函數(shù)的特點,本文提出了一種改進的激活函數(shù),我們命名為Sigmoid-ReLU,數(shù)學定義如下:
設計分析如下:(1)ReLU 函數(shù)為部分線性模型,計算量較小且在x 正半軸保證了梯度,但在負半軸容易“殺死”部分神經元。Sigmoid 相比Tanh 改善了網絡訓練速度,但沒有根本上解決飽和激活函數(shù)的梯度彌散問題,但因其導數(shù)滿足“先大后小”的特點,可以在保證收斂速度的同時使得收斂穩(wěn)定。因此將兩者組合優(yōu)化,可以加快收斂速度并減少梯度彌散的發(fā)生。(2)在x正半軸,采用Sigmoid 模型的分母項與x 進行線性組合,可以滿足激活函數(shù)在 正半軸梯度的“先大后小”要求。(3)在x 負半軸,將Sigmoid 與x 相乘,保證了負半軸的非零輸出,同時在負無窮處激活函數(shù)梯度趨于零,也滿足了梯度要求,提高網絡收斂速度和非線性表達能力的同時確保了收斂穩(wěn)定性。與ReLU 相比,在負半軸,將x與1/(1+e-x)進行組合,使函數(shù)值在某一點達到最小值后逐漸收斂到0,增加了激活函數(shù)的非線性和神經元的非線性映射能力;在x 正半軸,利用子項0.5(x-1)確保正半軸的梯度,再與1/(1+e-x)相加以增強函數(shù)的非線性。與Sigmoid 和Tanh 函數(shù)相比,模型在增加非線性的同時滿足了梯度要求。
本文激活函數(shù)Sigmoid-ReLU 與Sigmoid、Tanh 和ReLU 激活函數(shù)的函數(shù)圖像如圖5 所示。
圖5 ReLU、LReLU 和本文的激活函數(shù)圖像Fig.5 Graph of Sigmoid,Tanh and our S-ReLU
實驗平臺基于Win10(64 位)操作系統(tǒng)與(GPU)GeForce GTX 1050Ti 硬件平臺,通過Tensor Flow 深度學習框架進行算法的編程開發(fā)。本實驗采用伯克利大學BDD100K 道路數(shù)據(jù)集,分屬15 個小類別的圖片共69 863 張,圖片原始分辨率為1 280×720,為減小算力成本圖片被統(tǒng)一縮放至128×128。
將數(shù)據(jù)集中的無效標注圖像和模糊圖像進行剔除,圖6 是部分樣例圖片,包含天氣、地點和時間3 大類,總計15 小類。
圖6 數(shù)據(jù)集樣本Fig.6 Sample images
本文采用卷積神經網絡配合不同的激活函數(shù)進行道路場景的分類識別,網絡結構的超參數(shù)如表1 所示。其中k 表示輸出類別數(shù)量。
表1 卷積神經網絡結構Tab.1 Convolutional neural network structure
在實驗階段,我們采用訓練識別正確率和Kappa 系數(shù)對算法性能進行評價。
實驗階段將本文激活函數(shù)模型與Sigmoid,Tanh,ReLU,ELU,LReLU 激活模型進行訓練正確率對比。取3 次實驗結果平均值,從正確率柱狀圖可以看到,相比其他模型,本文算法在12個子類(共15)中取得了最高的訓練識別準確率,實驗結果如圖7 所示。
圖7 各類別的識別正確率對比圖Fig.7 Comparison chart of recognition accuracy
此外,分別對天氣、地點和行車時間段3個大類求平均正確率。結果表明,本文算法領先ReLU,ELU,LReLU 分別達8.58%,7.94%,16.55%,如表2 所示。由于LReLU 每次訓練都改變了激活函數(shù)超參數(shù),導致了訓練的不穩(wěn)定。
表2 各模型大類平均準確率Tab.2 Mean accuracy of each model
對各模型求15 個小類別上的Kappa 系數(shù),這是一個可以反映不平衡數(shù)據(jù)條件下模型分類性能的指標,數(shù)值越接近1 說明性能越好,可以發(fā)現(xiàn)本文模型對道路場景的識別性能高于其他模型,數(shù)據(jù)如表3 所示。
表3 各模型大類Kappa 分數(shù)Tab.3 Kappa score of each model
如圖7 所示,本文模型僅在雪天、高速公路和夜晚這3 個類別低于ReLU,ELU,ReLU 模型1.54%,1.48%,0.01%,其他各類別都取得了最高的訓練識別準確率,并且取得了最高的平均準確率。ReLU 的平均準確率高于LReLU,這反映了LReLU 容易震蕩不穩(wěn)定的特點。Sigmoid 和Tanh 函數(shù)模型相比ReLU 模型差距明顯,因此目前在深度網絡中很少被使用。實驗結果表明本文模型比ReLU 和LReLU 平均正確率提高了8.58%,16.55%,證明本文模型可以提高深度學習模型對道路場景的識別性能。此外,考察3 個分支網絡的損失下降情況也可以發(fā)現(xiàn),本文算法可有效降低模型的訓練損失,收斂情況更好,詳細情況如圖8 所示。
圖8 訓練損失Fig.8 Training loss
本文結合ReLU 和Sigmoid 激活函數(shù)提出了一種改進激活函數(shù),在伯克利大學道路場景數(shù)據(jù)集上的實驗表明本文模型相比ReLU 和LReLU 模型對道路場景的平均識別正確率提高了8.58%,16.55%,證明本文算法可提高深度學習模型對道路場景的識別性能,相比Sigmoid 和Tanh 函數(shù)在大型道路數(shù)據(jù)集上的識別正確率提升明顯,克服了ReLU 函數(shù)在負半軸無法提取特征和LReLU 容易震蕩的缺點。同時,模型對一些道路場景類別的識別正確率還有提升空間,在下一階段,主要研究工作是充實數(shù)據(jù)集并對網絡結構超參數(shù)進行優(yōu)化以進一步提高各類道路場景信息的識別正確率。