從RNN到LSTM--公式描述

好久沒寫博客了,近幾天重新看LSTM,發現有很多細節之前沒有理解到位,並且至今有一些疑惑。接下來從RNN談起,利用公式描述,並結合tensorflow函數說明兩個容易混淆的細節。之後講解LSTM,主要參考自大神Alex Graves論文《supervised sequence labelling with recurrent neural networks》,同時加上自己的理解,如果不對,請大家指出,在此先行謝過!

首先,說一下自己的疑惑!目前幾乎所有的博客、教程,在講解LSTM時,幾乎都是以一個block裏僅有一個memory cell進行講解,但是實際情況是一個block裏有可以有多個memory cell,在LSTM發明者 Hochreiter & Schmidhuber,1997的論文中,明確指出了一個block裏可以有多個cell。我的問題是:

1、對於一個block裏有多個memory cell的情況,假設有一個block裏有兩個memory cell,那麼這兩個cell是如何連接的?是共用三個門嗎?如果是,若採用全零初始化,那豈不是兩個cell的值會一直相同?還是各自有自己的門?如果是各自有各自的門,豈不是可以看作多個block,一個block內,僅有一個memory cell?

希望大神看到後可以幫我解答一下,謝謝!

1、RNN

1.1 公式

經典RNN也就是Vanilla RNN,如下圖1所示:

圖1

 

循環神經網絡的獨特之處在於隱層,它是與上一時刻自連接的,也就是隱層對應的權值矩陣一定是方陣。將圖1簡化爲圖2。

圖2

用公式表達爲:

a_t = Ux_t+Wh_{t-1}                        (1)

h_t=f(a_t)f爲激活函數              (2)

o_t = g(Vh_t)                                     (3)

以圖1爲例,x_t表示在t時刻神經網絡的輸入,x_t的shape爲3\times 1h_t的shape爲4\times 1o_t的shape爲2\times 1,U的shape爲4\times 3,W的shape爲4\times 4,一定是方陣,V 的shape爲2\times 4

1.2 tensorflow代碼易混點

在tf中,經常會遇到RNN輸出tuple,例如

(outputs,state)=tf.nn.static_rnn(cell,inouts)

在這裏,outputs爲每個時間步的輸出,是一個長度爲T的list;state是最後一個時間步的狀態。

那麼,outputs[-1]與state相同嗎?對於上述經典RNN來說是相同的,用博客《如何簡單的理解LSTM——其實沒有那麼複雜》中的圖表示,如圖3所示。

圖3

從圖中可以看出,state就是outputs[-1]的複製,圖3中的h對應式(2)中的h。但是,這個結論對於LSTM卻不適用,接下來會進行講解。

2、 LSTM

2.1  LSTM發展歷程

簡要說明一下,最初LSTM《Hochreiter S, Schmidhuber J. Long Short-Term Memory[J]. Neural Computation, 1997, 9(8):1735-1780.》是沒有遺忘門的,後來2000年Gers改進,增加了遺忘門,之後又增加了peephole連接。peephole連接是將t-1時刻未激活的memory cell狀態,送到 t 時刻,作爲輸入門與輸出門的輸入,也就是下圖4-5中綠線表示。

2.2 公式

公式部分主要參考Alex Graves論文《supervised sequence labelling with recurrent neural networks》33 34 37 38頁。

接下來以輸入層4個節點,輸出層爲2個block,每個block有1個memory cell爲例進行說明。

圖4

 

圖5

 

圖6

 

 

圖7

圖4-圖7給出了LSTM前向過程的公式表達(圖片右邊)以及示意圖,以及各個權值矩陣的shape。

2.2 tensorflow代碼易混點

在1.2中講到,對於LSTM來說,outputs[-1]與state是不同的,原因在於outputs裏是隱層輸出,而state是cell狀態,用上圖公式裏的符號表示爲outputs是b^{t}的集合,而state是最後一個時刻的s_c。對應博客《如何簡單的理解LSTM——其實沒有那麼複雜》中的圖表示,如圖8、9所示。圖8、9中的C_t對應圖6中的S^{t},圖8、9中的h_t對於圖7中的b^{t},這裏S^{t}b^{t}是由標量S_c^{t}b_c^{t}構成的向量,是細胞狀態與隱層輸出。

圖8
圖9

參考:

https://www.cnblogs.com/ooon/p/5594438.html

https://zybuluo.com/hanbingtao/note/581764

https://www.jianshu.com/p/4b4701beba92 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章