關(guān)于RNN和LSTM基礎(chǔ)知識了解
一、RNN
遞歸神經(jīng)網(wǎng)絡(luò)(RNN)被提出用來處理80年代的輸入序列時間信息。1993年,神經(jīng)歷史壓縮器系統(tǒng)解決了“非常深度學習”任務(wù),該任務(wù)需要及時展開RNN中的1000多個后續(xù)層。如圖1所示,在傳統(tǒng)的建?;顒樱ɡ缜梆伾窠?jīng)網(wǎng)絡(luò))中,我們顯然會看到固定輸入大小到固定輸出大小的固定網(wǎng)絡(luò)。在前饋神經(jīng)網(wǎng)絡(luò)的包圍下,我們得到圖1.b以揭示RNN的可區(qū)分性。
RNN能將輸入動態(tài)更改為包含多個輸入向量,每時間段一個,并且每個向量可以有很多列。
對于圖2所示的RNN網(wǎng)絡(luò),假設(shè)輸入序列為{x1,x2,…xt},則隱藏層節(jié)點的相應(yīng)時間向量為H={ h1,h2,…h(huán)t },并且輸出節(jié)點分別對應(yīng)于Y={ y1,y2…yt },其中xi ,hi,yi(i=1,2…t)是神經(jīng)網(wǎng)絡(luò)相應(yīng)層大的節(jié)點向量。
圖1 前饋神經(jīng)網(wǎng)絡(luò)
圖2 遞歸神經(jīng)網(wǎng)絡(luò)(RNN)
在普通的前饋神經(jīng)網(wǎng)絡(luò)中,前向傳播公式如下:
在前饋神經(jīng)網(wǎng)絡(luò)的RNN中,前向傳播公式如下:
其中Wxh制是輸入層和隱藏才能夠之間的權(quán)重矩陣,bh是隱藏層的偏差矢量。Why是隱藏層和輸出層之間的權(quán)重矩陣,by是輸出層的偏差矢量。Whh圖是隱藏層上一時刻與下一時刻之間的權(quán)重矩陣。σ是sigmoid()的激活功能。
由于RNN迭代復(fù)用隱藏層,導(dǎo)致RNN可以有效的保留序列的時間信息。如圖1所示,一般的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是從輸入層到隱藏層再到輸出層,并且每次的輸出都與之前和之后的輸入無關(guān)。如圖2所示,RNN將在隱藏層中循環(huán)多路復(fù)用,因此它可以有效的保存序列的時間信息,并且每次輸出的結(jié)果都受到所有先前輸入的影響。
圖3遞歸神經(jīng)網(wǎng)絡(luò)的發(fā)展
圖4 消失梯度問題
在圖3中,擴展了RNN的結(jié)構(gòu)以解釋RNN的隱藏層復(fù)用。除第一層外,RNN還將前一次隱藏層的結(jié)果與最新的輸入一起用作當前時間的輸入,從而影響后續(xù)的結(jié)果,同時是達到了保存序列時間信息的目的。
但是眾所周知,RNN存在“消失梯度問題”。如圖4所示,當梯度變得太大或者太小并且難以對輸入數(shù)據(jù)集的結(jié)構(gòu)中的長期依賴關(guān)系(10個時間步或更多)進行建模是就會出現(xiàn)這個問題。
二、 LSTM
為了克服RNN的“消失梯度問題”,Hochreiter和Schmidhuber于1997年提出了具有RNN架構(gòu)的長短期記憶(LSTM)網(wǎng)絡(luò)。
如圖5所示,LSTM和其它神經(jīng)網(wǎng)絡(luò)模型之間的區(qū)別在于其獨特的LSTM單元。當它與LSTM結(jié)合使用時,在不同時間階段傳播的LSTM的ht參數(shù)傳輸內(nèi)部存儲器狀態(tài)Ct。盡管LSTM單元有很多改進的結(jié)構(gòu),但是它們都沒有將模型的預(yù)測準確性進一步提升。 在圖5中,從左到右的四個部分是忘記門,輸入門,單元門和輸出門。
圖5 長短期記憶網(wǎng)絡(luò)單元
每個門對應(yīng)的輸入時ht-1,xt和它們對應(yīng)的權(quán)重矩陣。 忘記門負責選擇性地忘記存儲在原始單元中的先前狀態(tài),以避免“消失梯度問題”。 輸入門和單元門的結(jié)果相乘并加到先前的單元Ct-1上。最后,為了計算當前的輸出ht ,我們使用了當前的單元門結(jié)果與出出門結(jié)果。使用到的相關(guān)公式如下:
Ft、It、Ct和Ot分別是四個門各自的輸出結(jié)果。W是從相應(yīng)的輸入到對應(yīng)的門。例如,Wxy是相應(yīng)的輸入層到斜門的權(quán)重,并且Whi從上一刻就隱藏了起來。從層到輸入門的權(quán)重bf,bi,bc和bo是四個門的偏置矢量,⊙是兩個矢量或矩陣點乘法。σ和tanh()是常用的激活函數(shù)。