1. 程式人生 > >RNN與LSTM之間的介紹和公式梳理

RNN與LSTM之間的介紹和公式梳理

最近在整理tensorflow,經常用到RNN與lSTM,故整理如下:
-RNN:迴圈神經網路(Recurrent Neural Networks)
-LSTM:長短時記憶網路(Long Short-Term Memory)

在看這篇文章之前,如果之前沒有接觸過-神經網路,請先閱讀-神經網路調優
RNNs的目的使用來處理序列資料。其在自然語言中貢獻巨大,中文分詞、詞性標註、命名實體識別、機器翻譯、語音識別都屬於序列挖掘的範疇。序列挖掘的特點就是某一步的輸出不僅依賴於這一步的輸入,還依賴於其他步的輸入或輸出。在序列挖掘領域傳統的機器學習方法有HMM(Hidden Markov Model,隱馬爾可夫模型)和CRF(Conditional Random Field,條件隨機場),近年來又開始流行深度學習演算法RNN(Recurrent Neural Networks,迴圈神經網路)。
這裡寫圖片描述


你可以這樣理解:
LSTM有多種變換形式,但我們只講解一個簡單的。一個Cell由三個Gate(input、forget、output)和一個cell單元組成。Gate使用一個sigmoid啟用函式,而input和cell state通常會使用tanh來轉換。
這裡寫圖片描述
其中S(t+1) = tanh( U*X(t+1) + W*S(t)),[tanh啟用函式]

RNN的變體

1.雙向RNN

這裡寫圖片描述
雙向RNN認為otot不僅依賴於序列之前的元素,也跟tt之後的元素有關,這在序列挖掘中也是很常見的事實。

2.深層雙向RNN

這裡寫圖片描述
在雙向RNN的基礎上,每一步由原來的一個隱藏層變成了多個隱藏層。

RNN的問題所在

這裡寫圖片描述
這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述
這裡寫圖片描述

LSTM

由於梯度消失/梯度爆炸的問題傳統RNN在實際中很難處理長期依賴,而LSTM(Long Short Term Memory)則繞開了這些問題依然可以從語料中學習到長期依賴關係。比如“I grew up in France… I speak fluent (French)”要預測()中應該填哪個詞時,跟很久之前的”France”有密切關係。

傳統RNN每一步的隱藏單元只是執行一個簡單的tanh或ReLU操作。
這裡寫圖片描述
LSTM每個迴圈的模組內又有4層結構:3個sigmoid層,1個tanh層
這裡寫圖片描述
LSTM每個模組的4層結構後文會詳細說明,先來解釋一下基本的圖示。這裡寫圖片描述


粉色的圓圈表示一個二目運算。兩個箭頭匯合成一個箭頭表示2個向量首尾相連拼接在一起。一個箭頭分叉成2個箭頭表示一個數據被複製成2份,分發到不同的地方去。

LSTM內部結構詳解

LSTM的關鍵是細胞狀態C,一條水平線貫穿於圖形的上方,這條線上只有些少量的線性操作,資訊在上面流傳很容易保持。這裡寫圖片描述
圖 細胞狀態的傳送帶
第一層是個忘記層,決定細胞狀態中丟棄什麼資訊。把ht1xt拼接起來,傳給一個sigmoid函式,該函式輸出0到1之間的值,這個值乘到細胞狀態Ct1上去。sigmoid函式的輸出值直接決定了狀態資訊保留多少。比如當我們要預測下一個詞是什麼時,細胞狀態可能包含當前主語的性別,因此正確的代詞可以被選擇出來。當我們看到新的主語,我們希望忘記舊的主語。
這裡寫圖片描述
圖 更新細胞狀態
一步的細胞狀態Ct1已經被忘記了一部分,接下來本步應該把哪些資訊新加到細胞狀態中呢?這裡又包含2層:一個tanh層用來產生更新值的候選項C~t,tanh的輸出在[-1,1]上,說明細胞狀態在某些維度上需要加強,在某些維度上需要減弱;還有一個sigmoid層(輸入門層),它的輸出值要乘到tanh層的輸出上,起到一個縮放的作用,極端情況下sigmoid輸出0說明相應維度上的細胞狀態不需要更新。在那個預測下一個詞的例子中,我們希望增加新的主語的性別到細胞狀態中,來替代舊的需要忘記的主語。
這裡寫圖片描述
圖 生成新的細胞狀態
現在可以讓舊的細胞狀態Ct1ft(f是forget忘記門的意思)相乘來丟棄一部分資訊,然後再加個需要更新的部分itC~t(i是input輸入門的意思),這就生成了新的細胞狀態Ct
這裡寫圖片描述
圖 迴圈模組的輸出
最後該決定輸出什麼了。輸出值跟細胞狀態有關,把Ct輸給一個tanh函式得到輸出值的候選項。候選項中的哪些部分最終會被輸出由一個sigmoid層來決定。在那個預測下一個詞的例子中,如果細胞狀態告訴我們當前代詞是第三人稱,那我們就可以預測下一詞可能是一個第三人稱的動詞。

LSTM實現
原理推到 引數更新方法 。核心是實現了dL(t)dh(t)dL(t+1)ds(t)反向遞迴計算。

GRU

GRU(Gated Recurrent Unit)是LSTM最流行的一個變體,比LSTM模型要簡單。
這裡寫圖片描述

RNN與LSTM之間的聯絡
這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述

探討與思考

這裡寫圖片描述
這裡寫圖片描述

應用

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

如有整理錯誤,歡迎批評指正!