網路流量預測入門(二)之LSTM介紹

網路流量預測入門(二)之LSTM介紹

​ 這篇blog大家就隨便看一下吧,基本上是參照RNN模型與NLP應用(4/9):LSTM模型這個是video和Understanding LSTM Networks這篇部落格寫出來的。實際上大家只需要看上述兩個內容就🆗了,他們的教程深入淺出,形象生動。

​ 在網路流量預測入門(一)之RNN 介紹中,對RNN的原理進行了介紹,然後,在簡單明朗的 RNN 寫詩教程中詳細的介紹了如何使用keras構建RNN模型來寫詩。

​ 而在這篇blog中將對LSTM進行介紹。

LSTM簡介

​ LSTM全稱Long Short-Term Memory,中文名:長短期記憶,是一種循環網路。值得注意的是,Long Short-Term Memory中的-是放在Short與Term中間的。相比較於Simple RNN,LSTM在長的時間序列中有著更好的表現。

​ Simple RNN網路會因為梯度消失問題,導致無法回憶起長久的記憶,也就是說Simple RNN是一個Short-Term Memory的模型。但是,LSTM通過某一些操作,使得其能夠回憶起長久的記憶,也就是說它是一個長的短期記憶,因此被稱之為 Long Short-Term Memory。——李宏毅

Simple RNN的弊端

​ RNN會面臨兩個問題:梯度消失問題梯度爆炸問題,關於具體的公式推導,可以參考RNN 的梯度消失問題

​ 簡單點來說,就是下圖中的\(W\)\(U\)會隨著時間序列的加長,也就是layer層數的增多而產生梯度消失和梯度爆炸問題。而LSTM通過門的機制解決了整個問題。

​ 下面將對LSTM的結構進行介紹。

LSTM的結構

​ 下面是一張LSTM的結構示意圖,來自Understanding LSTM Networks,看起來很複雜,確實相比較於RNN,它確實要複雜很多,但是卻也沒那麼難理解。與Simple RNN很類似,input 一個\(x_t\),output一個狀態\(h_t\)。(只不過在其內部多了一個叫做Cell State的東西)

​ 下圖中,被重複的單元稱之為細胞(Cell),也就是圖中綠色的框框。

​ 下圖是結構圖中所出現的符號:

​ 先對符號做解釋:

  1. 代表的是神經網路,中間的\(\sigma\)或者\(tanh\)代表的是其激活函數。
  2. 表示逐點操作:
    • 表示逐點相乘:\(\left[\begin{array}{c}0.9 \\ 0.2 \\ -0.5 \\ -0.1\end{array}\right] \circ\left[\begin{array}{c}0.5 \\ 0 \\ 1 \\ 0.8\end{array}\right]=\left[\begin{array}{c}0.45 \\ 0 \\ -0.5 \\ -0.08\end{array}\right]\)
    • 表示逐點相加:\(\left[\begin{array}{c}0.9 \\ 0.2 \\ -0.5 \\ -0.1\end{array}\right] + \left[\begin{array}{c}0.5 \\ 0 \\ 1 \\ 0.8\end{array}\right]=\left[\begin{array}{c}1.4 \\ 0.2 \\ 0.5 \\ 0.7\end{array}\right]\)
    • 表示逐點用tanh函數:\(tanh(\left[\begin{array}{c}0.9 \\ 0.2 \\ -0.5 \\ -0.1\end{array}\right]) =\left[\begin{array}{c}0.717 \\ 0.198 \\ -0.462 \\ -0.100\end{array}\right]\)
  3. 表示如下將兩個矩陣連接起來:

​ LSTM發揮作用,離不開以下幾個概念:Cell State ,Forget Gate,Input Gate ,Output Gate。下面將詳細對其進行介紹。

細胞狀態(Cell State)

​ Celle State是LSTM最關鍵的部分,它類似一條傳輸帶,貫穿LSTM整個部分(可以形象地理解為主要矛盾)。舉個例子:

​ 當我們分析一部小說主題的時候,肯定不會一個字一個字地分析,我們會抓住主要矛盾,分析小說中的主要情節矛盾,然後判斷一部小說的主題。

  1. 有些小說寫的比較隱晦,主題可能會在後段部分才顯現出來,因此我們在讀小說的時候,會不斷更新腦海中對主要矛盾的印象,往裡面添加新的東西,同時刪除某些次要的東西。
  2. 有的小說開門見山,在文章的開始就會告訴你主題是什麼,因此,你在後面閱讀的過程中,你就不會再向你腦海中的主要矛盾添加內容了,因為你知道後面的內容不會影響主要矛盾。

​ 接下來將討論三種門,不過在討論三種門之前,我們應該先弄清楚什麼是門。

內容參考於RNN模型與NLP應用(4/9):LSTM模型

門(Gate)

​ 在LSTM中有三種門,那麼門到底是什麼呢?門的作用很簡單,就是讓information選擇性通過。門的結構如下圖左邊所示:

​ 在這種情況下,當一個數據\(c\)通過一個門\(f\)🚪的時候(\(f\) 中的每一個數都位於\(0\sim 1\)之間),\(f\)會對數據 \(c\) 進行選擇,可以讓它全部通過(圖中的\(-0.5*1=-0.5\)),也可以讓它完全不通過(圖中的\(0.2*0=0\)),當然也可以讓它部分的通過。

​ 而在LSTM分別有著以下三種門:Forget Gate,Input Gate,Output Gate。

遺忘門(Forget Gate)

​ 遺忘門構成如下所示\(f_{t}=\sigma\left(W_{f} \cdot\left[h_{t-1}, x_{t}\right]+b_{f}\right)\)\(f_t\)中的每一個值都介於\(0\sim1\)之間,其中\(W_f\)\(b_f\)是LSTM在訓練的時候,通過反向傳播進行學習的。

​ 遺忘門的作用很簡單,那就是控制\(C_{t-1}\)中哪一些數據應該被「遺忘」。

輸入門(Input Gate)

​ 圖中的 \(i_t\) 表示輸入門,\(\tilde{C}_{t}\)表示加入Cell State的數據。\(i_t\)中的每一個值都介於\(0\sim1\)之間,而\(\tilde{C}_{t}\)的值介於\(-1 \sim 1\)之間,其中\(W_i,W_c,b_i,b_c\)是通過反向傳播進行學習更新的。

​ 輸入門的作用就是控制\(\tilde{C}_{t}\)中哪一些數據能夠加入到Cell State中。

Cell State的更新

​ Cell State的更新需要遺忘門和輸入門的同時作用,遺忘門作用於上一個狀態\(C_{t-1}\),輸入門作用於當前輸入\(\tilde{C}_{t}=\tanh \left(W_{C} \cdot\left[h_{t-1}, x_{t}\right]+b_{c}\right)\)。這樣,當被遺忘門處理後的\(C_{t-1}\)加上新的輸入\(\tilde{C}_{t}\),就組成新的\(C_t\)了,完成了一次Cell State的更新。

輸出門(Output Gate)

​ 輸出門的結構如下說所示,\(O_t\)中的每一個值都介於\(0\sim1\)之間,其中\(W_o\)\(b_o\)是LSTM在訓練的時候,通過反向傳播進行學習的。

​ 輸出門的作用實際上就是通過控制\(C_t\)以達到控制\(h_t\)的目的。

輸出\(h_t\)

​ 輸出的示意圖如下所示,\(tanh(C_t)\)中的每一個值都位於\(-1 \sim +1\)之間,輸出門\(O_t\)通過控制\(C_t\)的information,來產生輸出\(h_t\)\(h_t\)會被賦值為兩份,一份作為下個layer的\(h_t\),一份用於LSTM在時序\(t\)時刻的輸出。

總結

​ 以上,便是對LSTM結構的介紹,如果已經能夠很好的理解上面的內容,讓我們再回過頭來看下面這張圖,是不是就感覺簡單起來了呢?

​ 在下篇部落格,將介紹如何使用LSTM來生成音樂。嘿嘿嘿~~

參考

  1. RNN模型與NLP應用(4/9):LSTM模型
  2. Understanding LSTM Networks
  3. 什麼是 LSTM 循環神經網路
  4. ML Lecture 21-1: Recurrent Neural Network (Part I)
  5. RNN 的梯度消失問題