LSTM與RNN的區別

2021-10-23 15:02:00 字數 2257 閱讀 4212

1. rnn

rnn能夠處理一定的短期依賴,但無法處理長期依賴問題。因為當序列較長時,序列後部的梯度很難反向傳播到前面的序列,這就產生了梯度消失問題。當然,rnn也存在梯度**問題,但這個問題一般可以通過梯度裁剪(gradient clipping)來解決。

rnn網路結構如下:

ht​為timestep t的隱藏層狀態值,x

tx_t

xt​為輸入,h

th_t

ht​實際上還要經過softmax或者別的函式處理得到輸出y^t

\widehat_t

y​t​

。上圖中rnn單元的計算公式為:

h t=

tanh

(wh.

[ht−

1,xt

]+bh

)h_t=tanh(w_h.[h_,x_t]+b_h)

ht​=ta

nh(w

h​.[

ht−1

​,xt

​]+b

h​)2. lstm

lstm的網路結構相比於rnn複雜了很多。從微觀上看,lstm引入了細胞狀態,並使用輸入門、遺忘門、輸出門三種門來保持和控制資訊。

具體的,lstm某個timstep t的計算公式如下所示:ft=

σ(wf

.[ht

−1,x

t]+b

f)f_t=\sigma(w_f.[h_, x_t]+b_f)

ft​=σ(

wf​.

[ht−

1​,x

t​]+

bf​)

i t=

σ(wi

.[ht

−1,x

t]+b

i)i_t=\sigma(w_i.[h_, x_t]+b_i)

it​=σ(

wi​.

[ht−

1​,x

t​]+

bi​)

c ~t

=tan

h(wc

.[ht

−1,x

t]+b

c)\widetilde_t=tanh(w_c.[h_, x_t]+b_c)

ct​=ta

nh(w

c​.[

ht−1

​,xt

​]+b

c​)ct=

ft×c

t−1+

it×c

~tc_t=f_t \times c_+i_t\times\widetilde_t

ct​=ft

​×ct

−1​+

it​×

ct​ot=

σ(wo

.[ht

−1,x

t]+b

o)o_t=\sigma(w_o.[h_, x_t]+b_o)

ot​=σ(

wo​.

[ht−

1​,x

t​]+

bo​)

h t=

ot×t

anh(

ct)h_t=o_t\times tanh(c_t)

ht​=ot

​×ta

nh(c

t​)上述公式中,f

tf_t

ft​為遺忘門、i

ti_t

it​ 為輸入門、o

to_t

ot​為輸出門、c

tc_t

ct​為細胞狀態、c~t

\widetilde_t

ct​為細胞狀態候選值、h

th_t

ht​為隱藏層狀態值、w

ww和b

bb為權重和偏置。

rnn沒有細胞狀態;lstm通過細胞狀態記憶資訊。

rnn啟用函式只有tanh;lstm通過輸入門、遺忘門、輸出門引入sigmoid函式並結合tanh函式,新增求和操作,減少梯度消失和梯度**的可能性。

rnn只能夠處理短期依賴問題;lstm既能夠處理短期依賴問題,又能夠處理長期依賴問題。

LSTM及RNN簡單總結

rnn可以記住之前的資訊,將當前資訊聯絡到之前的資訊,比如 the cloud are in the sky 最後的詞,我們並不需要其他的上下文就能知道是sky,這種場景中,相關資訊和 距離比較近,因此rnn可以有效利用先前的資訊。但是當資訊距離比較長,比我我們看的一些電影,在前部份埋下伏筆,最後破...

RNN系列之六 LSTM

lstm的基本結構如下圖 包含三個門控,乙個更新門 輸入門 u,乙個遺忘門 f,乙個輸出門 o 更新門 將新的資訊選擇性的更新到細胞狀態中。遺忘門 將細胞狀態中的資訊選擇性的遺忘。輸出門 確定細胞狀態與輸入的哪個部分將輸出出去。具體數學表示式為 在很多lstm版本中,幾個門值的計算不只取決於輸入x ...

LSTM為什麼比RNN好

來自知乎大佬towser的回答,比較深刻,也加了點自己的注釋,侵刪 lstm 能解決梯度消失 梯度 是對 lstm 的經典誤解,rnn 中的梯度消失 梯度 和普通的 mlp 或者深層 cnn 中梯度消失 梯度 的含義不一樣。mlp cnn 中不同的層有不同的引數,各是各的梯度 而 rnn 中同樣的權...