1. 程式人生 > >RNN和LSTM原理推導

RNN和LSTM原理推導

一、RNN原理
RNN實際上也就是神經網路,它的基本元件(姑且這麼稱它吧)實際上也就是一個最簡單的神經網路(一個input,一個hidden,一個output)
如圖所示
這裡寫圖片描述
最大的區別就是,對於hiddenLayer來說,它的輸入不再單一的來自inputLayer,還來自於上一個時刻的hiddenLayer,也就是說,不同時刻的hiddenLayer之間也有權值連線。RNN基本結構如下圖所示
這裡寫圖片描述
RNN和傳統的神經網路一樣,也有前向傳播和反向傳播。
前向傳播:
這裡寫圖片描述
a:是指sum(WiXi),所有特徵乘以權值,累加得到的和
theta:啟用函式
b:累加和經過啟用函式得到的值
t:表示t時刻
h:表示和隱藏層有關
k:表示和輸出層有關
i:表示和輸入層有關
Wih:表示輸入層和隱藏層之間的權值(其他的以此類推)
a(t,h):用來輸入到下一時刻的隱藏層
a(t,k):作為當前時刻的輸出
反向傳播:
這裡寫圖片描述


delta(t,h):殘差,從公式中可以看出,當前時刻隱藏層的殘差當前時刻輸出層的殘差加上下一時刻隱藏層的殘差
RNN的侷限性:梯度消失

二、LSTM原理推導
由於RNN的侷限性(梯度消失),LSTM引入一個cell的概念,實際上就是引入一個block代替RNN裡面的隱藏層,block結構如下:
這裡寫圖片描述
cell:用來儲存引數的,state,前面的時序資訊有哪些需要記住,哪些需要忘記
input gate:用來控制當前特徵是否有用,因為有些時候可能不需要當前資訊,需要的是歷史資訊
output gate:用來控制當前資訊是否有用,因為有時候當前資訊可能不重要,需要的是對當前進行衰減,輸入到其他時刻的節點中去,在其他時刻起作用
forget gate:對於前面無效的資訊選擇忘記(從另一個角度想,要是把所有時刻的資訊狀態都記錄,要儲存的資訊太多)
前向傳播:
input gate
這裡寫圖片描述


第一項是inputLayer的輸入,權值乘以特徵
第二項是上一時刻隱藏層的資訊(這個隱藏層應該是經過outputLayer出來的特徵)
第三項是上一時刻cell儲存的資訊(cell裡面儲存的是所有時刻的資訊)
forget gate:
這裡寫圖片描述
和input gate的三個輸入來源是一樣的
output gate:
這裡寫圖片描述
和input gate的三個輸入來源是一樣的
由此可見,實際上在一個block中,當前時刻資訊,上一時刻輸出的資訊,歷史資訊,和這三個控制門都有連線。
cell
這裡寫圖片描述
首先要牢記cell的作用(用來儲存歷史資訊),
a(t,c)表示cell的輸入,包括當前時刻的特徵和前一時刻的輸出
S:表示cell的輸出,forget gate*前一時刻的歷史狀態記錄+input gate*cell的輸入激勵值
cell的輸出會經過output gate
反向傳播:
這裡寫圖片描述

Loss Function就是殘差的累加和
(還有很多方面待完善。。。)