概述
通過前一節對循環神經網絡RNN的瞭解,簡單的RNN雖然能夠解決長期依賴問題,但是訓練和優化比較困難,然後長短時記憶模型LSTM很大程度上解決長期依賴問題,本文主要介紹
1.LSTM的提出
2.LSTM網絡結構
3.LSTM的分析
LSTM的提出
早在94年Hochreiter發現了RNN訓練過程中的梯度消失和爆炸問題,然後在99年提出LSTM解決該問題。
梯度消失問題的原因可以參考之前的介紹。
常量錯誤傳播
RNN難訓練的主要原因在後向傳播過程中,梯度隨着時間序列的增加而逐漸消失。如果誤差能夠不消減的進行傳遞,則可以避免訓練難得問題。
常量錯誤傳播-直觀想法
假設隱藏層只有一個節點j,則該節點誤差計算過程爲
如果想做到常誤差傳播,則需要
此時可以近似無限長時間序列,但是網絡過於簡單並且實現比較複雜。
常量錯誤木馬(Constant Error Carousel-CEC)
LSTM也是根據CEC演化而來。
針對上面的必要條件
此時激活函數必須是線性並且激活值保持爲常量。
作者將滿足這個等式的傳播稱之爲 CEC。
當然如果滿足CEC的約束條件能夠進行常誤差傳播,但是該網絡結構過於簡單,同時有兩個相關問題需要解決:
1.輸入權重衝突:隱藏層節點不僅要保存歷史信息,還要對當前的輸入進行響應。
2.輸出權重衝突:同理隱藏層節點不僅保存歷史信息,還要響應該節點到輸出層的反饋。
因此隱藏層不僅保存歷史信息還要對輸入和輸出進行不同程度的響應,會導致相關的權重更新衝突。這也是LSTM加入門節點的重要原因之一。
LSTM原型
爲了解決1)常量誤差傳播2)衝突問題,作者通過引入內存單元和門單元重新構建了網絡結構。
輸入門:能夠保護內存單元的內容不受不相關輸入的影響,最大程度保存有用信息。
輸出門:能夠保護其他單元不受不相關內存的影響。網絡拓撲如下:
1.y_in表示輸入門 ,y_out表示輸出門。門在網絡結構中相當於新引入隱藏節點,不過激活函數一般選取爲sigmoid,將權重壓縮到0-1之間
2.內存單元狀態sc 用於存儲歷史信息和當前輸入。
3.內存塊,這也是該模型長短時記憶由來的原因。在一個內存塊中可以有多個內存單元,他們有着相同的輸入和輸出門。引入內存塊能夠減少門的個數,加快計算效率。
引入遺忘門
爲了解決狀態不斷累加問題,引入遺忘門對狀態進行縮減。網絡結構如下:
引入Peephole Connection
爲了學習到更精確的時序,引入Peephole Connection,使得各種門的狀態能夠學習更準確。這也是目前使用最多的網絡結構。
LSTM經典網絡結構
目前使用較多的網絡結構如下圖所示:
1.上圖展示的是一個內存塊並且內存塊中僅有一個內存單元
2.網絡結構中包括輸入、輸出和遺忘門;Cell爲內存狀態單元;虛線表示Peephole連接。
LSTM展開圖
下圖更形象的展示了LSTM的網絡結構,隱藏層有兩個內存塊,每個內存塊有2個單元。
LSTM數學表達
符號定義
I 表示輸入集合
H 表示隱藏層節點個數
C爲內存塊中細胞單元個數
K表示輸出層節點個數
γ,ϕ,ω分布表示輸入門、遺忘門以及輸出門
S表示內存單元狀態
前向遍歷過程
某個內存塊計算過程如下:
- 輸入門表達輸入門的輸入依次來自於原始輸入x、前一時序隱藏層h、前一時序內存節點狀態
atγbtγ=∑i=1Iwi,γxti+∑h=1Hwh,γbt−1h+∑c=1Cwc,γst−1c=f(atγ) - 遺忘門表達類似於輸入門,遺忘門的輸入依次來自於原始輸入x、前一時序隱藏層h、前一時序內存節點狀態
atϕbtϕ=∑i=1Iwi,ϕxti+∑h=1Hwh,ϕbt−1h+∑c=1Cwc,ϕst−1c=f(atϕ) - 細胞單元表達中間狀態計算包括兩部分一是通過遺忘門加權的前一時序的狀態值;二是通過輸入門進行加權後的當前單元的輸入
atcstc=∑i=1Iwi,cxti+∑h=1Hwh,cbt−1h=btϕst−1c+btγg(atc) - 輸出門表達輸出門的輸入依次來自於原始輸入x、前一時序隱藏層h、當前時序內存節點狀態。需要注意的是:輸出門控制的是當前細胞單元的輸出,因此需要依賴當前節點的狀態。
atωbtω=∑i=1Iwi,ωxti+∑h=1Hwh,ωbt−1h+∑c=1Cwc,ωstc=f(atω) - 內存單元輸出內存單元的最終輸出可以用於連接輸出層和下一時序的隱藏層輸入。
btc=btωh(stc)
後向遍歷過程
後向遍歷過程,類似於RNN,需要計算得到各個節點的誤差,然後傳遞到相關的權重。
符號定義
ϵtc=∂L∂btc 表示細胞單元輸出的誤差,即到達btc 時的彙總誤差
ϵts=∂L∂stc 表示中間狀態的誤差
δtk 表示輸出層節點的誤差
1.細胞節點誤差
2.輸出門誤差
3.細胞狀態誤差
4.細胞節點的誤差
5.遺忘門誤差
6.輸入門誤差
LSTM分析
優勢
1.在一個內存塊中LSTM能夠做到常誤差傳遞(通過後向傳遞過程可以得到);以及在不同時序階段中通過輸入門和遺忘門的控制能夠使得誤差極大化向後傳遞;最終使得LSTM能夠解決較長的依賴問題
2.LSTM能夠處理噪聲、連續型輸入以及分佈式表示等問題
3.LSTM泛化能力較其他模型強
4.不需要細粒度參數調優,而且計算複雜度和RNN一致
侷限
1.計算複雜度線性增加
2.RNN加上相關優化算法能夠解決100以內依賴問題,LSTM能夠處理1000以內依賴問題;對於更長的依賴LSTM也會遇到梯度相關問題。
總結
通過本文學習能夠非常清楚LSTM的網絡結構以及求解算法、理解LSTM內存塊內的常量誤差傳遞。