深度学习之递归神经网络
文章目錄
- 一、遞歸神經(jīng)網(wǎng)絡(luò)
- 1、什么是遞歸神經(jīng)網(wǎng)絡(luò)
- 2、RNN
- 3 Elman遞歸神經(jīng)網(wǎng)絡(luò)
- 4 長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)LSTM
- 5 GRU門(mén)控制遞歸單元網(wǎng)絡(luò)
一、遞歸神經(jīng)網(wǎng)絡(luò)
1、什么是遞歸神經(jīng)網(wǎng)絡(luò)
? ? 遞歸神經(jīng)網(wǎng)絡(luò)是兩類人工神經(jīng)網(wǎng)絡(luò)的總稱,分為是時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network)和結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network)。前者也可叫循環(huán)神經(jīng)網(wǎng)絡(luò)。RNN網(wǎng)絡(luò)在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上加入了“記憶”成分。
? ? 之前的一些神經(jīng)網(wǎng)絡(luò)模型中,假設(shè)訓(xùn)練數(shù)據(jù)之間是相互獨(dú)立的,但是許多實(shí)際應(yīng)用中,數(shù)據(jù)之間是相互依賴的,比如在時(shí)間序列相關(guān)的輸入場(chǎng)景下,信息之間的傳遞更多的是一種相互傳承的關(guān)系。再比如在空間結(jié)構(gòu)場(chǎng)景中,數(shù)據(jù)之間存在空間的組合關(guān)系,可以將整體數(shù)據(jù)劃分為局部的小結(jié)構(gòu),由局部的小結(jié)構(gòu)推導(dǎo)出整體的性質(zhì)。
2、RNN
? ? 下面使用RNN的時(shí)候,一般指代的是時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network)。其處理的對(duì)象是一種時(shí)間序列數(shù)據(jù),它將數(shù)據(jù)信息流以一種循環(huán)的方式進(jìn)行傳遞處理。
? ? 序列是什么:序列(x1,x2,…,xm)被看做一系列隨著時(shí)間步長(zhǎng)(time step)遞進(jìn)的事件序列。這里的時(shí)間步長(zhǎng)并不是真實(shí)世界中所指的時(shí)間,而是指序列中的位置。
? ? RNN的特點(diǎn):
? ? 術(shù)語(yǔ):當(dāng)前時(shí)間步t的輸入為xt,它的前綴序列輸入數(shù)據(jù)為(x1,x2,…,xt-1)。
? ? 持續(xù)性:由于時(shí)間序列信息,前后數(shù)據(jù)不是相互獨(dú)立,當(dāng)前階段的輸出不僅和當(dāng)前的輸入有關(guān),還會(huì)受到過(guò)去的決策影響,所以這是一種持續(xù)性,也是單詞recurrent的意思。
? ? 記憶性:RNN可以保留序列的記憶信息。對(duì)于當(dāng)前時(shí)刻t,上一個(gè)時(shí)刻的狀態(tài)表示為ht-1,可以說(shuō)st-1編碼記錄了xt的前綴序列數(shù)據(jù)的信息,這就時(shí)所謂的記憶性。當(dāng)對(duì)t時(shí)刻的輸入xt進(jìn)行計(jì)算時(shí),利用持續(xù)性,綜合當(dāng)前輸入xt和前一時(shí)刻的記憶st-1,一起得到t時(shí)刻的狀態(tài)st。比如為了給當(dāng)前用戶推送合適的數(shù)據(jù),需要保留用戶過(guò)去的操作點(diǎn)擊行為。這些用戶行為記錄就是“記憶”。
3 Elman遞歸神經(jīng)網(wǎng)絡(luò)
? ? 遞歸神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)中出現(xiàn)環(huán)形結(jié)構(gòu),可讓一些神經(jīng)元的輸出反饋回來(lái)作為輸入信號(hào)。使得網(wǎng)絡(luò)在t時(shí)刻的輸出狀態(tài)不僅與t時(shí)刻的輸入有關(guān),還與t-1時(shí)刻的網(wǎng)絡(luò)狀態(tài)有關(guān),從而能處理與時(shí)間有關(guān)的動(dòng)態(tài)變化。
? ? Elman網(wǎng)絡(luò)和前饋網(wǎng)絡(luò)類似,但隱層神經(jīng)元的輸出被反饋回來(lái),與下一時(shí)刻輸入層的神經(jīng)元提供的信號(hào)一起作為隱層神經(jīng)元在下一時(shí)刻的輸入。
? ? 上圖為Elman遞歸神經(jīng)網(wǎng)絡(luò)的展開(kāi)圖,通過(guò)展開(kāi)操作,從理論上可以把網(wǎng)絡(luò)模型拓展為無(wú)限維,也就是無(wú)限的時(shí)間序列。而且可見(jiàn)RNN在每一時(shí)間步t都有相同的網(wǎng)絡(luò)結(jié)構(gòu)。
? ? 該網(wǎng)絡(luò)結(jié)構(gòu):輸入層的神經(jīng)元個(gè)數(shù)為n,隱層的神經(jīng)元數(shù)量為m,輸出層神經(jīng)元個(gè)數(shù)為r。
? ? 圖中,x是某時(shí)間步輸入向量(n維),s代表網(wǎng)絡(luò)隱層的某時(shí)間步狀態(tài)(m維),o代表某時(shí)間步的輸出向量(r維),輸入層與隱層之間由權(quán)重矩陣U連接,大小為(nxm)維;W是連接上一時(shí)間步的隱層單元與當(dāng)前時(shí)間步的隱層單元的權(quán)重矩陣,大小為(mxm)維;V是連接隱藏層與輸出層單元的權(quán)重矩陣,大小為(mxr)維。
? ? 公式形式:RNN的前向傳播可以表示為:某一時(shí)間步t的情況
過(guò)歸一化后的預(yù)測(cè)概率。b和c都是偏置,指的注意的是,U,W,V在每個(gè)時(shí)刻并沒(méi)有變化。一般要設(shè)置一個(gè)初始的隱藏單元s-1,作為初始記憶狀態(tài),一般為0向量。我們可以只看出:第t時(shí)間步的記憶信息由前(t-1)個(gè)時(shí)間步的記憶結(jié)果st-1和當(dāng)前的輸入xt共同決定,這些信息保存在隱層中,不斷向后傳遞,跨越多個(gè)時(shí)間步,影響每一個(gè)新輸入數(shù)據(jù)的處理。
? ? 下圖為一個(gè)時(shí)間步,時(shí)間步t的網(wǎng)絡(luò)結(jié)構(gòu)圖:
? ? 最下方是RNN的輸入層,用X表示,X = (x0,x1,…,xT),是T+1個(gè)時(shí)間步的輸入向量組成序列,其中xt表示第t時(shí)間步的輸入數(shù)據(jù),xt通常是一個(gè)如圖的n元向量。
中間部分是網(wǎng)絡(luò)的隱層,用S(H)表示,S = (s0,s1,…,sT),是T+1個(gè)時(shí)間步的隱層狀態(tài)向量組成序列,st也是一個(gè)向量,為第t時(shí)間步的隱層向量。它是如圖所示的m元向量。它是處理記憶信息的地方。
? ? ##總結(jié)##劃重點(diǎn)##:典型的時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)Elman,每個(gè)時(shí)間步都是一個(gè)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),但是因?yàn)榧尤肓藭r(shí)間序列,也就是有了持續(xù)性和記憶性。隨著時(shí)間步的推移,對(duì)于某個(gè)時(shí)間步的網(wǎng)絡(luò)結(jié)構(gòu):都有一個(gè)輸入xt,它是一個(gè)n維向量,它就是輸入層。都有一個(gè)前綴隱層記憶信息st-1,它是個(gè)m維向量,它是所謂的記憶信息層。都有隱層st,,st,它一個(gè)m為向量,它表示當(dāng)前隱層的狀態(tài)。都有一個(gè)輸出ot,它是個(gè)r維向量,它就是輸出層。輸入層和隱層之間的權(quán)重矩陣U,記憶信息層和隱層之間的權(quán)重矩陣W,隱層和輸出層之間的權(quán)重矩陣V。記憶信息層和輸入層共同決定當(dāng)前隱層的狀態(tài)。隨著時(shí)間序列的前進(jìn),每個(gè)時(shí)間步都會(huì)產(chǎn)生自己的結(jié)果。當(dāng)隱層不止一個(gè)的時(shí)候,隱層與隱層之間的連接為權(quán)重矩陣Y1,Y2。
? ? 前向傳播過(guò)程:對(duì)于每個(gè)時(shí)間步來(lái)說(shuō),都有當(dāng)前時(shí)刻的輸入和傳遞過(guò)來(lái)的記憶信息,他們共同作為當(dāng)前隱層的輸入信號(hào),然后當(dāng)前隱層產(chǎn)生當(dāng)前的輸出和記憶信息。所以可知隨著時(shí)間序列的前進(jìn),每個(gè)時(shí)間步都會(huì)產(chǎn)生自己的輸出結(jié)果,記憶信息和當(dāng)前輸入共同決定隱層的狀態(tài)。記憶信息的傳遞是通過(guò)不同時(shí)間步隱層之間的連接權(quán)重記錄的,不斷向后傳遞,跨越多個(gè)時(shí)間步,影響每一個(gè)新輸入數(shù)據(jù)的處理。
(2)時(shí)間反向傳播BBTT
? ? 當(dāng)使用傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)進(jìn)行監(jiān)督學(xué)習(xí)的時(shí)候,模型訓(xùn)練的本質(zhì)是最小化損失函數(shù)來(lái)確定參數(shù)的取值。一般采用反向傳播BP算法進(jìn)行參數(shù)更新。但是在循環(huán)神經(jīng)網(wǎng)絡(luò)中,由于循環(huán)的存在,參數(shù)W,U,V矩陣在計(jì)算中共享,這時(shí)普通的BP算法無(wú)法應(yīng)用到RNN的訓(xùn)練中。
? ? BPTT算法是BP算法在RNN結(jié)構(gòu)上的一種變體形式,采取在RNN模型的展開(kāi)式上進(jìn)行梯度計(jì)算。從計(jì)算過(guò)程看,BPTT與標(biāo)準(zhǔn)反向傳播算法基本相同,最主要的差異是由于在RNN網(wǎng)絡(luò)中,每一時(shí)刻計(jì)算都共享參數(shù)變量W,所以計(jì)算梯度的時(shí)候,每個(gè)時(shí)刻的層得到的W的梯度都需要累加在一起,以保證每一層計(jì)算所得的誤差都得到一定程度的校正,而在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)中,每個(gè)網(wǎng)絡(luò)的參數(shù)計(jì)算都是相互獨(dú)立的,所以梯度學(xué)習(xí)也是相互獨(dú)立的.
? ? 缺點(diǎn):梯度消失,無(wú)法保存較遠(yuǎn)的記憶。
靈活的RNN結(jié)構(gòu)
? ? 因?yàn)樵陔[層序列向量定長(zhǎng)的時(shí)候,輸入輸出可變長(zhǎng),這種靈活結(jié)構(gòu)的前提是,RNN固有的記憶和持續(xù)性。
4 長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)LSTM
? ? 前提背景:
? ? 普通RNN結(jié)構(gòu)只能對(duì)距離比較近的時(shí)刻的記憶更加強(qiáng)烈,而距離較遠(yuǎn)則并不清楚。如傳統(tǒng)的Elman模型,由于存在梯度消失等缺點(diǎn),不能有效地保留長(zhǎng)時(shí)間的記憶信息。數(shù)學(xué)
? ? 解釋如下:
? ? RNN結(jié)構(gòu)本質(zhì)是很多層相同非線性函數(shù)的嵌套形式,如果忽略掉激活函數(shù)和輸入向量,RNN節(jié)點(diǎn)的狀態(tài)ht可以表示為:
? ? 若特征值取小于1則會(huì)快速降為0,若特征值大于1,快速趨向于無(wú)窮。由于權(quán)重矩陣W隨著時(shí)間序列前進(jìn)被共享,由上圖可見(jiàn),在狀態(tài)傳遞過(guò)程中相當(dāng)于W被乘了很多次,到第t個(gè)時(shí)間步Wt可能只能趨向于0或無(wú)窮大了,就是消失或爆炸。導(dǎo)致對(duì)于一個(gè)時(shí)間序列,任何前面發(fā)生的時(shí)間的記憶都會(huì)以指數(shù)級(jí)的速度被遺忘。
【A】:LTSM基本原理:
? ? 長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)LSTM是時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)的一種變體。整體結(jié)構(gòu)和傳統(tǒng)的RNN基本一致,與傳統(tǒng)的Elman模型激活層的結(jié)構(gòu)不同,隱藏層的設(shè)計(jì)更復(fù)雜,并有效克服了梯度消失問(wèn)題。LSTM隱藏層的核心設(shè)計(jì)是一種叫記憶體(cell state)的信息流,它負(fù)責(zé)把記憶信息從序列的初始位置傳遞到序列的末端。通過(guò)4個(gè)相互交互的“門(mén)”單元,控制著在每一時(shí)間步t對(duì)記憶信息值的修改。
? ? 術(shù)語(yǔ)介紹:x號(hào)是點(diǎn)積操作,因?yàn)閟igmoid函數(shù)取值范圍為[0,1],門(mén)控制器描述信息能夠通過(guò)的比例LSTM在某時(shí)間步短期記憶單元st的基礎(chǔ)上增加了一個(gè)長(zhǎng)期記憶單元Ct來(lái)保持長(zhǎng)期記憶。
? ? 1、忘記門(mén):忘記門(mén)選擇保留上一時(shí)間步t-1的長(zhǎng)期記憶Ct-1的哪些信息進(jìn)入下一時(shí)間步的長(zhǎng)期記憶Ct。得到信息保留比例 ft,忘記門(mén)通過(guò)一個(gè)激活函數(shù)實(shí)現(xiàn):
利用激活函數(shù)將函數(shù)值壓縮得到一個(gè)大小在(0,1)之間的閾值,當(dāng)函數(shù)值接近1的時(shí)候,表示記憶體保留的信息越多,當(dāng)函數(shù)值接近0的時(shí)候,表示記憶體丟棄的信息越多。
? ? 2、輸入門(mén):它決定了當(dāng)前時(shí)間步的輸入信息(候選門(mén)的信息總量)形成的新記憶C’t中有多少信息將被添加到下一時(shí)間步長(zhǎng)期記憶Ct中,與忘記門(mén)計(jì)算公式幾乎一致:
? ? 3、候選門(mén):用來(lái)計(jì)算當(dāng)前時(shí)間步輸入xt與上一時(shí)間步短期記憶st-1所具有的信息總量,計(jì)算如下:
? ? 4、輸出門(mén):也就是由Ct求解st的過(guò)程,控制著當(dāng)前時(shí)間步短期記憶st如何受長(zhǎng)期記憶Ct的影響,計(jì)算公式:
? ? ot是一個(gè)大小在(0,1)之間的權(quán)重值,這樣傳遞給下一階段的記憶信息為:
? ? 時(shí)間序列狀態(tài)st的更新是靠記憶信息Ct和輸出比例ot來(lái)決定的,記憶信息流Ct一直處于更新中。
LSTM隱藏層的邏輯設(shè)計(jì)圖:
根據(jù)理解,手繪了邏輯圖
? ? 忘記門(mén)將上一時(shí)間步的輸出信息st-1與當(dāng)前輸入xt進(jìn)行線性組合后,得到過(guò)去記憶Ct-1的信息保留比例 ft,由候選門(mén)得到當(dāng)前輸入與過(guò)去記憶的信息總量C’t;由輸入門(mén)得到候選門(mén)中的信息總量添加到記憶信息流中的比例it ,;輸出門(mén)得到更新后得到的記憶Ct用于下一階段得到st的信息比例。
? ? 記憶的更新:由兩部分組成,第一部分通過(guò)忘記門(mén)過(guò)濾過(guò)去的部分記憶,大小為
ft x Ct-1;第二部分是添加當(dāng)前的新增數(shù)據(jù)信息,添加比例由輸入門(mén)控制,大小為
it x C’t 。 這聯(lián)股份組合得到更新后的記憶信息Ct:
? ? LSTM改進(jìn)主要體現(xiàn)在通過(guò)門(mén)控制器增加了對(duì)不同時(shí)刻記憶的權(quán)重控制,加入跨層連接削減梯度消失的影響,在原有結(jié)構(gòu)增加了線性連接,使得長(zhǎng)期信息更好傳遞。
下圖為節(jié)點(diǎn)級(jí)聯(lián)和其抽象表示:
5 GRU門(mén)控制遞歸單元網(wǎng)絡(luò)
? ? 我們要注意的是下面所說(shuō)的隱藏層并不是隱層,是將網(wǎng)絡(luò)結(jié)構(gòu)展開(kāi)后隨著時(shí)間序列而得到的一系列隱層組成的,所以也叫隱藏層。
LSTM網(wǎng)絡(luò)的設(shè)計(jì)方式多種多樣,在實(shí)際應(yīng)用中,隱藏層的“門(mén)”的單元設(shè)計(jì)可能會(huì)由于要解決的實(shí)際問(wèn)題不同,在設(shè)計(jì)上會(huì)有細(xì)微的差別。
? ? GRU基本原理:在LSTM基礎(chǔ)上進(jìn)行了簡(jiǎn)化,主要包括下面兩個(gè)方面的改造:(1)將輸入門(mén)和忘記門(mén)組合成一個(gè)新的門(mén)單元,成為更新門(mén);(2)將記憶單元Ct與隱藏層單元st結(jié)合為一個(gè)統(tǒng)一的單元,如圖所示:
? ? 如圖:rt是重置門(mén),它的值決定了過(guò)去記憶和當(dāng)前輸入的組合方式;zt表示更新門(mén),它控制過(guò)去記憶能保存多少;h就是候選門(mén);
總結(jié)
以上是生活随笔為你收集整理的深度学习之递归神经网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle数据库12c安装教程,Ora
- 下一篇: 百度离线人脸识别SDK