1. 程式人生 > >深度學習基礎:RNN與LSTM

深度學習基礎:RNN與LSTM

    這一篇主要是想根據Google的Colah的文章《Understanding LSTM Networks》闡述一下什麼是LSTM(Long Short Time Memory)網路。

RNN:Recurrent  or Recursive

    RNN可以指代兩種神經網路,Recursive Neural Network 以及Recurrent Neural Network,從英語的字面意思來說,前一種應該被稱作遞迴神經網路,但是現在論文中提到的遞迴神經網路主要都指的是Recurrent Neural Network。     Recursive Neural Network是為了解決日常現象中一些遞迴結構的存在而特別設計的網路,比如在影象處理中一個表示車的圖片中可以分為若干塊小的零件圖片,如窗戶,輪子,但是這些代表窗戶的圖片也可能是飛機甚至是房子的一部分;比如在自然語言處理中出現的名詞帶的從句中又出現名詞的情況。因此,Recursive Neural Network是一種對網路結構的重複,重複的網路權值構成一個樹狀結構,主要應用是圖片分割與註釋,在自然語言處理中也有應用。
Recursive Neual Network[1] 而Recurrent Neural Network則更偏重於時序上的處理,因此是一個鏈式的連線。 Recurrent Neural Network[2] 下面的RNN主要是指Recurrent Neural Network。

RNN的缺陷和LSTM的應用

     如果把RNN展開,可以看到RNN的結構和普通的網路相似,可以將其看作是若干個相同的網路相連,並將資訊在網路中進行傳遞。由於這種資訊傳遞的存在,RNN的就可以根據之前出現的資訊對當前的資訊進行推斷,特別是在語言處理中,RNN就可以用於根據上文預測下一個將要出現的詞。但是RNN只能處理一定間隔的資訊,如果上文間隔過遠,就有可能出現難以聯想的情況。比如: I grew up in France...此處省略100個字....I speak fluent French
.     這種提示資訊France距離French就間隔過遠,RNN處理起來就比較吃力了。理論上RNN是能夠通過一些人為的引數設定來實現這種大間隔的處理的,但是RNN似乎不能夠去通過學習實現。《Understanding LSTM Networks》還列舉了兩篇論文來證明這一點。      因此,1997年有人就提出了LSTM(Long Short Term Memory Network),這是一種特殊的RNN,按照文章的說法,LSTM生來就是能夠長時間記憶的網路,不需要刻意學習。 RNN的展開結構 LSTM的展開結構     LSTM的展開結構中與RNN的不同主要是存在控制儲存狀態的結構,其結構構成與作用如下所示。我們先將這個重複結構叫做一個單元,把該單元的一次計算作為一拍,那麼這個單元存在三組重要的變數:單元輸入、單元輸出以及單元狀態(Cell State),從直觀來說,LSTM的作用是: 1. 根據上一拍單元的輸出ht-1以及本拍的輸入xt,計算出需要單元狀態中需要遺忘的元素,這種控制是通過門(Gate,
)實現的; 2. 根據上一拍輸出ht-1與本拍輸入xt選擇需要在單元狀態中新記憶的狀態; 3. 根據單元狀態和本拍輸入輸出ht。     通過這樣的操作,該單元就將需要記憶的資訊通過單元狀態的形式記錄下來並且在神經元中進行傳遞,而每一次計算,神經元都可以根據當前的輸入對單元狀態進行修改。 RNN單元結構      實際上LSTM有很多的變種。 1. Peephole connections - 中文直譯:窺視連線     原始的RNN的控制門(Gate, )只輸入上一拍神經元輸出和本拍輸入,Peephole connections則將單元狀態引入到輸入中。 2. Coupled forget and input gates - 中文直譯:耦合遺忘和輸入單元      原始的RNN的遺忘和新記憶的過程是分開的,Coupled forget and input gates則將兩個過程進行耦合,即只遺忘那些有新元素來填充的元素。
3. GRU - Gated Recurrent Unit - 中文直譯:門控迴圈單元     還有一種RNN變種乾脆將單元狀態去除,直接通過輸出儲存資訊,由於這種結構比LSTM更加簡單,因此逐漸變得流行起來。      《Understanding LSTM Networks》這篇文章還提到,雖然基本每個新的論文都提出不同的LSTM結構,但實際上,這些結構的效果都差不多。一篇論文還測試了10000種RNN不同架構的效果,結果發現對於一些特定任務,有些RNN的效果比LSTM的效果更好。 [1] Socher, Richard; Lin, Cliff; Ng, Andrew Y.; Manning, Christopher D. "Parsing Natural Scenes and Natural Language with Recursive Neural Networks" . The 28th International Conference on Machine Learning (ICML 2011). [2] Understanding LSTM Networks:http://colah.github.io/posts/2015-08-Understanding-LSTMs/