一步一步動畫圖解LSTM和GRU,沒有數學,包你看的明白

2019-07-22     AI公園
作者:Michael Nguyen編譯:ronghuaiyang

導讀

昨天的文章中提到了Michael的這篇文章,今天就來看看,做序列信號的處理,離不開LSTM和GRU,很多人會覺得這兩個東西很複雜,特別是LSTM,裡面一堆的門,看看就頭暈。不過,其實只要幫你梳理一下,理解起來還是很清楚的,其實就是一個信息流動的過程,這次帶給大家的分享更是通過動圖的方式,讓大家一次看個明白。

大家好,歡迎來到長短期記憶(LSTM)和門控循環單元(GRU)的圖解指南。我是Michael,我是AI語音助手空間的機器學習工程師。

在這篇文章中,我們將從LSTM和GRU背後的直覺開始。然後,我將解釋LSTM和GRU的內部機制。如果你想了解這兩個網絡背後發生了什麼,那麼這篇文章就是為你準備的。

本來這裡有個視頻的,不過油管上不了,給個地址給大家,大家各自想辦法吧:https://youtu.be/8HyCNIVRbSU。

問題,短期記憶

循環神經網絡受短期記憶的影響,如果序列足夠長,他們就很難將信息從早期的時間步傳遞到後期的時間步。因此,如果你想處理一段文字來做預測,RNN可能從一開始就遺漏了重要的信息。

在反向傳播過程中,循環神經網絡存在梯度消失問題。梯度是用來更新神經網絡權重的值。消失梯度問題是指,當梯度隨著時間的推移而縮小時。如果梯度值變得非常小,那它對學習就沒有太大的幫助了。

Gradient Update Rule

所以在循環神經網絡中,獲得小梯度的層停止了學習。這些通常是較早的層。因此,由於這些層無法學習,RNN可能會忘記在較長的序列中之前看到的內容,從而產生短期記憶。

解決方案就是LSTMs 和GRUs

LSTMs 和 GRUs 可以用來解決短期記憶的問題。它們有一種叫做「門」的內部機制,可以調節信息的流動。

這些門可以知道序列中哪些數據是重要的,是保留還是丟棄。通過這樣做,它可以將相關信息沿著長鏈傳遞下去,從而做出預測。幾乎所有的業界領先的循環神經網絡都是通過這兩種方式實現的。LSTM和GRU可以用於語音識別、語音合成和文本生成。你甚至可以用它們為視頻生成標題。

好了,在這篇文章的最後,你應該對LSTM和GRU擅長處理長序列的原因有了一個紮實的理解。現在,我將用直觀的解釋和說明來解決這個問題,並儘可能避免使用數學。

直覺

讓我們從一個思想實驗開始。假設你正在查看網上的評論,決定是否是否要買麥片,你會先看一下評論,看看別人認為它是好的還是壞的。

當你閱讀評論時,你的大腦潛意識裡只記住重要的關鍵詞。你學會了「amzing」和「perfectly balanced breakfast」這樣的詞,你不太喜歡像「this」、「give」、「all」、「should」這樣的詞。如果第二天朋友問你評論說了什麼,你可能不會逐字記住,你可能記得要點,比如「will definitely be buying again」。如果你和我差不多的話,其他的詞就會從記憶中消失。

這就是LSTM或GRU的本質。它可以學會只保留相關信息進行預測,而忘記無關的數據。在這種情況下,你記住的單詞使你判斷它是好的。

複習一下循環神經網絡

為了理解LSTM或GRU是如何做到這一點的,讓我們複習一下循環神經網絡。RNN是這樣工作的:將第一個單詞轉換成機器可讀的向量,然後RNN逐個處理向量序列。

Processing sequence one by one

在處理過程中,它將前一個隱藏狀態傳遞給序列的下一個步驟,隱藏狀態充當神經網絡存儲器。它保存網絡以前看到的數據的信息。

Passing hidden state to next time step

我們看下RNN的一個cell,看看如何來計算隱藏狀態。首先,將輸入和之前的隱藏狀態組合成一個向量。這個向量和當前輸入和以前輸入的信息有關。該向量經過tanh激活,輸出是新的隱藏狀態,即網絡的記憶。

RNN Cell

Tanh激活

tanh激活函數用於調節流經網絡的值,tanh函數壓縮後值在-1和1之間。

Tanh squishes values to be between -1 and 1

當向量流經神經網絡時,由於各種數學運算,它會進行許多轉換。假設一個值連續的乘以3,你可以看到一些值是如何爆炸並變成天文數字的,從而導致其他值看起來就微不足道了。

vector transformations without tanh

tanh函數確保值在-1和1之間,從而調節神經網絡的輸出。你可以看到在從前面來的值是如何通過tanh函數,將值保持在tanh函數允許的邊界範圍內的。

vector transformations with tanh

這就是RNN,它內部的操作很少,但是在適當的環境下(比如短序列)可以很好地工作。RNN使用的計算資源比它的進化變種LSTM和GRU少得多。

LSTM

LSTM具有類似於循環神經網絡的控制流。它在向前傳播時處理傳遞信息的數據。不同之處在於LSTM cell內的操作。

LSTM Cell and It’s Operations

這些操作允許LSTM保存或忘記信息,現在看這些運算可能會有點難,所以我們會一步一步地過一遍。

核心概念

LSTM的核心概念是cell狀態,還有各種各樣的門。cell狀態充當傳輸高速公路,沿著序列鏈傳輸相關信息。你可以把它看作網絡的「存儲器」。理論上,cell狀態可以在整個序列處理過程中攜帶相關信息。因此,即使是早期時間步驟的信息也可以傳遞到後期時間步驟,從而減少短期記憶的影響。當cell狀態運行時,信息通過門被添加到cell狀態或從cell狀態中刪除。這些門是不同的神經網絡,決定哪些信息是允許的cell狀態。這些門可以在訓練中學習哪些信息是相關的從而進行保持或忘記。

Sigmoid

門中包含sigmoid激活函數。sigmoid激活函數和tanh激活函數很類似,只是它壓縮之後不是-1和1之間的值,而是0和1之間的值。這有助於更新或忘記數據,因為任何被乘以0的數字都是0,從而導致值消失或「被遺忘」。任何數乘以1都是相同的值,所以這個值保持不變。「網絡可以知道哪些數據重不重要,因此可以忘記或保留那些數據。」

Sigmoid squishes values to be between 0 and 1

我們再更深入地研究一下這些門在做什麼,我們有三個不同的門來調節LSTM cell中的信息流,遺忘門,輸入門,和輸出門。

遺忘門

這個門決定了哪些信息應該丟棄或保留。來自以前隱藏狀態的信息和來自當前輸入的信息通過sigmoid函數進行傳遞。結果在0到1之間。越接近0表示忘記,越接近1表示保留。

Forget gate operations

輸入門

我們使用輸入門來更新cell狀態。首先,我們將之前的隱藏狀態和當前輸入傳遞給一個sigmoid函數。它將值轉換為0到1之間來決定更新哪些值。0表示不重要,1表示重要。你還需要將隱藏狀態和當前的輸入送到tanh函數中,以得到-1到1之間的值,幫助調節網絡。然後將tanh輸出與sigmoid輸出相乘。sigmoid輸出將決定從tanh的輸出中保留哪些重要信息。

Input gate operations

Cell狀態

現在我們有了足夠的信息來計算cell的狀態。首先,cell狀態逐點乘以遺忘向量。如果將其乘以接近0的值,則有可能降低cell狀態下的值。然後我們從輸入門獲取輸出,並進行逐點加法,將cell狀態更新為神經網絡認為相關的新值。這就得到了新的cell狀態。

Calculating cell state

輸出門

最後是輸出門。輸出門決定下一個隱藏狀態應該是什麼。請記住,隱藏狀態中包含之前輸入的信息,隱藏狀態也用於預測。首先,我們將之前的隱藏狀態和當前輸入傳遞給一個sigmoid函數。然後我們將新修改的cell狀態傳遞給tanh函數。我們將tanh輸出與sigmoid輸出相乘,以決定隱藏狀態應該包含哪些信息,輸出是隱藏狀態。新的cell狀態和新的隱藏狀態然後被轉移到下一個時間步驟。

output gate operations

回顧一下,遺忘門決定了前面的步驟什麼是相關的需要保留的。輸入門決定從當前步驟中添加哪些相關信息。輸出門決定下一個隱藏狀態應該是什麼。

編程Demo

這裡有一個使用python偽代碼的示例。

  1. 首先,將以前的隱藏狀態和當前輸入連接起來。我們叫它組合向量。
  2. 把組合向量送到遺忘層,該層去掉了不相關的信息。
  3. 使用組合向量創建候選層,候選向量中包含了可能會添加到cell狀態中的值。
  4. 組合向量也被輸入到輸入層,該層決定應該將來自候選向量的哪些數據添加到新cell狀態。
  5. 在計算遺忘層、候選層和輸入層之後,使用這些向量和之前的cell狀態計算新的cell狀態。
  6. 然後計算輸出。
  7. 將輸出與新的cell狀態逐點相乘會得到新的隱藏狀態。

就是這樣!LSTM網絡的控制流程是幾個張量操作和一個for循環,你可以使用隱藏狀態進行預測。結合所有這些機制,LSTM可以選擇在序列處理過程中哪些信息是需要記住的,哪些信息是需要忘記的。

GRU

現在我們知道了LSTM是如何工作的,讓我們簡單地看一下GRU。GRU是新一代的遞歸神經網絡,與LSTM非常相似。GRU擺脫了cell狀態,並使用隱藏狀態來傳輸信息。它也只有兩個門,一個復位門和一個更新門

GRU cell and it’s gates

更新門

更新門的作用類似於LSTM的遺忘門和輸入門,它決定丟棄什麼信息和添加什麼新信息。

復位門

復位門用來決定有多少過去的信息要忘記。

這就是GRU,GRU的張量運算更少,因此,比LSTM的訓練要快一些。目前還沒有一個明確的優勝者。研究人員和工程師通常同時嘗試以確定哪種方法更適合他們的場景。

就是這麼多

綜上所述,RNN具有較好的序列數據處理能力和預測能力,但存在短時記憶問題。LSTM和GRU使用稱為門的機制來緩解短期記憶問題。門就是控制信息在序列鏈中流動的神經網絡。LSTM和GRU可以應用於語音識別、語音合成、自然語言理解等領域。

原文連結:

https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

更多文章,請關注微信公眾號:AI公園

文章來源: https://twgreatdaily.com/zh-sg/4NFfMGwB8g2yegNDRvuz.html