1. 程式人生 > >長短記憶神經網絡LSTM

長短記憶神經網絡LSTM

put oid mem 計算公式 內容 targe ref stat com

轉載:https://www.jianshu.com/p/dcec3f07d3b5

長短時記憶網絡(Long Short Term Memory Network, LSTM),是一種改進之後的循環神經網絡,可以解決RNN無法處理長距離的依賴的問題。

長短時記憶網絡的思路:

原始 RNN 的隱藏層只有一個狀態,即h,它對於短期的輸入非常敏感。再增加一個狀態,即c,讓它來保存長期的狀態,稱為單元狀態(cell state)。


技術分享圖片

把上圖按照時間維度展開:

技術分享圖片

  在 t 時刻,LSTM 的輸入有三個:當前時刻網絡的輸入值 x_t、上一時刻 LSTM 的輸出值 h_t-1、以及上一時刻的單元狀態 c_t-1LSTM 的輸出有兩個

:當前時刻 LSTM 輸出值 h_t、和當前時刻的單元狀態 c_t.

關鍵問題是:怎樣控制長期狀態 c ?

方法是:使用三個控制開關

第一個開關,負責控制繼續保存長期狀態c;
第二個開關,負責控制把即時狀態輸入到長期狀態c;
第三個開關,負責控制是否把長期狀態c作為當前的LSTM的輸出。


技術分享圖片

如何在算法中實現這三個開關?

方法:用 門(gate)

定義:gate 實際上就是一層全連接層,輸入是一個向量輸出是一個 0到1 之間的實數向量
公式為:

技術分享圖片

gate 如何進行控制?

方法:用門的輸出向量按元素乘以我們需要控制的那個向量
原理:門的輸出是 0到1 之間的實數向量,當門輸出為 0 時,任何向量與之相乘都會得到 0 向量,這就相當於什麽都不能通過;輸出為 1 時,任何向量與之相乘都不會有任何改變,這就相當於什麽都可以通過。

LSTM 前向計算

一共有 6 個公式

遺忘門(forget gate)
它決定了上一時刻的單元狀態 c_t-1 有多少保留到當前時刻 c_t

輸入門(input gate)
它決定了當前時刻網絡的輸入 x_t 有多少保存到單元狀態 c_t

輸出門(output gate)
控制單元狀態 c_t 有多少輸出到 LSTM 的當前輸出值 h_t

遺忘門的計算為:

技術分享圖片 forget

遺忘門的計算公式中:
W_f 是遺忘門的權重矩陣,[h_t-1, x_t] 表示把兩個向量連接成一個更長的向量,b_f 是遺忘門的偏置項,σ 是 sigmoid 函數。


輸入門的計算:

技術分享圖片
input

根據上一次的輸出和本次輸入來計算當前輸入的單元狀態:

技術分享圖片 當前輸入的單元狀態c_t

當前時刻的單元狀態 c_t 的計算:由上一次的單元狀態 c_t-1 按元素乘以遺忘門 f_t,再用當前輸入的單元狀態 c_t 按元素乘以輸入門 i_t,再將兩個積加和:這樣,就可以把當前的記憶 c_t 和長期的記憶 c_t-1 組合在一起,形成了新的單元狀態 c_t由於遺忘門的控制,它可以保存很久很久之前的信息,由於輸入門的控制,它又可以避免當前無關緊要的內容進入記憶。

技術分享圖片 當前時刻的單元狀態c_t

輸出門的計算:

技術分享圖片



長短記憶神經網絡LSTM