循環神經網絡RNN的基本介紹


本博客適合那些BP網絡很熟悉的讀者

一 基本結構和前向傳播

符號解釋:

1. $c_{t}^{l}$:t時刻第l層的神經元的集合,因為$c_{t}^{l}$表示的是一層隱藏層,所以圖中一個圓圈表示多個神經元。

2. $h_{t}^{l}$:第l層在t時刻的輸出。因為$h_{t}^{l}$是一層隱藏層的輸出,所以表示的是一個向量。

3. $L_{j}$:表示的是在j時刻,網絡的輸出的值和目標輸出值的平方差,L表示的是所有時刻的平方差的和。

4. $W_{v}$:是一個矩陣,表示的是輸入x到c的權值矩陣,那么他的大小是(c的維度)x(x的維度)。

5. $W_{h}$:是一個矩陣,表示的是輸入同一層的上一個時刻h到c的權值矩陣,那么他的大小是(c的維度)x(h的維度)。

6. b:表示的是偏置。

(PS:個人感覺c,h和W這些符號表示的維度很重要,因為理解了維度,才能更好的理解網絡的結構,才能更好的去實現這個結構。另外在這里我們要學習的參數是$W_{v}$和$W_{h}$)
圖中左邊的網絡結構是一個RNN的時序上展開的結構,所有的列表示的是同一個神經網絡,只是時間依次排開而已,紫色(橫向)的箭頭表示的是時序上的聯系。藍色(豎向)的箭頭表示的是空間上的傳播(也就是普通的前向傳播),而紫色(橫向)的箭頭表示的上一個時刻隱藏層的輸出和當前時刻上一層的輸出共同組成當前隱藏層的的輸入。例如:$c_{t+1}^{l+1}$表示的是t+1時刻第l+1層,那么這一層的輸入是該層的上一個時刻的輸出$h_{t}^{l+1}$和當前時刻的上一層的輸出$h_{t+1}^{l}$共同作為$c_{t+1}^{l+1}$的輸入。

圖中右邊的公式分別是$c_{t+1}{l}$的輸入;$c_{t+1}{l}$的輸入的輸出,用$h_{t+1}{l}$表示;所有時刻的平方差的和。

二 梯度爆炸或梯度消失

2.1 Back-Propagation Through Time (BPTT)算法

上圖左邊的網絡結構表示的反向傳播的過程。其中綠色的表示的是時間上的反向傳播的過程,紅色的是同一個時刻空間上的傳播的過程(其實也就是普通前饋神經網絡的誤差過程),

上圖右邊的公式表示的反向傳播的計算,n個輸入的誤差平方和的關於每個神經元的偏導(也就是$\delta$),這個過程使用的是鏈式求導法則。而右邊是關於$\delta_{t}^{l}$的偏導。

第一個公式:將與$\delta_{t}^{l}$同一個誤差時刻(紅色部分,也就是普通的前饋傳播造成的誤差)分離出來,其他時刻的誤差(綠色部分)是時序上的,這個也是造成梯度消失或爆炸的原因。

第二個公式,$L_{t}$關於$c_{t}^{l}$的分解過程,這是BP網絡的分解方式。

第三個公式,$\sum L_{j}$關於$c_{t}^{l}$的分解過程,這和BP網絡的分解方式類似。

2.2 BPTT算法存在的問題

上圖表示的是從$\sum L_{j}$中取出最后一個$L_{t+n}$求關於$c_{t}^{l}$,存在n個$||W_{h}||||\delta'(c_{\tau}^{l})||$相乘,一般來說$||\delta'(c_{\tau}^{l})||$小於等於0.25,如果$W_{h}$小於4,那么就會出現梯度消;如果大於4,那么就會出現梯度爆炸。

2.3 解決方法:Constant Error Carrousel (CEC)

三 基本LSTM網絡的介紹

四 LSTM能解決梯度消失的原因


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM