使用Keras進行深度學習:(六)GRU講解及實踐
來自專欄 TensorFlowNews
作者:Ray
歡迎大家關注我們的網站和系列教程:http://www.tensorflownews.com/,學習更多的機器學習、深度學習的知識!也可以搜索公眾號:磐創AI,關注我們的文章。
介紹
GRU(Gated Recurrent Unit) 是由 Cho, et al. (2014) 提出,是LSTM的一種變體。GRU的結構與LSTM很相似,LSTM有三個門,而GRU只有兩個門且沒有細胞狀態,簡化了LSTM的結構。而且在許多情況下,GRU與LSTM有同樣出色的結果。GRU有更少的參數,因此相對容易訓練且過擬合問題要輕一點。
目錄
- GRU原理講解
- Keras實現GRU
一、GRU原理講解
下圖展示了GRU的網路結構,GRU的網路結構和LSTM的網路結構很相似,LSTM中含有三個門結構和細胞狀態,而GRU只有兩個門結構:更新門和重置門,分別為圖中的z_t和r_t,結構上比LSTM簡單。
將GRU網路結構具體運算操作用下圖進行表示。接下來將會針對該圖每一部分進行詳細的講解。
首先說明圖中每個符號的意義:
1.更新門(update gate):
[.]_j表示一個向量的第j個元素。與LSTM中忘記門和輸入門的操作一樣,也是該時刻的輸入x_t、上一時刻隱藏層h_(t-1)分別和權重矩陣W_z、U_z相乘,再將這兩部分結果相加後放入sigmoid激活函數中,將結果壓縮在0-1之間。
更新門的作用是決定上一層隱藏層狀態中有多少信息傳遞到當前隱藏狀態h_t中,或者說前一時刻和當前時刻的信息有多少需要繼續傳遞的(在最後的公式中可以看到此功能的表示,並有詳細講解更新門為什麼有這個作用)。當z_j越接近0為說明上一層隱藏狀態的第j個信息在該隱藏層被遺忘,接近1則說明在該隱藏層繼續保留。
2.重置門(reset gate):
和更新門的運算操作類似,只是權重矩陣不同而已。重置門是決定上一時刻隱藏狀態的信息中有多少是需要被遺忘的。當該值接近於0,則說明上一時刻第j個信息在當前記憶內容(在後文解釋該詞)中被遺忘,接近於1則說明在當前記憶內容中繼續保留。
讀到這裡,有些讀者可能會感覺重置門和更新門的作用很相似,是否可以再簡化只用一個門即可?其實不然,這兩個門作用的對象是不一樣的,GRU雖然沒有LSTM的細胞狀態,但是它有一個記憶內容,更新門是作用於上一時刻隱藏狀態和記憶內容,並最終作用於當前時刻的隱藏狀態(如文中最後一條公式所表達),而重置門作用於當前記憶內容。
3.確定當前記憶內容:
除了和上面兩個門一樣與權重矩陣相乘之外,還計算重置門結果r_t和h_(t-1)進行Hadamard乘積,即對應元素相乘。因為r_t是由0到1的向量組成的,因此,進行Hadamard乘積的意義就在於使用重置門決定在當前記憶內容中要遺忘多少上一時刻隱藏狀態的內容,正如重置門處描述,值接近於0說明該信息被遺忘,接近於1則保留該信息。最後再將這兩部分信息相加放入tanh激活函數中,將結果縮放到-1到1中。
記憶內容就是GRU記錄到的所有重要信息,類似於LSTM中的細胞狀態,比如在語言模型中,可能保存了主語單複數,主語的性別,當前時態等所有記錄的重要信息。
因此,通過此處的運算操作的說明,就可以了解該時刻的記憶內容由兩部分組成,一部分是使用重置門儲存過去相關的重要信息,另一部分是加上當前時刻輸入的重要信息。這兩部分就組成了當前時刻的所有記憶內容。
4.確定當前時刻隱藏層保留的信息:
(公式說明:此處是標量相乘,若是以向量表示,需要使用Hadamard乘積)
解釋在第2部分更新門處遺留的問題:
最後,該網路需要計算 h_t向量,該向量將保留當前單元的信息並傳遞到下一個單元中。在此過程,使用更新門,一方面,如公式第一項,它決定了上一個時刻的h_(t-1)中多少信息在此時刻隱藏單元h_t需要保留,另一方面,如公式的第二項,通過(1-z_j)表示那些需要遺忘的信息,用此時刻的記憶內容中相應的內容進行更新。這樣更新門就能決定了分別需要在當前時刻的記憶內容和上一時刻隱藏層的信息收集哪些內容了。
需要注意的是,雖然隱藏層信息的符號和當前記憶內容的符號相似,但是這兩者是有一定的區別的。當前記憶內容在上文中已經說明了是當前時刻保存的所有信息,而隱藏層信息則是當前時刻所需要的信息。比如在語言模型中,在當前時刻可能我們只需要知道當前時態和主語單複數就可以確定當前動詞使用什麼時態,而不需要其他更多的信息。
二、Keras實現GRU
在這裡,同樣使用Imdb數據集,且使用同樣的方法對數據集進行處理,詳細處理過程可以參考《使用Keras進行深度學習:(五)RNN和雙向RNN講解及實踐》一文。
可以發現GRU和LSTM具有同樣出色的結果,甚至比LSTM結果好一些。在很多時候,人們更願意使用GRU來替換LSTM,因為GRU比LSTM少一個門,參數更少,相對容易訓練且可以防止過擬合。(訓練樣本少的時候可以使用防止過擬合,訓練樣本多的時候則可以節省很多訓練時間。)因此GRU是一個非常流行的LSTM變體。同時,希望通過該文能讓讀者對GRU有更深刻的了解。
參考文獻:https://towardsdatascience.com/understanding-gru-networks-2ef37df6c9be
最後,對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!http://www.tensorflownews.com。我們的公眾號:磐創AI。——————————————————廣告——————————————————
七月在線機器學習集訓營火熱報名中,掃描下方二維碼,添加客服人員微信,可領取免費試聽課程和課程優惠券:
推薦閱讀:
※圖解機器學習:如何粗略理解underfitting, overfitting, 和overfitting的解決方案
※「凡是過往,皆為序章。」64歲的RODNEY BROOKS談人工智慧的起源與發展
※4 支持向量機-總結
※機器學習面試之偏差方差
※全程中文!谷歌發布機器學習速成課,完全免費(附視聽評測)
TAG:深度學習DeepLearning | 神經網路 | 機器學習 |