機器學習Basics-第十二期-循環神經網絡LSTM

人工智能 機器學習 設計 法國 語音識別技術 文章 繁林林與機器學習 2019-04-20

背景

上一期提到了最基礎的RNN循環神經網絡框架,RNN神經網絡框架一般應用於“Sequential 順序”信息場景。但是由於Vanishing Gradient的問題,導致基礎RNN神經網絡無法處理較長。這也是一個比較致命的問題,畢竟當Google機器翻譯時,並不會限制一句話的長度。

所以,基於上述問題,一些優化版本的神經網絡被提出來。 其中一個比較普遍的是LSTM(Long Short Term Memory),這也是本期的主題。本期旨在回答一個關鍵的問題,為什麼LSTM能夠處理遠距離的信息呢?它與普通RNN有何不同。

另外,需要特別申明的是 本文章的圖片和LSTM神經元公式翻譯於colah's blog

RNN循環神經網絡

當你在看本文章時,你是在瞭解前面單詞的基礎上 瞭解後面的單詞。你並不是獨立理解每個單詞的。順序對於理解一個句子來說尤為重要。

傳統神經網絡無法勝任處理“Sequential信息”。而RNN專為處理這種信息而存在。RNN是一個循環的神經網絡,這使得順序信息可以儲存。

機器學習Basics-第十二期-循環神經網絡LSTM

上面的圖,是一組神經網絡A,輸入一組輸入值 Xt 然後輸出一組 輸出值Ht。A循環神經網絡的循環結構能夠是的信息能夠在內部按照“sequential”傳遞。

這些循環使得RNN看起來有些複雜及神祕。但是如果你再仔細想象,它與普通神經網絡的差距並沒有那麼大。一個循環神經網絡可以被看作是一組相同的神經網絡,它們依次鏈接在一起。如果把它們展開,就如同下圖一樣。

機器學習Basics-第十二期-循環神經網絡LSTM

上圖中的鏈狀結果 限時了 循環神經網絡與Sequence 順序信息是相關聯的。RNN就是處理Sequential 數據的最自然的網絡結構。

在過去幾年,RNN在語音識別、語言建模、翻譯、圖片抓取等方面得到了應用。這些成功的一個必要條件是 LSTM。一個非常特別的循環神經網絡結構,其在很多場景下比基礎RNN效果好太多。本篇的主題也就是LSTM。

The Problem of Long-Term Dependencies

抱歉,這個標題實在不知道怎麼翻譯合適,其大致的意思是在較長序列的場景下,普通RNN會由於Vanishing Gradient問題導致無法有效處理信息。

循環神經網絡一個非常吸引人的地方是將前面的信息與目前處理的任務 聯繫起來。例如,當我們需要理解一段視頻時,我們可以借用前期的視頻作為基礎。如果RNN真的能夠做到,它們就是非常有用的。 但是實際情況是,It Depends 得看情況

有些時候,我們只需要看非常近的信息 來 處理現在的任務。例如,我們建立一個語言模型來 基於前幾個單詞 來預測下一個單詞。例如,我們要預測“the clouds are in the sky”的最後一個單詞。我們並不需要更多的更早的句子信息。在這種場景下,我們所需要的信息, 與 我們需要預測(“Sky”)的位子 的距離並不長。在此場景下,RNN能夠使用過去的信息。

機器學習Basics-第十二期-循環神經網絡LSTM

但是也有很多場景,我們需要更多的信息。假設我們在預測“I grew up in France… I speak fluent French.” 的最後一個單詞。最近的單詞顯示下一個單詞可能是 一種語言的名稱。但是如果我們要將範圍縮小到具體哪種語言時,我們就需要很早出現的那句“I grew up in France”。相關信息 和 我們需要預測的位子隔得很遠,是非常有可能的。

但是,隨著距離增加,RNN就無法有效得處理這些信息。

機器學習Basics-第十二期-循環神經網絡LSTM

由於Vanishing Gradient問題導致基礎RNN無法處理較長距離的信息。不過,幸運的是LSTM能夠處理這些信息。

LSTM

LSTM 是一種特殊的循環神經網絡結構,其能夠處理較長距離的Sequential 信息。LSTM是由Hochreiter & Schmidhuber (1997)提出。LSTM在sequential在得到廣泛的應用。

LSTMs被特地設計出來避免long-term dependency problem的。記憶較長距離的信息是LSTMs的本能動作。

所有的循環神經網絡都有 鏈狀的神經網絡相連接的結構(如下圖)。

機器學習Basics-第十二期-循環神經網絡LSTM


LSTMs也有類似的鏈狀結構,但是重複的模塊中的結構並不一樣。與基礎RNN只有一個tanh層,LSTMs有四層,並且以一個複雜的結構組合起來。

機器學習Basics-第十二期-循環神經網絡LSTM

就上圖LSTMs的結構相當複雜,先別擔心裡面的細節。先看下圖片中的符號,分別是 神經網絡層、矩陣元素點運算、向量流動、向量合併、向量複製。

機器學習Basics-第十二期-循環神經網絡LSTM

LSTMs 背後的核心理念

從下圖可以看出,基礎RNN是正向傳遞信息,並且經過每個神經網絡的計算。 那麼Xt-1傳到Xt+1之後因為Vanishing Gradient原因,導致信息逐漸“衰減”。

所以從這裡大家能夠看出,如果只是“單線”傳播,那麼必然會經歷每個單獨神經網絡“加工”,從而無法在長距離傳遞。

機器學習Basics-第十二期-循環神經網絡LSTM

而LSTMs最關鍵的部分是下圖中的“這條黑線”。首先這條“黑線”接受的是上一個神經網絡的Hidden State,然後經歷兩個參數、再加上本神經元的Hidden State,最後再傳遞到下一個神經元。

機器學習Basics-第十二期-循環神經網絡LSTM


那麼最關鍵的問題來了, 為什麼LSTM能夠處理遠距離的信息?

首先,一句話回顧下,普通RNN無法處理遠距離信息的原因,是因為其只有一條鏈路,導致會使得遠距離的信息逐漸“衰減”。而其衰減的原因在於第一個輸入值,在後面每經歷一個神經網絡,需要與當時的輸入值一起經歷tanh計算。如果最後參數是小於1,那麼存在vanishing gradient,如果參數大於1,那麼存在exploding gradient;


問題又來了,如果大家仔細看下圖會發現,該模塊接收到上一個模塊的Hidden State也需要經歷 “X”和“+”符號處理。那麼這樣不是也會同樣產生vanishing gradient的問題嗎?這也是我看到這個結構想到的第一個問題。

不過答案其實很簡單,但是有點難用文字解釋。 要回答上面這個問題的關鍵在於瞭解 “X” 和“+” 計算背後的參數是怎麼來的。 簡單來說,神經網絡的參數是通過差錯的反向傳遞訓練得來的。再簡單一點就是,通過訓練參數不斷變化,最終達到神經網絡計算的結果和實際結果差錯最小。 如果大家想了解更多細節可以參見本系列第八期。簡單來說就是參數是根據訓練結果調整出來的。

需要總結下“這條黑線”的參數是根據訓練得來的。假設,最終的神經網絡預測值與實際值 需要用到 距離很遠之前Xt-100的信息,那麼神經網絡會自動將Xt-100對應的參數調整到一個接近於1或者其他合理的數字。


我們知道了神經網絡所有參數變化的原因。 再回到那個問題,LSTM 的“黑線”和基礎RNN都經歷了幾個參數,為什麼LSTM能夠處理距離較長的信息呢?

其實很簡單,就是給了每個模塊Hidden State 獨立的一個通道。而通道的參數是取決於最終的預測結果,而不受距離影響。

再通俗點解釋,我們以“信息通道”來類比:以前的基礎RNN是將每個模塊的hidden state都往後傳遞了,但是其傳遞要受到後一個模塊其本身的參數影響。而當距離較長時,效果自然就不會理想。 而LSTM 給每個模塊的hidden state單獨開了一個“信道”,而其參數是取決於最終差錯值。

再換一個解釋就是,假設以前的RNN需要使用Xt-100來預測 下一個值,那麼其需要在Xt-1的hidden state 中取趙Xt-100的hidden state。 而現在LSTMs 需要使用Xt-100的hidden state,它僅僅需要改變“黑線”上的參數就足夠了。


機器學習Basics-第十二期-循環神經網絡LSTM


總結

為了應對基礎RNN的vanishing gradient的問題,LSTM的結構有些複雜。而其最大的特點在於給每個模塊的hidden state開具了一條單獨的“信道”。其不會受到本模塊和後續模塊輸入值的影響。 這也是是的LSTM能夠處理長距離信息的核心原因。


相關推薦

推薦中...