在我們 lstm 中的第一步是決定我們會從細胞狀態中丟棄什麼資訊。這個決定通過乙個稱為忘記門的層完成。該門會讀取h_(t-1)和x_t ,輸出乙個在 0到 1之間的數值給每個在細胞狀態c_(t-1)中的數字。1 表示「完全保留」,0 表示「完全捨棄」。
f t=
σ(wf
∗[h(
t−1)
,xt]
+bf)
f_t=σ(w_f*[h_(t-1),x_t ]+b_f)
ft=σ(
wf∗
[h(
t−1)
,xt
]+bf
)下一步是決定讓多少新的資訊加入到 cell 狀態 中來。實現這個需要包括兩個步驟:首先,乙個叫做「input gate layer 」的 sigmoid 層決定哪些資訊需要更新;乙個 tanh 層生成乙個向量,也就是備選的用來更新的內容, (ct
′)
(c'_t )
(ct′)
。在下一步,我們把這兩部分聯合起來,對 cell 的狀態進行乙個更新。
i t=
σ(wi
∗[h(
t−1)
,xt]
+bi)
i_t=σ(w_i*[h_(t-1),x_t ]+b_i)
it=σ(
wi∗
[h(
t−1)
,xt
]+bi
)( ct
′)=t
anh(
wc∗[
h(t−
1),x
t]+b
c)
(c'_t ) =tanh(w_c*[h_(t-1),x_t ]+b_c)
(ct′)
=tan
h(wc
∗[h
(t−
1),x
t]+
bc)
上面的兩個門,「遺忘門」和「輸入門」已經決定好了什麼要遺忘,什麼要更新保留了,現在要真的在cell state上執行了:
c
tc_t
ct=f
tf_t
ft * ct−
1c_
ct−1
+i
ti_t
it*ct′
c'_t
ct′
最終,我們需要確定輸出什麼值。這個輸出將會基於我們的細胞狀態,但是也是乙個過濾後的版本。首先,我們執行乙個 sigmoid 層來確定細胞狀態的哪個部分將輸出出去。接著,我們把細胞狀態通過 tanh 進行處理(得到乙個在 -1 到 1 之間的值)並將它和 sigmoid 門的輸出相乘,最終我們僅僅會輸出我們確定輸出的那部分。
o t=
σ(wo
∗[h(
t−1)
,xt]
+bo)
o_t=σ(w_o*[h_(t-1),x_t ]+b_o)
ot=σ(
wo∗
[h(
t−1)
,xt
]+bo
)h t=
ot∗t
anh(
ct
)h_t=o_t*tanh(c_t)
ht=ot
∗ta
nh(c
t)
所以:1.細胞狀態c
tc_t
ct儲存的是內容,它會根據遺忘門和輸入門來進行更新;
2.隱層狀態h
th_t
ht儲存的是當前細胞的各項內容存在與否的數值標誌,所以隱層狀態h
th_t
ht的更新需要在細胞狀態c
tc_t
ct更新後進行更新;
3.lstm是先根據遺忘門和舊的細胞狀態和輸入門和新的更新內容來更新細胞狀態,然後再用新的細胞狀態c
tc_t
ct來更新隱層狀態h
th_t
ht的過程。
lstm原理 LSTM原理及實踐(一) 理論
lstm long short term memory 算是時序模型中的比較常用也比較好的一種模型。在提到lstm之前,不得不說一下rnn recurrent neural network 其實就是把上一次輸出作為下一次輸入 如圖 可以看到,在每乙個時間點tn的總輸入都是上乙個tn 1時刻的輸出 這...
lstm結構的原理
一.lstm網路 long short term memory,即我們所稱呼的lstm,是為了解決長期以來問題而專門設計出來的,所有的rnn都具有一種重複神經網路模組的鏈式形式。在標準rnn中,這個重複的結構模組只有乙個非常簡單的結構,例如乙個tanh層。不必擔心這裡的細節。我們會一步一步地剖析 l...
lstm原理 長短期記憶網路LSTM
上兩小節我們主要講述了迴圈神經網路rnn,但是儘管 rnn 被設計成可以利用歷史的資訊來 當前的決策,例如使用之前出現的單詞來加強對當前單詞的理解,但是 rnn決策的主要還是最後輸入的一些訊號,更早之前的訊號會隨著時間的推遲而變得強度越來越低,它對後續的影響越來越弱。這樣就會給rnn帶來了新的技術挑...