?

基于高斯函數的池化算法

2022-09-25 08:42王宇航周永霞吳良武
計算機應用 2022年9期
關鍵詞:高斯卷積神經網絡

王宇航,周永霞,吳良武

(中國計量大學信息工程學院,杭州 310018)

0 引言

深度學習是Hinton 等[1]在2006 年提出的概念,指出深層網絡訓練采用無監督預訓練初始化并用有監督訓練微調網絡權值的方法來解決梯度消失問題,在學術圈里引起了巨大的反響。自此深度學習進入高速發展階段,并被應用到計算機視覺領域來處理圖像分類、姿態估計、目標定位等問題。深度學習作為一類模式分析方法的統稱,主要包括卷積神經網絡(Convolutional Neural Network,CNN)、循環神經網絡(Recurrent Neutral Network,RNN)和自動編碼器(Auto Encoder,AE)三種方法,其中CNN 成為解決計算機視覺問題的主要方法。卷積神經網絡主要由輸入層、卷積層、池化層、全連接層、輸出層等結構組成,由于網絡結構設計的不同,不同的卷積神經網絡的性能也有很大的差別。2012 年,Hinton和他的學 生Alex 設計出了AlexNet[2],一舉拿下了當年ImageNet 競賽的冠 軍。自此之后,諸如VGG(Visual Geometry Group)[3]、ResNet(Residual Network)[4]、GoogLeNet[5]、DenseNet(Densely Connected Networks)[6]等 更多更深的卷積神經網絡模型被提出,極大推進了卷積神經網絡的研究。

池化層在卷積神經網絡中起到了至關重要的作用,它可以在一定程度上增加平移旋轉的不變性。通過池化操作,卷積神經網絡的感受野變大,這就有效降低了網絡模型的優化難度[7]。常規的池化算法包括最大池化和平均池化,被廣泛地運用到各種卷積神經網絡之中,雖然發揮著很大的作用,但也有不足。為此,近年來科研人員提出了諸如隨機池化、混合池化、光譜池化、模糊池化等池化算法。隨機池化[8]根據池化域內每個元素的取值計算該點權重概率,并由此概率選取一個元素作為池化后的結果;混合池化[9]在最大池化和平均池化兩種池化算法中隨機選擇一種作為當前池化層的池化算法,使得網絡模型的泛化能力明顯增強;光譜池化[10]運用離散傅里葉變換計算截斷頻域,進而實現降維操作,這種方法為每個參數保留了比其他池化算法更多的信息,因此效果顯著;模糊池化[11]把模糊邏輯引入池化算法中,目的是解決傳統池化算法中的選擇不確定性,運用模糊邏輯中隸屬度的計算方法,計算池化域的閾值,并由此確定池化結果;融合隨機池化[12]在隨機池化的基礎上進行了改進,對池化域指定的范圍使用隨機池化算法,既考慮到了池化域內元素的平均值,又考慮到了池化域內元素的最大值。文獻[13]中提出了一種基于信息熵的池化算法,首先介紹了熵池化的概念,然后根據熵池化提出分支熵加權算法,最后通過實驗驗證了該算法的有效性。soft 池化[14]以指數為基礎,在池化算法中使用區域的激活函數softmax 的算子對池化域內每個元素進行權值運算,并加權求和作為算法計算結果,有效保留了特征圖的細粒度信息,因此效果良好。

最大池化算法和平均池化算法由于計算方式簡單,如果遇到池化域內元素值相差較大且不同元素點代表不同特征的情況時,很容易丟失部分特征信息。隨機池化算法雖然引入概率計算的概念,但是最終仍然取池化域中一個元素為結果,這樣可能會造成其他元素代表的特征被忽略?;旌铣鼗惴S機選擇最大池化或平均池化作為池化方法,雖然增加了算法的泛化能力,但還是沒有避免兩種池化算法的弊端。光譜池化算法運用離散傅里葉變換把池化域里的元素從時域轉換為頻域進行處理,然后通過傅里葉反變換把結果轉換到時域,雖然可以保留更多特征信息,但是運算過程繁瑣復雜,大幅增加了算法的時間復雜度和空間復雜度。模糊池化算法依靠模糊邏輯解決池化域元素不確定性的問題,雖然有些效果,但是模糊邏輯過于依賴隸屬度函數的選擇,針對不同類型的卷積神經網絡以及不同數據集可能需要使用不同的隸屬度函數才能取得較好的效果,這就導致了該算法的泛化能力較差。融合隨機池化算法對隨機池化算法做了改進,對池化域內指定區域隨機池化運算,但是本質上還是隨機池化運算,倘若區域選擇不當,位于兩個區域邊界的元素包含的特征信息依舊有可能被忽略,所以該方法只是一定程度上解決了特征信息丟失的問題,并沒辦法完全避免該問題?;谛畔㈧氐某鼗惴ㄟx擇信息熵作為度量方法,在池化域較大、元素信息較多時確實可以取得理想的結果,但是當池化域較小、元素信息較少時,該算法較其他算法在運算結果方面并無明顯差別,運算效率卻低下許多。soft 池化雖然可以保留特征圖中大部分信息,但是由于該算法本身是可微的,反向傳播時要進行梯度運算,所以較其他算法在性能方面會稍遜一籌。

1 基于高斯函數的池化算法

眾所周知,池化操作本質其實是下采樣,卷積神經網絡中引入池化層是為了壓縮輸入的特征圖,降低神經網絡計算時的算法復雜度。但是在這個過程中,如果池化算法選擇不當,有可能會造成原有輸入的特征圖里的部分特征信息丟失,進而影響整個卷積神經網絡的效果。

由于池化域內所有元素的值本質上可以被看作是一組一維的數據,本文受機器學習中最近鄰(K-Nearest Neighbors,KNN)算法中近鄰(相似)程度概念的啟發,提出池化域內各元素點與該池化域所含主要特征之間關聯性的概念。所謂各元素點與該池化域所含特征之間的關聯性,即同一池化域內不同元素點與該池化域內所包含的最突出的特征(一般認為是池化域內所有元素點的最大值)的相關密切程度。KNN 算法中以待決策樣本與已知樣本的距離作為依據來判斷近鄰程度,本文提出的各元素點與該池化域所含主要特征之間的密切程度的判斷方法與其類似:首先找到該池化域內所有元素點的最大值作為已知樣本;然后計算該池化域內所有元素點的值到該樣本的距離;最后根據得到的距離衡量該元素點與該池化域所含主要特征之間的關聯性。由此可知,同一池化域內,某個元素點的值與該池化域內所有元素點中的最大值距離越接近,則認為該元素點與該池化域內所包含的最突出的特征相關程度越密切,關聯性越強,那么這個元素點越重要;反之,該元素點與該池化域內所包含的最突出的特征相關程度越疏遠,關聯性越弱,那么這個元素點越不重要。

在進行池化計算時,如果可以考慮到池化域內各元素點與該池化域所含主要特征之間的關聯性,根據池化域內每個元素關聯性的強弱來計算池化后的結果,便可以盡可能地保留輸入特征圖的特征信息,提高卷積神經網絡的性能。諸如最大池化、平均池化、隨機池化等大多數傳統的池化算法雖然能起到一定的效果,但是由于算法本身較為簡單,計算過程中并未很好地考慮到池化域內各元素點與該池化域所含特征之間的關聯性,所以難免會在一定程度上丟失特征信息。鑒于這種情況,本文受概率學中高斯分布的相關知識啟發,提出一種基于高斯函數的池化算法:通過借用高斯函數來計算和衡量池化域內各元素與其所含主要特征之間的關聯性,并由此作為依據計算池化算法的結果。

1.1 高斯函數

高斯函數是德國數學家Johann Carl Friedrich Gauss 在1795 年提出的一種初等函數。高斯函數在自然科學中有著極大的影響力,被廣泛地應用于數學、統計學、計算機學等多門學科之中。本文以高斯函數為基礎,提出了一種新的池化算法。高斯函數的解析式如式(1)所示:

其中:參數a、b、c均為常數。

從式(1)可以看出參數a影響了高斯函數的峰值大??;參數b決定了高斯函數曲線對稱軸的位置;參數c決定了高斯函數曲線的曲率,即c越大、曲線越平緩,c越小、曲線越陡峭。

1.2 算法原理

1.2.1 前向傳播

本文算法通過引入高斯函數來表示池化域內各元素與該池化域所含特征之間的關聯性。具體做法為:計算池化域內每一個元素的高斯函數值,并定義該函數值為該元素的高斯權重。由前文敘述可知,計算得出的高斯權重可以在一定程度上衡量池化域內各元素的關聯性。

對于高斯函數的參數,本文定義參數a恒等于1;由前文敘述可知,本文使用高斯函數的目的是衡量池化域內各元素與其最突出特征的關聯程度,高斯函數的計算結果正比于輸入值到參數b的距離,所以定義參數b為池化域內特征最突出點的值,即所有元素的最大值;參數c為根據參數b計算得到的標準差。參數b和參數c具體計算公式如式(2)和式(3)所示:

其中:N為池化域內元素個數,xi為池化域內第i個元素。

如果池化域內所有元素都相同,即xi=b,雖然根據式(3)計算的參數c為0 使得式(1)毫無意義,但是此時池化域內所有元素相等,所有元素的高斯權重自然也相等,所以定義此時f(x;a,b,c)=1。因此,本文使用的高斯函數計算公式如式(4)所示:

根據高斯權重,對于池化域內各元素進行加權平均計算,并將最終計算結果作為本文算法的輸出值,加權平均計算的公式如式(5)所示:

其中:N為池化域內元素的個數,fi為池化域內第i個元素的高斯權重,xi為池化域內第i個元素,y為加權平均計算的結果。

綜上所述,基于高斯函數的池化算法的運算步驟如下:

1)取池化域內所有元素的最大值為參數b。

2)將池化域內元素代入式(3)計算,求得參數c。

3)將參數a、b和c代入式(4)求取每個元素的高斯權重。

4)根據各元素的高斯權重,由式(5)對各元素進行加權平均計算。

具體算法流程示例如圖1 所示(圖中池化域尺寸為2×2,步長為2,計算結果保留兩位小數)。

圖1 算法流程示例圖Fig.1 Example of algorithm flow

1.2.2 反向傳播

反向傳播是訓練卷積神經網絡最為常用的一種方法,其原理是根據由損失函數計算出的誤差信息,運用某種優化算法對各神經元的權重進行優化。一般來說,反向傳播分成計算各權重的偏導數和更新權重兩步。由于池化層只是減少了輸入矩陣的元素個數,并沒有需要更新的權重,所以對于池化層來說,反向傳播只需要將后一層計算得到的梯度數量擴大到前一層需要的梯度數量,然后將這些梯度傳遞給前一層網絡即可。

本文提出的池化算法在常規算法的基礎上通過在各元素里引入高斯權重,并且最后使用加權平均法減少池化域內元素的個數,所以反向傳播時只需要根據高斯權重逆推導這個過程即可,計算公式如式(6)所示:

其中:fi為池化域內第i個元素的高斯權重,N為池化域內元素的個數,x為后一層網絡計算得出的梯度值,yi為池化域內需要傳遞給前一層網絡的第i個元素的值。該算法的流程如圖2 所示。

圖2 反向傳播算法流程Fig.2 Flowchart of back propagation algorithm

1.2.3 時間復雜度

由前文敘述可知,本文算法計算步驟分為計算參數b、計算參數c、計算池化域內各元素高斯權重和計算加權平均值4 步。由式(2)可知,計算參數b實質上是求取池化域內元素的最大值,其時間復雜度為O(n);由式(3)可知,計算參數c實質上是求取池化域內各元素與參數b的標準差,其時間復雜度為O(n);由式(4)可知,計算池化域內各元素高斯權重的時間復雜度為O(n);由式(5)可知,加權平均運算的時間復雜度為O(n)。由于本文算法的4 個計算步驟時間復雜度均為O(n),且計算方式為串行計算,故算法的時間復雜度為O(n)。

2 實驗及其結果與分析

2.1 實驗模型

LeNet5 是Lecun 等[15]在1998 年提出的用于手寫體字符識別的卷積神經網絡模型。它共由8 層組成,分別為輸入層、C1 卷積層、S2 池化層、C3 卷積層、S4 池化層、C5 卷積層、F6 全連接層和輸出層。LeNet5 的模型結構如圖3 所示。

圖3 LeNet5模型結構Fig.3 Structure of LeNet5 model

VGG16 是牛津大學計算機視覺實驗室2014 年提出的網絡結構。它由13 層卷積層、5 層池化層以及3 層全連接層組成。VGG16 的網絡模型結構如圖4 所示。

圖4 VGG16模型結構Fig.4 Structure of VGG16 model

ResNet[4]是由He 等在2015年提出的卷積神經網絡模型。ResNet18 由1 層卷積層、1 層池化層、4 個殘差塊和1 層全連接層組成,其中每個殘差塊包含兩層卷積和一條直連通道。殘差塊結構如圖5 所示。

圖5 殘差塊結構Fig.5 Structure of residual block

2019 年,谷歌通過繼承前兩代輕量級神經網絡使用的深度可分離卷積技術和倒殘差結構,并且結合資源受限的神經網絡架構搜索技術和NetAdapt 算法提出第三代輕量級神經網絡——MobileNet v3。MobileNet v3 分為Large 和Small 兩個版本,兩個版本的基本結構相似,區別僅在于網絡大小不同。本文選取MobileNet v3 Small 為實驗模型,該版本的網絡結構如表1 所示。

表1 MobileNet v3 Small模型結構Tab.1 Structure of MobileNet v3 Small model

為驗證基于高斯函數的池化算法的效果,本文將LeNet5、VGG16、ResNet18 和MobileNet v3 Small 中原有的池化算法分別替換為最大池化、平均池化、隨機池化、混合池化、模糊池化、融合隨機池化、soft 池化和基于高斯函數的池化,將替換得到的32 個模型作為實驗模型。

2.2 實驗數據集

本文選用CIFAR-10、Fer2013 和GTSRB(German Traffic Sign Recognition Benchmark)三個公開數據集進行實驗。

CIFAR-10 數據集[16]是一個經典的圖像分類數據集,包括60 000 幅像素為32×32 的彩色圖像,其中50 000 幅圖像用于訓練,10 000 幅圖像用于驗證,無測試集。該數據集中的圖像共分為airplane、automobile、bird 等10 個類別,每個類別6 000 幅圖像,所有類別均是完全互斥的,且不同類別間特征大不相同,所以常常被用于驗證圖像分類算法的性能。

Fer2013 數據集由Carrier 和Courville 創建[17],是國際機器學習會議2013 面部表情挑戰賽所使用的數據集。它由35 887 幅48×48 像素的人臉表情灰度圖構成,其中訓練集、驗證集和測試集的圖像數量分別為28 709、3 589 和3 589。該數據集將表情分為憤怒、厭惡、害怕、高興、悲傷、驚訝、中性7 類,每類表情對應圖像數量并不均衡,并且每張圖像的拍攝角度、背景、人物年齡等都不相同,這些因素極大增加了分類難度,要求圖像分類算法具有很好的泛化性和魯棒性才能取得較好的效果。

GTSRB 數據集是國際神經網絡聯合會議舉辦的多級圖像分類挑戰賽所使用的數據集之一[18]。該數據集中共有51 839 幅圖像(其中訓練集39 209 幅、驗證集12 630 幅、無測試集),涵蓋43 種不同的交通標識,每種標識為一種類別,不同類別包含圖像數量不一,且圖片質量參差不齊,識別難度要大于其他交通標識分類數據集。

2.3 實驗結果與分析

2.3.1 CIFAR-10數據集實驗結果

本節實驗使用CIFAR-10 數據集,設置訓練batch size 為256、學習率為0.001、優化器為Adam、損失函數為交叉熵損失函數、Epoch 為60,分別取第20、40 和60 個epoch 時的top-1(精確到小數點后三位)為模型性能評估指標。實驗結果如表2 所示。

表2 各模型在CIFAR-10數據集上的top-1指標 單位:%Tab.2 Top-1 index of each model on CIFAR-10 dataset unit:%

從表2 中可以看出,在CIFAR-10 數據集上,本文提出的池化算法適用于各個模型上的top-1 較其他7 種池化算法的top-1 提高了0.5~6 個百分點。

2.3.2 Fer2013數據集實驗結果

本節實驗使用Fer2013 數據集,設置訓練batch size 為256、學習率為0.001、優化器為Adam、損失函數為交叉熵損失函數、Epoch 為30,分別取第10、20 和30 個epoch 時的top-1(精確到小數點后三位)為模型性能評估指標。實驗結果如表3 所示。

表3 各模型在Fer2013數據集上的top-1指標 單位:%Tab.3 Top-1 index of each model on Fer2013 dataset unit:%

從表3 中可以看出,在Fer2013 數據集上,本文提出的池化算法適用于各個模型上的top-1 較其他7 種池化算法的top-1 提高了1~5 個百分點。

2.3.3 GTSRB數據集實驗結果

本節實驗使用GTSRB 數據集,設置訓練batch size 為256、學習率為0.001、優化器為Adam、損失函數為交叉熵損失函數、Epoch 為15,分別取第5、10 和15 個epoch 時的top-1(精確到小數點后三位)為模型性能評估指標。實驗結果如表4 所示。

從表4 中可以看出,在GTSRB 數據集上,本文提出的池化算法適用于各個模型上的top-1 較其他7 種池化算法的top-1 提高了0.5~3 個百分點。

表4 各模型在GTSRB數據集上的top-1指標Tab.4 Top-1 index of each model on GTSRB dataset

2.3.4 運算時間對比實驗結果

本節實驗選取分辨率分別為100×100、1 000×1 000 和10 000×10 000,像素點為0~255 隨機數的圖片各10 幅,將這些圖片作為最大池化、平均池化、隨機池化、混合池化、模糊池化、融合隨機池化、soft 池化和基于高斯函數的池化八種池化算法的輸入,統計各池化算法的運行時間作為實驗結果。

上述各池化算法的均池化域為2×2,步長為2。為避免實驗結果具有偶然性,本節實驗以各組圖片10 次實驗結果的平均值(單位為ms,保留3 位小數)作為最終實驗結果,如表5 所示。

從表5 中可以看出,相比最大池化、平均池化和混合池化等傳統池化算法,本文提出的池化算法由于計算量大一些,所以運算時間較長;本文算法雖然有一定的計算量,但是相比其他較為新穎的池化算法,本文算法的計算過程并沒有特別復雜,所以運算效率方面優于這些算法。

表5 各算法在不同圖片分辨率下的運行時間 單位:msTab.5 Running time of each algorithm under different image resolution unit:ms

2.3.5 實驗結果分析

由表2~4 中的實驗結果可知,無論是在LeNet5 模型、VGG16 模型、ResNet18 模型還是MobileNet v3 模型上,本文提出的基于高斯函數的池化算法對比最大池化、平均池化、隨機池化、混合池化、模糊池化、融合隨機池化和soft 池化七種池化算法在CIFAR-10、Fer2013 和GTSRB 三個數據集上精度方面都有不同程度的提升,這說明該算法在不同的模型和數據集上都具有一定的適用性。

由表5 中的實驗結果可知,本文提出的基于高斯函數的池化算法相比最大池化在運算效率方面雖然不及一些傳統算法,但相較于其余新穎算法也有所提升,這說明本文算法適用于可以適當降低對性能的要求,但對精度要求較高的場景。

3 結語

本文根據卷積神經網絡池化算法研究現狀,發現現有的池化算法大都沒能很好地考慮池化域內各元素與該池化域所含特征之間的關聯性,于是提出了一種基于高斯函數的池化算法,并且詳細介紹了該算法的原理、前向傳播和反向傳播的流程。

本文選擇LeNet5 模型、VGG16 模型、ResNet18 模型和MobileNet v3 模型作為實驗模型,分別在CIFAR-10、Fer2013和GTSRB 三個公開數據集上進行實驗,并且記錄不同訓練次數時模型的top-1 作為實驗結果。實驗結果表明:對比其他池化算法,本文提出的池化算法在不同的模型和數據集上均取得了不錯的效果;本文還選擇不同分辨率的圖片對算法運行時間進行實驗,實驗結果表明:本文提出的池化算法在運算效率方面表現尚可。

綜上所述,得出結論:文中提出的基于高斯函數的池化算法具有可行性和泛化能力,可以用于不同情況的理論研究和應用場景中。

猜你喜歡
高斯卷積神經網絡
基于全卷積神經網絡的豬背膘厚快速準確測定
基于神經網絡的船舶電力系統故障診斷方法
基于人工智能LSTM循環神經網絡的學習成績預測
基于圖像處理與卷積神經網絡的零件識別
MIV-PSO-BP神經網絡用戶熱負荷預測
基于深度卷積網絡與空洞卷積融合的人群計數
數學王子高斯
三次樣條和二次刪除相輔助的WASD神經網絡與日本人口預測
卷積神經網絡概述
從自卑到自信 瑞恩·高斯林
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合