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