本文只是簡單的說明一下RNN的結構,不涉及RNN的發展歷史
一般的神經網絡,比如前饋神經網絡,其特點是:
1 共有輸入層,隱層,輸出層3層;
2 輸入層的輸入與時間並無關係
隱層的每一層的神經元彼此之間並不相連
輸出層的輸出是由所有的輸入層以及網絡架構決定的,與時間無關
而循環神經網絡恰恰相反,即:
1 隱層之間的節點不是相互獨立而是有連接的,且隱層的輸入不僅包括輸入層的輸出,還包括上一時刻隱藏層的輸出
2 而且輸入層進行輸入後,而是隨時間進行變化進行相應的計算,同時每次計算都會產生一個輸出,即就是輸出也是隨時間變化的
二者對比如下:左邊爲一個簡單的神經網絡結構圖,右邊則爲RNN結構圖
簡單的神經網絡 循環神經網絡
看起來循環神經網絡很複雜,我們可以循環神經網絡進行展開:
參數意義:o表示輸出,x爲輸入,s爲隱層,U,V,W均爲權重
那麼,瞭解了RNN的結構,我們還需要知道怎麼進行操作:
如上圖所示,令X = {x1,x2,x3,......xt,xt+1,......}表示輸入;令 O={o1,o2,.......ot,ot+1,......}表示輸出;令S={s1,s2,......st,st+1,......}表示隱層的神經元的狀態
U表示輸入層與隱層之間的權重,W表示隱層自身的權重,V表示隱層與輸出層之間的權重
X t 表示X在第 t 步的輸入,由上圖可以知道X i 是按照 i 從左向右由小向大依次作爲輸入的;
那麼S在 t 時刻的狀態由公式(1)決定: S(t) = f [S(t-1) * W + X(t) *U + b] (1)
其中 f 爲激活函數,b爲偏置
注意 W,U,V三個權重在所有時刻都是共享的
輸出層:O(t) = softmax( V * S(t));
以上便爲循環神經神經網絡的基本結構。本文並沒有接受相應的算法,只是簡單的對循環神經網絡的結構做了個瞭解,若有不足,懇請指正。
相關原理來源: http://blog.csdn.net/heyongluoyao8/article/details/48636251
https://zhuanlan.zhihu.com/p/22266022
http://blog.csdn.net/u010751535/article/details/54044222