LSTM與GRU

很多博客已經詳細講述了lstm和gru的結構及公式,這裏就不一一介紹了,參考下面鏈接,講的挺詳細

https://blog.csdn.net/gzj_1101/article/details/79376798

這篇文章主要講自己對lstm與gru的區別及聯繫的理解。

在傳統RNN中,由於反向傳播過程中出現激活函數的累乘,容易造成梯度消失和梯度爆炸,這就造成在較長的time-steps下,後面的step很難學到前面step的信息,爲了解決這一問題,設計出了lstm及lstm的變種,其核心原理在於在前向計算中,刻意地選擇記住一定比例的過去的信息和一定比例的現在的信息。

而這個一定比例的選擇我們很容易想到激活函數sigmoid,它的輸出正好是(0,1)之間,在lstm中一般稱爲門。

LSTM的結構如下:

從圖中可以看出,lstm主要包括三個門,分別稱爲遺忘門,輸入門和輸出門。我們構建這個結構的起因就是想記住一部分過去的信息,這個主要通過最左側的遺忘門實現,選擇記住ft倍的Ct-1,另一部分當前的信息通過輸入門實現,選擇記住it倍的Ct(^),兩個部分加起來就是當前所記住的信息,但是一般我們不會需要輸出記住的所有信息,只需要輸出記住的一部分有用信息,也就是輸出門的功能,即選擇ot倍的ct輸出。

這樣我們可以通俗地理解,Ct爲某個time-step記住的所有信息,ht爲某個step輸出的有用信息。

由於lstm的結構複雜性且引入了一個新的狀態變量,Cho, et al. (2014)基於lstm提出了一種變種,稱爲gru,其結構比標準的lstm的結構簡單,在後來也很流行,結構如下所示:

與lstm相比,從直觀上我們可以看到“門”由三個變爲兩個,論文中稱爲重置門和更新門。同時,也少了ct這個狀態變量。

gru中通過1-zt倍的ht-1選擇記住部分過去信息,通過zt倍的ht(~)選擇記住部分當前信息,相加爲當前step的輸出信息。與lstm的核心原理相同,gru也是選擇記住一定比例的過去的信息和一定比例的現在的信息,但在比例的選擇上呈現差異,lstm對過去和現在的信息選擇相同的比例輸出,而gru對過去和現在的信息輸出的比例和爲1,對輸出的過去信息和現在信息有一種權重的作用。

核心區別在於gru在計算當前state信息時對過去信息有一種選擇性,即當前信息的產生是否受過去信息的影響。

舉個例子:對於這樣一句話“你喜歡吃蘋果,而我喜歡吃香蕉”,“喜歡”這個信息的產生並不受“你”的影響,也有可能是討厭之類的,但是“我”的信息的產生就受到“而”的轉折的影響。

對於lstm,“你”之後出現“喜歡”和“討厭”的比例爲4:3或4:1沒有區別,最後的輸出信息爲“你喜歡”,誰大輸出誰

而對於gru,“你”之後出現“喜歡”和“討厭”的比例爲4:3或者4:1,表示最後的輸出信息爲“你喜歡”的可能性是輸出“你討厭”的可能性的1.3倍或者4倍,表示兩種事件。

所以gru與lstm相比,進行了更深層次的理解,增加了不同state之間信息的聯繫程度。

 

 

 

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