RNN(循環神經網絡)
-
RNN示意圖
是一個向量,它表示輸入層的值;是一個向量,它表示隱藏層的值;是輸入層到隱藏層的權重矩陣;也是一個向量,它表示輸出層的值;是隱藏層到輸出層的權重矩陣。循環神經網絡的隱藏層的值不僅僅取決於當前這次的輸入,還取決於上一次隱藏層的值。權重矩陣就是隱藏層上一次的值作爲這一次的輸入的權重。輸出值,是受前面歷次輸入值、…影響的,這就是爲什麼循環神經網絡可以往前看任意多個輸入值的原因。
-
計算公式:
-
雙向循環神經網絡
- 示意圖
- 計算公式:
- 示意圖
LSTM(長短時記憶網絡)
- 單元狀態(cell state)
新增加的狀態c,稱爲單元狀態(cell state)。我們把上圖按照時間維度展開:
在t時刻,LSTM的輸入有三個:當前時刻網絡的輸入值、上一時刻LSTM的輸出值、以及上一時刻的單元狀態;
LSTM的輸出有兩個:當前時刻LSTM輸出值、和當前時刻的單元狀態。
用到了門(gate)的概念。門實際上就是一層全連接層,它的輸入是一個向量,輸出是一個0到1之間的實數向量。
LSTM用兩個門來控制單元狀態c的內容,一個是遺忘門(forget gate),它決定了上一時刻的單元狀態有多少保留到當前時刻;另一個是輸入門(input gate),它決定了當前時刻網絡的輸入有多少保存到單元狀態。LSTM用輸出門(output gate)來控制單元狀態有多少輸出到LSTM的當前輸出值。
LSTM需要學習的參數共有8組,分別是:遺忘門的權重矩陣和偏置項、輸入門的權重矩陣和偏置項、輸出門的權重矩陣和偏置項,以及計算單元狀態的權重矩陣和偏置項。
- LSTM單元結構:
-
遺忘門:
-
輸入門:
-
用於描述當前輸入的單元狀態,它是根據上一次的輸出和本次輸入來計算的:
-
當前時刻的單元狀態
-
輸出門
-
LSTM最終的輸出
-
GRU
GRU 是LSTM 的一個變體,GRU 保持了 LSTM 的效果同時又使結構更加簡單。
GRU 只剩下兩個門,即更新門和重置門。
-
更新門
用於控制前一時刻的狀態信息被代入到當前狀態的程度,更新門的值越大說明前一時刻的狀態信息帶入越多。 -
重置門
用於控制忽略前一時刻的狀態信息的程度,重置門的值越小說明忽略得越多。 -
GUR單元結構