深度學習筆記 迴圈神經網路RNN LSTM

2021-10-09 07:26:19 字數 1817 閱讀 3954

那麼右邊的w又是什麼呢,把第一幅圖開啟之後,是這樣的:

舉個例子,有一句話是,i love you,那麼在利用rnn做一些事情時,比如命名實體識別,上圖中的 |xt-1| 代表的就是i這個單詞的向量, |xt|代表的是love這個單詞的向量, |xt+1| 代表的是you這個單詞的向量,以此類推,我們注意到,上圖展開後,w一直沒有變,w其實是每個時間點之間的權重矩陣,我們注意到,rnn之所以可以解決序列問題,是因為它可以記住每一時刻的資訊,每一時刻的隱藏層不僅由該時刻的輸入層決定,還由上一時刻的隱藏層決定,公式如下,其中ot代表t時刻的輸出, |st| 代表t時刻的隱藏層的值:

值得注意的是,在整個訓練過程中,每一時刻所用的都是同樣的w。

以上是最基礎版本的rnn,我們可以看到,每乙個時刻的隱藏狀態都不僅由該時刻的輸入決定,還取決於上一時刻的隱藏層的值,如果乙個句子很長,到句子末尾時,他將記不住這個句子的開頭的詳細內容,而lstm通過他的「門控裝置」有效地緩解了這個問題,這也就是為什麼我們現在都在使用lstm而非普通的rnn。打個比喻吧,普通rnn就像乙個乞丐,路邊撿的,別人丟的,什麼東西他都想要,什麼東西他都不嫌棄,lstm就像乙個貴族,沒有身份的東西他不要,他會精心挑選符合自己身份的物品。

由於lstm是rnn的一種變體,是更高階的rnn,所以二者的本質是一樣的:每個時刻都會把隱藏層的值存下來,到下一時刻的時候再拿出來用,這樣就保證了,每一時刻含有上一時刻的資訊,如圖,我們把存每一時刻資訊的地方叫做memory cell,即記憶細胞。都是,和rnn只有中間的memory cell不同,lstm的memory cell附近多了三個門,控制資訊的進出。

依次來解釋一下這三個門:

input gate:中文是輸入門,在每一時刻從輸入層輸入的資訊會首先經過輸入門,輸入門的開關會決定這一時刻是否會有資訊輸入到memory cell。

output gate:中文是輸出門,每一時刻是否有資訊從memory cell輸出取決於這一道門。

forget gate:中文是遺忘門,每一時刻memory cell裡的值都會經歷乙個是否被遺忘的過程,就是由該門控制的,如果打卡,那麼將會把memory cell裡的值清除,也就是遺忘掉。

按照上圖的順序,資訊在傳遞的順序,是這樣的:

先經過輸入門,看是否有資訊輸入,再判斷遺忘門是否選擇遺忘memory cell裡的資訊,最後再經過輸出門,判斷是否將這一時刻的資訊進行輸出。

對於lstm我們著重討論其中乙個時間點的內部結構

其中的再來看 zi ,input gate的縮寫i,所以也就是輸入門的門控裝置, zi 同樣也是通過該時刻的輸入 xt 和上一時刻隱藏狀態,也就是上一時刻存下來的資訊 向量拼接,在與權重引數向量 wi 點積(注意每個門的權重向量都不一樣,這裡的下標i代表input的意思,也就是輸入門)。得到的值經過啟用函式sigmoid的最終會得到乙個0-1之間的乙個數值,用來作為輸入門的控制訊號,另外兩個門控裝置都是這個原理。

深度學習 迴圈神經網路(RNN)

迴圈神經網路 rnn 目錄 情感分類 正面,負面 前向傳播和反向傳播 1 前向傳播 2 反向傳播 gru lstm 一 gru gated recurrent unit 二 lstm long short term memory 零基礎入門深度學習 6 長短時記憶網路 lstm word2vec數學...

深度學習與神經網路(八) 迴圈神經網路RNN

首先看乙個簡單案例,在某寶的好評 差評檢測中,系統要能夠分析使用者的評價是好評還是差評,那怎樣處理這樣的評價資料呢,例如有一條評價 i hate this boring movie 機器怎樣解決這樣的問題呢 首先我們在之前的時間序列表示中已經知道了怎樣對乙個單詞進行表示。如果使用glove的話,整句...

RNN迴圈神經網路

評測乙個句子出現的可能性 文字自動生成 rnn迴圈處理相同的任務,就是 句子接下來的單詞是什麼。rnn迴圈記錄前面所有文字的資訊 也叫做記憶 作為 當前詞的乙個輸入 1.語言模型和文字生成 語言模型中,輸入是經過編碼的詞向量序列,輸出是一系列 的詞 2.機器翻譯 機器翻譯必須等待所有輸入結束後才能輸...