一文了解LSTM和GRU背後的祕密(絕對沒有公式)
你好,歡迎閱讀長短期記憶網路(LSTM)和門控迴圈單元(GRU)的圖解文章。我是Michael,是AI語音助理領域的機器學習工程師。
在這篇文章中,我們將從LSTM和GRU背後的原理出發。然後我將解釋允許LSTM和GRU表現良好的內部機制。如果你想了解這兩個網路的背後到底是什麼,那麼這篇文章就是為你準備的。
問題根源短期記憶
遞迴神經網路(RNN)具有短期記憶。如果序列足夠長,他們將很難將資訊從較早的時間步驟傳送到後面的步驟。因此,如果你正在嘗試對一段文字進行預測,RNN可能會從一開始就遺漏掉重要資訊。
在反向傳播期間,遞迴神經網路(RNN)會遇到梯度消失問題。梯度是用於更新神經網路權重的值。梯度消失問題是當梯度隨著時間的推移傳播時梯度下降。如果梯度值變得非常小,則不會繼續學習。
梯度更新的規則
因此,在遞迴神經網路中,獲得小梯度更新的層會停止學習,而這些層通常是較早的層次。因為這些層不學習,RNN可以忘記它在較長序列中看到的內容,因此具有短期記憶。如果你想了解更多關於遞迴神經網路的一般機制,可以在這裡閱讀這篇帖子。
解決方案: LSTM 和 GRU
LSTM 和GRU是作為短期記憶的解決方案而建立的。它們具有稱為門的內部機制,可以調節資訊流。
這些門可以瞭解序列中哪些資料是需要保留或丟棄的。通過這樣方式,它可以沿著長鏈序列傳遞相關資訊進行預測。幾乎所有基於遞迴神經網路的現有技術結果都是通過這兩個網路實現的。LSTM和GRU可以在語音識別,語音合成和文字生成中找到,甚至可以使用它們為視訊生成字幕。
到此為止,你應該對LSTM和GRU擅長處理長序列的原因有充分的瞭解。我將通過直觀的解釋和插圖來解決介紹它們,中間避免儘可能多的數學運算。
本質
讓我們從一個實驗開始吧。假設你在網上檢視淘寶評論,以確定你是否想購買生活物品。你將首先閱讀評論,然後確定是否有人認為它是好的或是否是壞的。
當你 閱讀評論時 ,你的大 腦 下意 識 地只會 記 住重要的關 鍵詞 。你會 選擇 “ 驚人 ” 和 “ 完美均衡的早餐 ” 這樣的詞彙 。你不太關心 “this” , “give” , “all” , “should” 等。如果你的朋友第二天 問 你 評論說 什麼,你不可能一字不漏地 記 住它。但你可能 還記 得主要 觀 點,比如 “ 肯定會再次 購買 ” 。其他的 話 就會從 記憶 中逐 漸 消失。
這基本上就是LSTM或GRU的作用。它可以學習只保留相關資訊來進行預測,並忘記不相關的資料。在這種情況下,你記住的詞讓你判斷它是好的。
綜 述RNN
為了理解LSTM或GRU如何實現這一點,讓我們回顧一下遞迴神經網路。RNN的工作原理如下; 第一個詞被轉換成機器可讀的向量,然後RNN逐個處理向量序列。
逐 一 順序處理
處理時,它將先前的隱藏狀態傳遞給序列的下一步。隱藏狀態充當神經網路記憶,其中包含了有關網路以前見過的先前資料的資訊。
讓我們看看 RNN 的一個 單 元,看看它將如何 計 算 隱 藏狀 態 。首先,將 輸 入和先前 隱 藏狀 態組 合以形成向量。 該向量現在具有關於當前輸入和先前輸入的資訊 。向量 經過 tanh 函式 , 輸 出是新的 隱 藏狀 態 ,或網 絡 的記憶體。
啟用函式: Tanh
啟用函式tanh用於幫助調節流經網路的值。tanh函式將值限制與在-1和1之間。
Tanh squishes 值介於 -1 和 1 之 間
當向量流經神經網路時,由於各種數學運算,它經歷了許多變換。所以想象一個值繼續乘以3。你可以看到某些值如何爆炸並變得天文數字, 從而導致其他值看起來微不足道。
沒有 tanh 函式 的 變換
tanh 函式確保值保持在-1和1之間,從而調節神經網路的輸出。你可以看到上面的相同值如何保持在tanh函式允許的邊界之間。
向量變換與tanh
這是一個RNN,它內部的操作很少,但在適當的情況下工作得很好。RNN使用的計算資源比它的演化變體LSTM和GRU少得多。
LSTM
LSTM 具有與遞迴神經網路類似的控制流程,都是向前傳播時處理傳遞資訊的資料。差異是LSTM細胞內的操作。
LSTM Cell 及其運算
這些操作允許LSTM保留或忘記資訊。現在看這些操作可能會有點複雜,所以我們將逐步介紹這些操作。
核心概念
LSTM 的核心概念是細胞狀態,以及其中的各種門結構。細胞狀態充當傳輸高速公路,在序列鏈中一直傳遞相關資訊。你可以將其視為網路的“記憶”。理論上,細胞狀態可以在序列的整個處理過程中攜帶相關資訊。因此,即使來自較早時間步驟的資訊也可以使其成為稍後時間步驟的方法,從而減少短期記憶的影響。當細胞狀態繼續進行時,資訊通過門被新增或移除到細胞狀態。門是不同的神經網路,決定在細胞狀態上允許哪些資訊。有些門可以瞭解在訓練期間保持或忘記哪些資訊。
Sigmoid
門結構中包含sigmoid啟用函式。S形啟用函式類似於tanh啟用函式。但它不是在-1和1之間取值,而是在0和1之間取值。這有助於更新或忘記資料,因為任何數字乘以0都是0,這會導致值消失或被“遺忘”。任何數字乘以1是相同的值,因此值保持相同或“保持”。網路可以瞭解哪些資料不重要因此可能被遺忘或哪些資料很重要。
Sigmoid squishes 值介於0和1之 間
接下來讓我們深入瞭解不同的門有什麼作用,我們有三個不同的門來調節LSTM單元中的資訊流。遺忘門、輸入門和輸出門。
遺忘 門
遺忘門決定了應丟棄或保留哪些資訊。來自先前隱藏狀態的資訊和來自當前輸入的資訊通過sigmoid函式傳遞。值介於0和1之間,越接近0意味著忘記,越接近1意味著要保持。
遺忘門操 作
輸入門
輸入門要更新單元狀態,首先,我們將先前的隱藏狀態和當前輸入傳遞給sigmoid函式。這決定了通過將值轉換為0到1來更新哪些值:0表示不重要,1表示重要。接著你還要將隱藏狀態和當前輸入傳遞給tanh函式,以便在-1和1之間取值以幫助調節網路。然後將tanh輸出與sigmoid輸出相乘。sigmoid輸出將決定哪些資訊對於輸出很重要。
輸入門操 作
細胞狀態
現在我們應該有足夠的資訊來計算細胞狀態。首先,細胞狀態逐點乘以遺忘向量。如果它乘以接近0的值,則有可能在單元狀態中丟棄。然後我們從輸入門獲取輸出並進行逐點相加,將神經網路發現的新值更新為細胞狀態中,這就給了我們新的細胞狀態。
細胞狀 態的計算
輸出門
最後是輸出門,輸出門決定下一個隱藏狀態應該是什麼。請記住,隱藏狀態包含有關先前輸入的資訊,隱藏狀態也可用於預測。首先,我們將先前的隱藏狀態和當前輸入傳遞給sigmoid函式。然後我們將新修改的單元狀態傳遞給tanh函式。我們將tanh輸出與sigmoid輸出相乘,以確定隱藏狀態應攜帶的資訊,輸出的是隱藏狀態。然後將新的細胞狀態和新的隱藏狀態轉移到下一個時間步。
輸出門運算操 作
讓我們整理一下整個思路,遺忘門決定與先前步驟保持相關的內容;輸入門決定從當前步驟新增哪些資訊;輸出門決定下一個隱藏狀態應該是什麼。
代 碼 演示
對於那些通過檢視程式碼更好理解的人,這裡有一個使用python虛擬碼的例子:
python 偽代 碼
1. 首先,先前的隱藏狀態和當前輸入被連線起來,我們稱之為 combine 。
2. 將get的fed 組合 到forget層中,該層將刪除不相關的資料。
3. 使用 combine 建立候選層,候選層保留可能的值以新增到細胞狀態。
4. combine 同樣 也可以進入輸入層。該層決定應將候選層中的哪些資料新增到新的細胞狀態中。
5. 在計算遺忘層,候選層和輸入層之後,使用那些向量和先前的單元狀態來計算單元狀態。
6. 然後計算輸出。
7. 最後逐點乘以輸出和新的單元狀態為我們提供了新的隱藏狀態。
LSTM 網路的控制流程是幾個張量操作和一個for迴圈。你可以使用隱藏狀態進行預測,結合所有這些機制,LSTM可以選擇在序列處理期間哪些資訊需要記憶或忘記。
GRU
所以現在我們知道LSTM是如何工作的,讓我們簡單地看一下GRU。GRU是新一代的遞迴神經網路,與LSTM非常相似。GRU擺脫了細胞狀態並使用隱藏狀態來傳輸資訊。它也只有兩個門,一個復位門和一個更新門。
GRU 細胞狀態和它的 門
更新 門
更新門的作用類似於LSTM的遺忘門和輸入門。它決定了要丟棄哪些資訊以及要新增的新資訊。
重置 門
重置門是另一個門,它決定忘記過去的資訊量。
這就是一個GRU,GRU的張量操作較少;因此,它比LSTM更快一點,但沒有一個明顯的贏家。研究人員和工程師通常會嘗試兩者來確定哪一個更適合他們的用例。
總結
總而言之,RNN適用於處理序列資料以進行預測,但卻受到短期記憶的影響。LSTM和GRU是作為一種使用稱為門的機制來緩解短期記憶的痛點而建立的。門結構可以調節流經序列鏈的資訊流。LSTM和GRU正在被用於最先進的深度學習應用,如語音識別,語音合成,自然語言理解等。
本文由 ofollow,noindex" target="_blank"> 阿里云云棲社群 組織翻譯。
文章原標題《illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation》
作者: Michael Nguyen 譯者:虎說八道,審校:。
文章為簡譯,更為詳細的內容,請檢視 原文 。