長短時期記憶(LSTM)及門控循環單元(GRU)網絡結構

一、背景

1、RNN自身可以通過不停的將信息循環操作,保證信息持續存在,從而可以利用前面得事件信息來對後面得事件進行分類操作。
2、RNN處理這類任務時不一定就可以完全得理解之前的記憶,因爲在語句過長得情況下,之前的文本內容在傳到後期時已經不再具有那麼的信息。
(1)在‘the clouds are in the sky’中,如果最後進行預測,則我們可以大概率的將sky進行預測出來。
(2)若在一個複雜的任務中‘I grew up in France… I speak fluent French.’如果在這句話中我們要進行最後一個單詞French的預測就比較麻煩,因爲我們最後一個單詞離France比較遠。
3、在RNN中若要解決2的(2)這類問題則需要通過調參的操作來進行解決。

二、LSTM網絡

1、標準的RNN與LSTM網絡的對比
(1)在RNN中每個重複的模塊僅具有比較簡單的一個網絡結構
在這裏插入圖片描述

(2)在LSTM中,它與RNN具有類似的這種鏈式結構,區別於RNN的地方在於,它的內部具有四個複雜的網絡層。
在這裏插入圖片描述

以下爲LSTM中各類符號的定義圖
在這裏插入圖片描述
圖中黃色類似於CNN裏的激活函數操作,粉色圓圈表示點操作,單箭頭表示數據流向,箭頭合併表示向量的合併(concat)操作,箭頭分叉表示向量的拷貝操作。

2、簡述LSTM的核心內容
我們可以把LSTM的核心理解爲一個細胞狀態,用貫穿細胞的水平線進行表示。這個細胞狀態和一個傳送帶類似,它雖然貫穿整個細胞,卻僅有很少的分支出現,只有這樣才能保證信息可以不變的流過整個循環神經網絡(RNN)。

在這裏插入圖片描述

然而,在LSTM的網絡中,我們可以通過一種被稱爲門的結構,對細胞狀態中的信息進行刪除或者添加信息。
這些門可以選擇性的決定讓細胞狀態中的哪些信息通過;門的結構也很簡單,在LSTM的內部,門的結構爲一個sigmoid層和一個點乘操作的組合。
在這裏插入圖片描述

由於sigmoid層的輸出值是在0到1之間,這代表着有多少的信息可以流過sigmoid層。通常0表示都不能通過,而1表示都能通過。
通常在一個LSTM中包含三個門來控制細胞狀態

3、一個一個門的打開LSTM(遺忘門、輸入門、輸出門)
(1)遺忘門
LSTM的第一件事情是需要決定我們的細胞狀態需要丟棄哪些信息。所以我們通過遺忘門來進行這項操作,這個遺忘門是通過sigmoid的單元來進行處理操作的。它通過查看ht1h_{t-1}xtx_t中的信息來輸出一個0-1之間的向量,該向量裏面的0-1值可以表示細胞狀態Ct1C_{t-1}中的哪些信息保留或丟棄多少。0表示不保留,1表示保留。遺忘門的結構如下圖。

在這裏插入圖片描述ft=σ(Wf[ht1,xt]+bf)f_t = \sigma(W_f*[h_{t-1},x_t]+b_f)

(2)輸入門
通過輸入門,我們可以決定爲當前的細胞狀態添加哪些新的信息。這一步分爲兩個子步驟,第一步,我們得利用ht1h_{t-1}xtx_t通過一個稱爲輸入門的操作來決定更新哪些信息。第二步,利用ht1h_{t-1}xtx_t通過一個tanh層得到新的候選細胞信息CTC'_T,這些信息可能會被更新到細胞信息中。
在這裏插入圖片描述
it=σ(Wi[ht1,xt]+bi)i_t = \sigma(W_i*[h_{t-1},x_t]+b_i)
Ct=tanh(Wc[ht1,xt]+bc)C'_t=tanh(W_c*[h_{t-1},x_t]+b_c)
將更新舊得細胞信息Ct1C_{t-1},變爲新的細胞信息CtC_t。更新的規則是通過遺忘門選擇忘記舊細胞信息的一部分,通過輸入門選擇添加候選細胞信息CtC'_t的一部分得到新的細胞信息CtC_t。更新操作如下
在這裏插入圖片描述Ct=ftCt1+itCtC_t = f_t*C_{t-1}+i_t*C'_t
CtLSTM**C_t可以理解爲LSTM的一種狀態,保存的中間態**
(3)輸出門
更新完細胞狀態後需要根據輸入的$h_{t-1}和x_t來判斷輸出細胞的哪些狀態特徵,這裏需要將輸入經過一個稱爲輸出門的sigmoid層得出判斷條件,然後將細胞狀態經過tanh層得出一個-1~1之間值得向量,該向量與輸出門得到得判斷條件相乘就得出了最終該循環神經網絡得單元輸出
在這裏插入圖片描述
Ot=σ(Wo[ht1,xt]+bo)O_t = \sigma(W_o[h_{t-1},x_t]+b_o)
ht=Ottanh(Ct)h_t = O_t * tanh(C_t)

三、GRU

1、GRU是LSTM網絡的一種效果很好的變體,它較LSTM網絡的結構更加簡單,參數也相應的減少。
2、對比LSTM引入的三個門函數(遺忘門、輸入門、輸出門)中,GRU中僅僅只有兩個門函數(更新門、重置門)

在這裏插入圖片描述
其中ztz_trtr_t分別表示更新門和重置門。更新門用於控制前一時刻的狀態信息被代入到當前狀態中的程度,更新門(ztz_t)的值越大則說明前一時刻的狀態信息代入越多;重置門(rtr_t)控制前一狀態有多少信息被寫入到當前的候選集h~t\widetilde{h}_t,重置門越小,前一狀態的信息被寫入的越少。

3、前向傳播中的公式理解
rt=σ(wr[ht1,xt])r_t = \sigma(w_r*[h_{t-1},x_t])
zt=σ(wz[ht1,xt])z_t = \sigma(w_z*[h_{t-1},x_t])
h~t=tanh(wh~[rtht1,xt])\widetilde{h}_t = tanh(w_{\widetilde{h}}*[r_t*h_{t-1},x_t])
ht=(1zt)ht1+zth~th_t= (1-z_t)*h_{t-1}+z_t*\widetilde{h}_t
yt=σ(woht)y_t=\sigma(w_o*h_t)
注:數和矩陣相乘爲點乘,其他的爲矩陣乘法

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