1. 程式人生 > >(數據科學學習手劄39)RNN與LSTM基礎內容詳解

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

連續 添加 方式 定義 翻譯 下一個 BE img 誤差

一、簡介

  循環神經網絡(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

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