(數據科學學習手札39)RNN與LSTM基礎內容詳解


一、簡介

  循環神經網絡(recurrent neural network,RNN),是一類專門用於處理序列數據(時間序列、文本語句、語音等)的神經網絡,尤其是可以處理可變長度的序列;在與傳統的時間序列分析進行比較的過程之中,RNN因為其梯度彌散等問題對長序列表現得不是很好,而據此提出的一系列變種則展現出很明顯的優勢,最具有代表性的就是LSTM(long short-term  memory),而本文就從標准的循環神經網絡結構和原理出發,再到LSTM的網絡結構和原理,對其有一個基本的認識和闡述;

 

二、關於基本的RNN

基本結構:

  循環神經網絡又叫遞歸神經網絡,因為其向前傳播過程中折疊了一個循環計算的重復結構,這里我們先觀察一個經典的動態系統,即:

其中s(t)為系統在t時刻的狀態,和傳統時間序列分析中的模型類似,在有限時間步τ的條件下,經過τ-1次上述展開過程就可以完全展開這個有限時間步內的過程,以τ=3為例:

上述過程可以用圖論中的有向無環計算圖來表示:

每一個時刻的狀態都經由函數f映射到下一個時刻,而這是僅有自我狀態驅動的系統,我們再考慮引入外部信號x(t)的系統:

即對於一個序列,其當前狀態包含了過去所有時刻狀態對其的影響,以及當前時刻外部信號的影響,我們的循環神經網絡就是建立在上述知識的基礎上,因為RNN中的狀態即是網絡的隱藏單元,我們用h來重新定義上式:

則一個最簡單典型的RNN架構如下(未包含輸出層部分),左邊是循環計算部分未展開的結構,右邊是展開后的結構:

其中左邊的黑色方塊表示單個時間步的延遲,可以類比時間序列分析中的n階延遲,接着我們添加上輸出層以及不同層之間的連接權信息,便得到下面這張經典RNN的結構示意圖:

由上圖,在這個將輸入序列x映射到輸出值o的過程中,層與層之間通過連接權進行映射,並在功能神經元內部進行激活(通常是tanh激活函數),其中在分類任務時,ho的映射由softmax完成,接着與真實的label,即y進行比較計算出損失L,總結一下經典RNN結構的特點;

  1、每個時間步完成后都有輸出,且時間步之間有按照時序順序的循環連接,這也決定了RNN的向后傳播過程不同於傳統BP算法可以並行,RNN在一個未展開的時間步內部只能按順序調整參數,即通過時間反向傳播算法(back-propagation through time,BPTT);

  2、不同的任務決定了不同的輸出方式,如翻譯就是序列到序列,分類或時序預測就是在最后一次得到輸出;

  3、參數共享

 

前向傳播:

  在輸出為離散的情況下,上述經典RNN的前向傳播過程如下:

  1、時刻t的隱藏狀態h(t)

  2、時刻t的輸出o(t)

  3、時刻t的預測類別輸出:

  4、損失函數,離散分類任務時通常為對數似然函數,連續預測任務通常是均方誤差:

 

 三、關於LSTM

  RNN在實際使用過程中,在處理較長序列輸入時,難以傳遞相隔較遠的信息,究其原因,我們先回想一下RNN的基本結構,其真正的輸入有兩部分——來自序列第t個位置的輸入xt,和來自上一個隱層的輸出ht-1,考慮隱層的信息往后傳導的過程,這里令RNN中隱層連接下一個時刻隱層的權重為Whh,不考慮每一次隱層的非線性激活時,從初始狀態h0到第t時刻狀態ht,其信息傳遞的過程如下,其中對Whh的連乘部分做了特征分解:

當特征值小於1時,連續相乘的結果是特征值向0方向衰減;當特征值大於1時,連續相乘的結果是特征值向∞方向增長。這兩種情況都會導致較遠時刻狀態的信息消失(vanish)或爆炸(explode),無法有效地反饋到t時刻;

  上述情況導致的結果是我們的RNN網絡難以通過梯度下降進行有效的學習,為了有效地利用梯度下降法來進行學習,我們需要控制傳遞過程中梯度的積在1左右,目前最有效的方式是gated RNNs,而LSTM就是其中的一個代表;

  再次回想前面的RNN中的t時刻狀態計算過程,其中σ為激活函數,通常為tanh

 

而LSTM就是在RNN的基礎上施加了若干個門(gate)來控制,我們先看LSTM的示意圖即網絡結構中涉及的計算內容,然后在接下來的過程中逐一解釋:

 

且這些門均由Sigmoid型函數激活,具體如下:

  1、遺忘門(forget gate)

 

  這個gate控制對上一層的cell狀態ct-1中的信息保留多少,它流入當前時刻xt與上一時刻傳遞過來的狀態ht-1通過對應的所有事件步共享的權重WxfWhf,偏移bf來進行線性組合,並通過sigmoid函數進行處理后得到當前時刻遺忘門輸出ft,即下式:

  2、輸入門(input gate)

  輸入門控制了有多少信息可以流入cell,即上圖中it的部分(所謂at的部分其實就是經典RNN中的輸入層)它對應了下式:

  3、輸出門(output gate)

  輸出門顧名思義,控制了有多少當前時刻的cell中的信息可以流向當前隱藏狀態ht,與經tanh處理的ct進行哈達瑪相乘得到ht,對應下式:

  4、t時刻ct的更新

  如上圖,我們這一個時間步的cell中的ct為遺忘門處理后的上一時刻中的ct-1、輸入門控制流入的信息it經典RNN中的輸入層信息at等信息的匯總,計算過程對應着:

  5、t時刻ht的更新

  如上圖所示,LSTM新加的這些結構的作用就是為了調整ht使其在長時間步的傳遞過程中減少信息失效的可能,對應的新的ht

 

 

  而其他部分的計算內容就同RNN,即LSTM就是一個擴充了數倍調整過濾參數的RNN,以上就是本篇文章的基本內容,如有筆誤,望指出。

 

 參考文獻:

《深度學習》

《Yjango的循環神經網絡》https://zhuanlan.zhihu.com/p/25518711

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM