編者按:近日,中國電子科學技術(shù)大學和澳大利亞伍倫貢大學的研究者合作發(fā)表論文,介紹了他們創(chuàng)造的獨立循環(huán)神經(jīng)網(wǎng)絡(IndRNN),這種新型RNN能有效解決網(wǎng)絡收斂時的梯度爆炸和消失問題,并能夠處理更長的序列。以下是論智對原文的大致編譯,如有不足之處還請指正。
循環(huán)神經(jīng)網(wǎng)絡(RNN)已經(jīng)被廣泛用于序列數(shù)據(jù)的處理。然而,由于常見的梯度消失和爆炸問題以及很難學習長期模式,RNN通常難以訓練。為了解決這些問題,研究人員提出了長短期記憶(LSTM)和門控循環(huán)單元(GRU),但使用雙曲正切和Sigmoid函數(shù)又會使梯度隨圖層衰減。因此,構(gòu)建高效可訓練的深度網(wǎng)絡是具有挑戰(zhàn)性的任務。另外,RNN圖層中的所有神經(jīng)元都糾纏在一起,它們的行為很難解釋。為了解決這些問題,本文提出了一種新型RNN模式,成為獨立循環(huán)神經(jīng)網(wǎng)絡(IndRNN),其中每層中的神經(jīng)元都相互獨立,并且它們跨層連接。最終實驗結(jié)果表明,IndRNN管理起來很容易,能防止梯度爆炸和消失,同時還能讓網(wǎng)絡長期學習。
獨立循環(huán)神經(jīng)(IndRNN)網(wǎng)絡介紹
在這片論文中,我們提出了獨立循環(huán)神經(jīng)網(wǎng)絡(IndRNN),用公式可以表示成:
其中循環(huán)權(quán)重u是一個向量,⊙表示阿達馬積(Hadamard product)。同一圖層中的每個神經(jīng)元都與其他神經(jīng)元不相連,通過疊加兩層或更多層的IndRNN,可以將神經(jīng)元連接。對于第n個神經(jīng)元,隱藏層hn,t可以通過以下公式得到:
其中wn和un分別表示第n行的輸入權(quán)重和當前權(quán)重。每個神經(jīng)元只接收當前狀態(tài)隱藏層和輸入其中的信息。也就是說IndRNN中的每個神經(jīng)元都有獨立的時空特征。傳統(tǒng)上,隨著參數(shù)被共享,RNN被視為多層感知器。與傳統(tǒng)的RNN不同,這次提出的IndRNN將隨時間獨立地聚合空間模式。
IndRNN隨時間進行反向傳播
對于神經(jīng)網(wǎng)絡每一層隨時間進行的梯度反向傳播,IndRNN中的梯度可以對每個神經(jīng)元單獨計算,因為一層網(wǎng)絡之間沒有互相連接的部分。具體計算過程可參見原論文。
多層IndRNN
如上所說,IndRNN的同一個圖層中的神經(jīng)元是彼此獨立的,通道間的信息會隨時間在多層IndRNN之間傳播探索。為了說明這一點,我們將一個雙層的IndRNN和傳統(tǒng)單層RNN進行比較。簡單起見,IndRNN和傳統(tǒng)RNN都忽略了偏差。假設一個有N個神經(jīng)元的雙層神經(jīng)網(wǎng)絡,其中第二層的循環(huán)權(quán)重為零,那么就表示第二層只是一個完全連接層。
考慮到參數(shù)的數(shù)量,對于一個有N個神經(jīng)元的RNN網(wǎng)絡來說,輸入的維數(shù)為M,則傳統(tǒng)RNN的參數(shù)數(shù)量為M×N+N×N。而只有一層的IndRNN的參數(shù)數(shù)量為M×N+N。對于一個兩層的IndRNN,其中每層都有N個神經(jīng)元的網(wǎng)絡來說,參數(shù)的數(shù)量為M×N+N×N+2×N??傊?,雖然IndRNN的神經(jīng)元是彼此獨立的,但多層IndRNN中跨層的信息可以很好地得到解釋。
基本的IndRNN結(jié)構(gòu)如圖所示:
其中“weight”和“Recurrent+ReLU”表示每一步處理輸入的循環(huán)過程,ReLU是激活函數(shù)。通過堆疊這種基礎架構(gòu),可以建立一個深度IndRNN網(wǎng)絡。由于權(quán)重層用來處理輸入,那么它很自然地就擴展到其他多個圖層中加深處理過程。同樣,用來處理輸入的圖層也可以像CNN中的殘差結(jié)構(gòu)一樣。由于IndRNN的簡單結(jié)構(gòu),我們可以很容易地將其擴展到不同的網(wǎng)絡結(jié)構(gòu)中。例如,除了簡單的堆疊IndRNN或者堆疊用于處理輸入的圖層,我們還可以以殘差網(wǎng)絡的方式進行堆疊。下圖展示了殘差IndRNN的示例:
在每個步驟,梯度可以從恒等映射(identity mapping)直接傳播到其它層。由于IndRNN能隨時間的推移解決梯度爆炸和消失的問題,梯度可以在不同步驟之間高效傳播。因此,網(wǎng)絡可以比傳統(tǒng)的RNN更深更長。和其他網(wǎng)絡一樣,更深更長的IndRNN網(wǎng)絡可以進行端對端訓練。
實驗過程
接下來,就要對IndRNN進行測試。首先是常用的adding problem,這是評估RNN模型性能的常用方法。兩個長度為T的序列被輸入到模型中,第一個序列在(0,1)范圍內(nèi)均勻采樣,而第二個序列兩個入口處為1,其余都為0。序列有三種長度,T=100、500和1000,分別用于實驗,測試模型是否有長期記憶的能力。
參與實驗對比的有傳統(tǒng)采用tanh的RNN、LSTM、IRNN(采用relu的RNN)。RNN、LSTM和IRNN都只有一層,而IndRNN有兩層。每個模型包含128個隱藏單元,RNN、LSTM和兩層IndRNN的參數(shù)數(shù)量分別為16k、67k和17k。最終測試結(jié)果如下:
首先,對短序列來說(T=100),大多數(shù)模型表現(xiàn)得很好(除了采用tanh的RNN),它們收斂到一個非常小的錯誤(比標準還要小)。
當序列長度增加時,IRNN和LSTM模型出現(xiàn)了收斂困難。當長度達到1000時,IRNN和LSTM無法減少錯誤。然而,IndRNN仍然可以將錯誤迅速收斂。這表明IndRNN的長期記憶優(yōu)于傳統(tǒng)RNN和LSTM。
從表格中我們也能看出,傳統(tǒng)RNN和LSTM只能維持在中等長度記憶(500到1000)。為了研究IndRNN在超長序列上的記憶,我們又做了一個5000的實驗,如下圖所示:
可以看出,IndRNN仍然表現(xiàn)得很好。注意有噪音的出現(xiàn),是因為IndRNN的初始學習速率(2×10-4)較大,一旦學習速率降低,模型性能就更加穩(wěn)定。這說明IndRNN能有效地解決梯度爆炸和消失的問題。
序列MNIST分類
序列MNIST的分類是評估RNN模型的又一常用方法。網(wǎng)絡按順序讀取MNIST數(shù)字的像素,之后執(zhí)行分類。為了讓任務更加困難,MNIST的像素被隨機交換。由于采用tanh的RNN不會以高精度收斂,只有采用relu的IndRNN能被評估。這里我們使用了6層IndRNN,每層有128個神經(jīng)元。為了加速訓練,每層之后插入了批標準化(BN)。結(jié)果如下表所示,與現(xiàn)有方法相比,IndRNN的性能更好。
其他實驗
除了上述兩個實驗,研究人員還對IndRNN進行了語言建模測試和基于骨架的動作識別。語言建模是在詞匯數(shù)據(jù)集Treebank上進行的。結(jié)果如下:
與現(xiàn)有方法相比,IndRNN比傳統(tǒng)的RNN和LSTM表現(xiàn)的更好。
動作識別測試是在NTU RGB+D數(shù)據(jù)集上進行的,該數(shù)據(jù)及是目前動作識別最大的數(shù)據(jù)集,它包含56880個序列,其中包括60中動作類別。最終的評估及過如下:
IndRNN的性能比RNN和LSTM的性能明顯要好。
結(jié)語
這篇論文中,研究人員介紹了獨立循環(huán)神經(jīng)網(wǎng)絡(IndRNN),其中每個圖層中的神經(jīng)元都是相互獨立的,并且它能很好地解決梯度爆炸和消失的問題,性能也比傳統(tǒng)的RNN和LSTM要好。
-
神經(jīng)網(wǎng)絡
+關(guān)注
關(guān)注
42文章
4734瀏覽量
100420
原文標題:獨立循環(huán)神經(jīng)網(wǎng)絡(IndRNN):打造更長更深的RNN
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論