?

深度網絡去相關層歸一化技術研究

2022-05-10 08:45王志揚沈項軍趙增民
小型微型計算機系統 2022年5期
關鍵詞:白化復雜度神經網絡

王志揚,袁 旭,沈項軍,趙增民,季 彬

1(江蘇大學 計算機科學于通信工程學院,江蘇 鎮江 212013)

2(常州云眾智能科技有限公司,江蘇 常州213000)

1 引 言

如今,深度神經網絡在圖像分割[1],文本分類[2],圖像分類[3]等領域獲得了巨大的成功.這是因為深度網絡通過多層非線性變換,其特征表達能力遠強于傳統淺層特征表達方法.但是隨著網絡深度的加深,過擬合的風險也越來越大,另外網絡中也隨之產生了梯度消失和梯度爆炸等難題,這些問題使得模型的訓練變得很困難.現階段,類似于權重衰減(Weight decay)[4]和Dropout[5]等技術已經被廣泛的應用到網絡訓練中來解決上述的問題.這些技術雖然能夠提升網絡的泛化能力,但是經常犧牲優化效率來換取精度的提升,這意味著有時需要訓練更多的epoch來獲得更好的性能.如何高效的訓練深度神經網絡現階段是一個具有挑戰性的問題.

近年來,歸一化(Normalization)的提出有效的避免了梯度爆炸和梯度消失的問題.在神經網絡中,如果某個特征數量級過大,在經過激活函數時,就會提前進入激活函數的飽和區間,導致網絡學習提前結束.數據歸一化技術可以重構原始的數據分布,使之落入一個小的特定區間,便于不同單位或量級的指標進行比較和加權.基于這一特點將其加入深度神經網絡的學習能夠在解決上述問題的基礎上進一步提升網絡的收斂速度和精度.其中批歸一化(Batch Normalization,BN)[6]作為一個加速網絡訓練的技術已經被廣泛的用于最新的網絡中,但是其需要設置合理的Batchsize才能有效的評估均值和方差,這也意味著批歸一化不適用于Batchsize很小的分布式模型.另一方面,在遞歸神經網絡(Recurrent Neural Networks,RNNs)[7,8]中遞歸神經元的總輸入通常隨序列長度而變化,因此在遞歸神經網絡中批歸一化表現的并不理想.

為了能夠更好的訓練遞歸神經網絡,Ba等人提出了層歸一化(Layer Normalization,LN)[9],該方法通過中心化和縮放網絡中神經元輸入,使得一層中不同的神經元具有相同的均值和方差來幫助網絡穩定訓練.與批歸一化不同,層歸一化對Batchsize的大小沒有任何限制,它可以適用于Batchsize為1的時候.由于該方法的簡單性和有效性,層歸一化已經成功的運用在各種深度模型上,并在不同任務上實現了更好的性能[10-12].盡管層歸一化在訓練序列模型上非常有效,但是在視覺識別方面只取得了有限的成功.針對卷積神經網絡(Convolutional Neural Networks,CNNs)[13,14],何等人在2018年提出了組歸一化(Group Normalization,GN)[15]來提升層歸一化在視覺識別方面的性能.大量的研究表明,組歸一化在Batchsize較小時具有比層歸一化更好的性能,這給Batchsize較小時的模型訓練提供了很好的優化方案.

不同于組歸一化的將通道進行分組,我們從數據分布的角度出發來提升層歸一化的性能.以多通道的圖像數據為例,雖然現有層歸一化技術能夠讓不同通道的像素點具有相同的均值和方差,但是沒有降低原圖像中相鄰像素點之間的相關性(圖1上),這意味著用于訓練時的輸入是冗余的.基于此,本文進一步提出了去相關的層歸一化(Decorrelated Layer Normalization,DLN) 來改善層歸一化的優化性能.所提方法通過對單個樣本所有通道加入白化操作,在保留原歸一化的基礎上進一步減少了輸入特征之間的相關性,從而降低了輸入數據的冗余并最終提升層歸一化的優化效果.與傳統的層歸一化對比如圖1所示,下方去相關層歸一化能夠使得不同通道的數據特征表達具有獨立同分布的特點.為了能夠使得白化后的數據更接近原始數據,本文采用ZCA白化[16]可最大程度地減少歐氏距離下由白化引起的失真[16,17].實驗結果表明,我們的方法相對于其他歸一化方法在Batchsize較小時有著更好的效果.

圖1 層歸一化與去相關層歸一化

2 相關工作

歸一化技術因其可以提高網絡的泛化能力而被廣泛用于各種深度網絡體系結構中.歸一化技術可以分為數據歸一化和權重歸一化兩個方向,針對數據歸一化2015年提出了BN[6]有效的減少了ICS(Internal Covariate Shift).BN通過一定的規范化手段,把每層網絡輸入的分布重塑到均值為0方差為1的標準正態分布.許多實驗已經證明批歸一化可以優化和提升深度網絡的收斂,并由于它的隨機不確定性也可以作為一個正則化器有益于網絡泛化.2016年,Hinton等人提出了LN[9]解決了BN不適用于小Batchsize的情況,區別于BN,LN層中的所有隱藏單元共享相同的歸一化項,但是不同的訓練用例具有不同的歸一化項.2018年何等人考慮到相同卷積以及一些其他的翻轉等操作得到的特征可以一起進行組歸一化(GN)[15],故將網絡中每個樣本的feature map的通道(channel)分成G組,每組將有Channel/G個通道,對這些通道中的元素求均值和標準差,這樣各組的通道用其對應的歸一化參數獨立地進行歸一化,進一步提升了小Batchsize上的訓練效果.GN與BN和LN的區別如圖2所示,N作為batch軸,C作為通道軸,(H×W)作為空間軸.

圖2 3種歸一化方法

受啟發于Batch Normalization,2016年Salimans等人提出了Weight Normalization(WN)[18]從權重的角度來提升網絡的泛化能力.2018年黃雷等人提出了Orthogonal Weight Normalization(OWN)[19],此方法將權重正交降低了權重的冗余,并且驗證了和BN相結合提升了網絡學習能力.2019年CVPR,SiyuanQiao等人提出了Weight Standardization[20],此方法與GN將結合,得到了在小batch上可以獲得比大batch上BN更強的性能.

3 去相關層歸一化

3.1 白化(Whitening)

在CNN中,數據集X∈RN×HWC具有4個維度.其中,N表示輸入樣本的個數,H和W代表樣本的高和寬,C是X的通道數,并且擾動變量ε>0是為了數值穩定,防止根號下為0.傳統的層歸一化的均值和方差設計如下:

(1)

(2)

Xn代表了數據集中的某個樣本,公式(1)和公式(2)可以使得數據不同通道的特征具有相同的均值和方差.但是傳統的層歸一化并沒有對數據特征進行去相關的處理.一種直觀的解決方案便是白化,標準的白化過程φ:RN×HWC→RN×HWC定義如下:

φ(X)=Σ-1/2(X-μ·1T)

(3)

(4)

(5)

為了能夠解決“隨機軸變換問題”,一種直接的解決方案通過一個旋轉矩陣D將PCA白化后的數據變換到原來的坐標軸下,這便是ZCA白化:

Σ-1/2ZCA=DΛ-1/2DT

(6)

大量研究表明[17,19],ZCA白化可最大程度地減少歐式距離下由白化引起的失真.因此,去相關層歸一化的表達式為:

DLN(X)=DΛ-1/2DT(X-μ·1T)

(7)

3.2 反向傳播(Back-propagation)

關于ZCA白化的反向傳播對于網絡的學習及其重要,這里通過[21]給出了ZCA白化的反向傳播公式:

(8)

(9)

(10)

(11)

3.3 復雜度分析

本節我們主要分析對卷積神經網絡應用歸一化算法的復雜度.以BN為例,我們以對于傳統的卷積神經網絡來說有BN(conv(Wx)),其中樣本X∈RM×H×W×C,權重W∈RC×N×Fh×Fw,conv(Wx)∈RM×H×W×N.其中M代表批次大小,C為通道數.Fh×Fw分別代表濾波器的高度和寬度.計算復雜度時,我們將根號計算和加減法的復雜度去除,設維度為M×H的矩陣與維度H×N的矩陣相乘的復雜度為θ(MHN).則對于BN的神經網絡有輸入conv(Wx)∈RM×H×W×N.BN的算法如下:

(12)

(13)

(14)

(15)

conv(Wx)的復雜度是θ(MNHWCFhFw).

第1步.乘法0次;

第2步.乘法MHWC次;

第3步.乘法MHWC次;

第4步:乘法MHWC次.因此BN的操作復雜度為θ(MNHWCFhFw+3MHWC).

同理我們可以得出GN和LN的時間復雜度與BN一致.

針對我們提出的DLN算法,根據公式(5)得到出1步的乘法次數為M2HWC,根據公式(6)計算第2步的乘法次數為M2HWC+(HWC)2M,根據公式(7)計算第3步的乘法次數為M2HWC,結合conv(Wx)的復雜度是θ(MNHWCFhFw).DLN的復雜度為θ(MNHWCFhFw+3M2HWC+(HWC)2M).各種歸一化算法復雜度對比如表1所示.

表1 不同的歸一化復雜度

3.4 訓練

像層歸一化一樣,去相關層歸一化可以廣泛的嵌入在各種深度網絡結構中.算法1和算法2分別描述了去相關層歸一化的前向和反向過程.

算法1.去相關層歸一化的前向過程

輸入:數據X∈RN×HWC超參ε

1.根據公式(4)和公式(5)計算X的均值μ和協方差矩陣Σ

2.特征值分解 Σ=DΛDT

算法2.去相關層歸一化的反向過程

4 實驗與分析

實驗所使用的去相關層歸一化算法及其對比實驗均基于Linux(Ubuntu 16.04)下的Python3.6以及PyTorch0.4深度學習框架實現,為了加快訓練過程,實驗采用 NVIDIA GTX 1080 Ti加速訓練.

主要聚焦于圖像分類任務來評估去想層層歸一化算法的性能,并且在CIFAR-10和CIFAR-100數據集上驗證了去相關層歸一化的有效性.其中CIFAR-10有10個類別的圖像,圖像的大小為32×32×3,每個類別有5000個訓練樣本和1000個測試樣本.相較于CIFAR-10,CIFAR-100有100個類別,每個類別有500個訓練樣本和100個測試樣本.將去相關層歸一化算法應用在標準的卷積神經網絡中來驗證本文方法的普適性,包括VGG Network[22]和Wide Residual Network[23].

4.1 VGG Network

首先測試了在VGG-16上的算法性能.實驗中我們使用了SGD優化,并且設置了momentum為0.9,weight decay 為0.0005.為了更好的觀察擬合效果我們設置了epoch為100,并且分別40,80個epoch后讓learning rate×0.1.

4.1.1 對比不同的Batchsize

由于層歸一化作用在圖像的通道層面,這不依賴Batchsize的大小,因此評估了不同Batchsize={2,4,8,16}的效果.參考GN的設計方案,我們設置Batchsize=16時候的學習率為0.005,由于Batchsize的大小與學習率正相關,設置Batchsize為N的時候的學習率為0.005×N/16,以消除Batchsize大小對學習率的影響.實驗結果如圖3所示,不同Batchsize在CIFAR-10上的效果,可以看到去相關層歸一化對不同的Batchsize影響較小,這也意味著去相關層歸一化為小Batchsize的訓練提供了新的選擇方案.

圖3 不同的Batchsize在VGG網絡上的效果

4.1.2 對比不同的歸一化方法

進一步的我們比較了去相關層歸一化和其他歸一化方法.圖4和圖5是分別在CIFAR-10和CIFAR-100上的測試效果,BN是Batch Normalizaiton,GN是Group Normalization,DLN是去相關層歸一化方法,其中實線是訓練集性能,虛線是測試集性能.圖4(a),圖5(a)是3種歸一化方法在Batchsize=2時候的表現,顯示了DLN在小Batchsize的時候有著更好的泛化能力.圖4(a),圖5(b)是3種歸一化方法在Batchsize=16時候的表現,DLN雖然在大Batchsize效果不如BN,但是依舊比傳統的GN效果更好,在CIFAR-100上DLN只需要訓練40多個epoch便可以達到GN相同的性能.最終測試準確率如表2和表3所示,可以看到,本文方法在Batchsize=4和Batchsize=2的時候都具有最好的效果,特別是在CIFAR-100上,相較于BN和GN,DLN分別提升了4.01%和1.97%.

圖4 不同歸一化算法基于VGG-16網絡在CIFAR-10數據集的性能表現

圖5 不同歸一化算法基于VGG-16網絡在CIFAR-100數據集的性能表現

表2 不同的歸一化方法在CIFAR-10上的top準確率

表3 不同的歸一化方法在CIFAR-100上的top準確率

4.2 Wide Residual Network

為驗證本文方法在大網絡中依舊有效,我們將本文算法應用在了 wide residual network,并替換其Normalization層為DLN.在這里使用了PyTorch-Classification(1)http://github.com/bearpaw/pytorch-classification.代碼庫中的WRN-28-10-drop基礎配置,將其epoch設置為150,并且分別在50,80,110,130 epoch后讓learning rate×0.1.另外,我們設置Batchsize=32時候的學習率為0.05,并且設置Batchsize為N的時候的學習率為0.05×N/32,其他設置保持不變.圖6和圖7分別是WRN網絡在CIFAR-10和CIFAR-100上的測試效果,我們可以觀察到去相關層歸一化在Batchsize=2的時候依舊具有最好的性能,比當前流行的組歸一化具有更強的泛化能力,并且穩定性上要好于傳統的層歸一化算法(LN).最終結果如表4所示,可以看到Batch normalization在小Batchsize時效果不如GN和DLN,由此可以進一步證明BN不適用于小批量數據集.注意到DLN使用小Batchsize在CIFAR-10和CIFAR-100上分別比BN高出了0.8%和1.94%.并且相較于傳統的層歸一化方法,網絡性能得到了進一步的提升,在兩個數據集上分別提升了0.75%和1.02%.

表4 不同歸一化算法基于Wide Residual Network在CIFAR數據集的top準確率

圖6 不同歸一化算法基于Wide Residual Network在CIFAR-10數據集的性能表現

圖7 不同歸一化算法基于Wide Residual Network在CIFAR-100數據集的性能表現

4.3 算法的效率

我們對比了不同的歸一化算法的執行效率,為了多方面的比較執行效率,首先選用[10×10,100×100,1000×1000]多種維度的矩陣進行效率的對比.從表5中,可以看出DLN在樣本數,也即第1維度越來越大時,算法的執行效率會跟BN和LN兩種算法的差距越來越大.這主要是因為構建的協方差矩陣維度是N×N(第1維×第1維),SVD分解的時間會隨著協方差的復雜度增加而增加.

表5 各種歸一化算法執行效率(秒) / N×N

在提出的去相關算法的場景下,數據的樣本數量應盡可能小,因此進行了進一步的實驗,分別對[2×10,2×100,2×1000]這3種維度的矩陣進行了對比,其中我們嚴格的控制樣本的數量為2.表6中可以看出,去相關歸一化算法的執行效率與BN和LN的執行效率十分接近.值得注意的是,在2×1000的場景下,達到了0.001419秒的執行效率.并且DLN的準確率在這種情況也是高于LN和BN兩種算法的.

表6 各種歸一化算法執行效率(秒) / 2×N

5 總 結

本文提出一種去相關層歸一化,該算法通過將ZCA白化加入到傳統的層歸一化中減少圖像通道特征之間的相關性,可以進一步提升層歸一化的泛化能力,并且驗證了該方法不受Batchsize大小的限制.在CIFAR-10,CIFAR-100數據集上的實驗結果證明本論文所提方法與其他歸一化方法在小批量樣本(Batchsize)訓練上表現更加優異,這給小樣本訓練提供了更好的方案.由于實驗聚焦于CNN網絡,并沒有針對RNN上的任務如文本分類,情感識別等進行驗證,將去相關歸一化應用在序列模型中并驗證其有效性將是我們后續研究工作.

猜你喜歡
白化復雜度神經網絡
基于神經網絡的船舶電力系統故障診斷方法
基于人工智能LSTM循環神經網絡的學習成績預測
柬語母語者漢語書面語句法復雜度研究
MIV-PSO-BP神經網絡用戶熱負荷預測
預期功能安全場景庫復雜度量化方法研究
Kerr-AdS黑洞的復雜度
非線性電動力學黑洞的復雜度
三次樣條和二次刪除相輔助的WASD神經網絡與日本人口預測
澳大利亞大堡礁珊瑚白化現象持續惡化
天下烏鴉也有白
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合