1. 程式人生 > >個人理解關於GRU和LSTM之間的區別和聯絡

個人理解關於GRU和LSTM之間的區別和聯絡

首先通過公式我認為GRU(“Learning Phrase Representations using RNN EncoderDecoder for Statistical Machine Translation”)裡的h與LSTM裡的C是非常類似的,與之相對應的是GRU裡的和LSTM裡的非常類似。區別在於控制隱藏狀態更新的引數,GRU裡的控制引數有兩個,一個是重置門r,另一個是更新門z;而LSTM有輸入門、遺忘門、輸出門;在進行隱藏狀態更新時,GRU更新公式如下:





而LSTM的更新公式如下:



以上所給出的公式是用於比較兩者之間的區別和聯絡,因而並非都是全部的更新公式。我們可以看到GRU和LSTM的一、二行更新公式之間存在著類似的引數設定,區別在於:①GRU和LSTM更新公式的第一行,GRU通過更新門來控制上一時刻的資訊傳遞和當前時刻計算的隱層資訊傳遞。我對於此處的理解是,GRU中由於是一個引數進行控制,因而可以選擇完全記住上一時刻而不需要當前計算的隱層值,或者完全選擇當前計算的隱層值而忽略上一時刻的所有資訊,最後一種情況就是無論是上一時刻的資訊還是當前計算的隱層值都選擇傳遞到當前時刻隱層值,只是選擇的比重不同。而LSTM是由兩個引數(遺忘門和輸入門)來控制更新的,他們之間並不想GRU中一樣只是由一個引數控制,因而在比重選擇方面跟GRU有著很大的區別,例如它可以既不選擇上一時刻的資訊,也不選擇當前計算的隱層值資訊(輸入門拒絕輸入,遺忘門選擇遺忘)。②更新公式的第二行,我們可以很清晰地看到等號右邊第二項有著明顯的區別,GRU要在上一時刻的隱層資訊的基礎上乘上一個重置門,而LSTM無需門來對其控制。個人理解為LSTM必須考慮上一時刻的隱層資訊對當前隱層的影響,而GRU則可選擇是否考慮上一時刻的隱層資訊對當前時刻的影響。