一步一步,看圖理解長短期記憶網路與門控迴圈網路

机器之心發表於2018-10-13

大家好,歡迎來到 LSTM 和 GRU 的圖解指南。在本文中,Michael 將從 LSTM 和 GRU 的背後的原理開始,然後解釋令 LSTM 和 GRU 具有優秀效能的內部機制。如果你想了解這兩個網路背後發生了什麼,這篇文章就是為你準備的。

問題重點——短期記憶

迴圈神經網路(RNN)很大程度上會受到短期記憶的影響,如果序列足夠長,它們將很難將資訊從早期時間步傳遞到靠後的時間步。因此,如果你試圖處理一段文字來做預測,RNN 可能從一開始就遺漏掉重要的資訊。

在反向傳播過程中,迴圈神經網路也存在梯度消失等問題。一般而言,梯度是用來更新神經網路權值的,梯度消失問題是梯度會隨著時間的推移逐漸縮小接近零。如果梯度值變得非常小,它就不能為學習提供足夠的資訊。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

梯度更新規則

所以在 RNN 中,通常是前期的層會因為梯度消失和停止學習。因此,RNN 會忘記它在更長的序列中看到的東西,從而只擁有短期記憶。

解決方案——LSTM 和 GRU

建立 LSTM 和 GRU 可以作為短期記憶的解決方案,它們有一種稱為「門」的內部機制,可以調節資訊流。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

這些門可以判斷資料在一個序列中該保留或棄用,因此它可以將相關資訊傳遞到較長序列鏈中進行預測。幾乎所有基於迴圈神經網路的最新成果都是透過這兩個網路實現的。LSTM 和 GRU 可以應用在語音識別語音合成和文字生成中。你甚至可以用它們來生成影片的字幕。

現在你應該理解 LSTM 和 GRU 擅長處理長序列的原因了。我將用直觀的解釋和插圖來解答這個問題,我儘量避免使用數學。

直觀解釋

好,讓我們從一個思維實驗開始。假設你透過在網上看評論來決定是否買 Life 牌麥片。因為我們先看評論,然後判斷其他人認為它是好還是壞。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

當你閱讀評論時,你的大腦潛意識裡只會記住重要的關鍵詞。你會側重一些諸如「驚人的」和「完美均衡早餐」之類的詞。你不會在意「這個」、「給予」、「所有」、「應該」等等。如果朋友第二天問你評論說了什麼,你可能不會逐字逐句地記住。但你可能還記得一些重點,比如「肯定會再買」,其他的詞會從記憶中消失。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

這就是 LSTM 或 GRU 的作用,它可以學會只保留相關的資訊以進行預測。在這種情況下,你記得的評論會讓你做出好的判斷。

回顧迴圈神經網路

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

一步一步,看圖理解長短期記憶網路與門控迴圈網路

逐個處理序列

在處理過程中,它將之前的隱狀態傳遞給序列的下一個步驟。隱狀態作為神經網路的記憶,儲存著網路先前觀察到的資料資訊。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

傳遞隱藏狀態到下一時間步

觀察 RNN 的一個單元格,看看如何計算隱狀態。首先,輸入和之前的藏狀態組合成一個向量。這個向量現在有當前輸入和先前輸入的資訊。向量透過 tanh 啟用,輸出是新的隱狀態,或神經網路的記憶。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

RNN 單元

雙曲正切(tanh)啟用函式

tanh 啟用函式用於調節在神經網路中傳遞的值,它會將輸入值壓縮到 -1 到 1 之間。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

Tanh 將輸入壓縮到介於-1 到 1 之間

當向量透過神經網路時,由於各種數學運算,它會經歷許多變換。假設一個值連續乘以 3,結果會爆炸增長成天文數字,從而導致其他值的變化變得微不足道。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

缺少 tanh 的向量變換

tanh 函式確保值保持在-1 到 1 之間,從而控制神經網路的輸出。下圖可以看到數值是如何藉助 tanh 函式在不同的時間步之中保持穩定。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

tanh 函式下的向量變化

這就是 RNN。它的內部操作很少,但在適當的環境下(比如短序列)會有很好的效能。RNN 使用的計算資源比它的改進版 LSTM 和 GRU 要少得多。

LSTM

LSTM 具有與迴圈神經網路相似的控制流,它在前向傳播時處理傳遞資訊的資料,兩者區別在於單元內的處理過程不同。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

LSTM 單元及內部運算

這些內部操作用於允許 LSTM 儲存或丟棄資訊,現在看這些操作可能會有點難,所以我們一步步來看。

核心概念

LSTM 的核心概念是單元狀態,及單元中各種各樣的門。單元狀態好比傳輸的高速公路,在序列鏈中傳遞相關資訊。你可以把它看作是網路的「記憶」。從理論上講,單元狀態可以在整個序列處理過程中攜帶相關資訊。因此,即使是前期時間步的資訊也可以幫助後續時間步的處理,因此單元狀態有效減少了短期記憶的影響。隨著單元狀態在不同時間步的傳遞,我們可以透過門控機制新增或刪除單元狀態中的資訊。這些門是不同的神經網路,用來決定能夠進入單元狀態的資訊。在訓練過程中,門可以學習到哪些資訊是需要儲存或遺忘的。

sigmoid 函式

門控機制主要由 sigmoid 啟用函式構成,sigmoid 啟用函式類似於 tanh 啟用函式,它會將數值控制在 0 到 1 之間,而不是 -1 到 1。這有助於更新或丟棄資料,因為任何數乘以 0 都是 0,這將導致數值消失或被「遺忘」。任何數字乘以 1 都是其本身,因此這個值不變或者「儲存」。網路可以知道哪些資料不重要,可以被遺忘,或者哪些資料需要儲存。


一步一步,看圖理解長短期記憶網路與門控迴圈網路

Sigmoid 會將數值控制在 0 到 1 之間

讓我們再深入探討一下各種門的作用,我們有三個不同的門來調節 LSTM 單元中的資訊流,即遺忘門、輸入門和輸出門。

遺忘門

首先是遺忘門(forget gate),這個門決定了哪些資訊應該被丟棄或儲存。在遺忘門中,來自先前隱狀態的資訊和來自當前輸入的資訊傳遞到 sigmoid 函式,並將值壓縮到 0 和 1 之間。越接近 0 意味著丟棄,越接近 1 意味著保留。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

遺忘門操作

輸入門

為了更新單元狀態,LSTM 需要輸入門(input gate)。首先,我們將前面的隱狀態和當前輸入傳遞給一個 sigmoid 函式,它透過將值轉換為 0 到 1 來決定將更新哪些值。0 表示不重要,1 表示重要。還可以將隱狀態和當前輸入傳遞給 tanh 函式,使值變為-1 到 1 之間的值,以幫助調節神經網路。然後將 tanh 輸出與 sigmoid 輸出相乘,sigmoid 輸出將決定保留 tanh 輸出的重要資訊。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

輸入門操作

單元狀態

現在應該有足夠的資訊來計算單元狀態。首先,單元狀態逐點乘以遺忘向量,如果它與接近 0 的值相乘,就有可能在單元狀態中得到低值。然後,從輸入門讀取上一步輸出,並逐點相加,將單元狀態更新為神經網路認為相關的新值,這就得到了新的單元狀態。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

計算單元狀態

輸出門

最後是輸出門(output gate),輸出門決定下一個隱藏狀態。記住,隱藏狀態包含先前輸入的資訊。隱藏狀態也用於預測。首先,我們將前面的隱狀態和當前輸入傳遞給一個 sigmoid 函式。然後我們將新修改的單元狀態傳遞給 tanh 函式。我們將 tanh 輸出與 sigmoid 輸出相乘,以確定隱狀態應該包含的資訊。新的單元狀態和新的隱藏狀態隨後被轉移到下一步中。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

輸出門操作

需要了解的是,遺忘門決定了哪些內容與前面的步驟相關。輸入門決定從當前步驟中新增哪些相關資訊。輸出門決定下一個隱狀態應該是什麼。

程式碼演示

對於那些需要透過程式碼更好地理解模型的人來說,這裡有一個 Python 虛擬碼示例:

一步一步,看圖理解長短期記憶網路與門控迴圈網路

Python 虛擬碼
  1. 首先,將前面的隱狀態和當前輸入拼接起來,即為 combine。

  2. 將 combine 的值送至遺忘層,並刪除不相關的資料。

  3. 使用 combine 建立候選層,候選項儲存要新增到單元狀態的可能值。

  4. 將 combine 的值送至輸入層,這一層決定應該新增到新的單元狀態的候選資料。

  5. 在計算遺忘層、候選層和輸入層後,利用這些向量和前面的單元格狀態計算新單元格狀態。

  6. 然後計算輸出。

  7. 輸出和新單元狀態之間的對應元素乘積將得到新的隱藏狀態。

GRU

我們已經知道 LSTM 是如何工作的,讓我們簡單看看 GRU。GRU 是新一代的迴圈神經網路,它與 LSTM 非常相似。GRU 擺脫了單元狀態,直接用隱藏狀態傳遞資訊,它只有重置門和更新門這兩個門控機制。

一步一步,看圖理解長短期記憶網路與門控迴圈網路

GRU 單元和它的門

更新門的作用類似於 LSTM遺忘門和輸入門。它同時決定丟棄什麼舊資訊,新增什麼新資訊。而重置門是一個用來決定要忘記多少過去資訊的門。

GRU 的張量運算很少,因此與 LSTM 相比,它的訓練速度要快一些。目前還不清楚哪一個更好,研究人員和工程師通常都根據自己實際情況選擇二者之一。

結論

綜上所述,RNN 對於處理用於預測的序列資料很有幫助,但其存在短期記憶問題。建立 LSTM 和 GRU 的目的是利用「門」的機制來降低短期記憶。LSTM 和 GRU 廣泛應用在語音識別語音合成、自然語言理解等最先進的深度學習應用中。


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

相關文章