理解LSTM

本文基於Understanding-LSTMs進行歸納整理,對LSTM進行一個簡單的介紹git

什麼是LSTM

LSTM(Long Short Term Memory networks)能夠解決傳統RNN的長期依賴(long-term dependencies)問題。它對傳統RNN的隱層進行告終構上的改進。github

LSTM的內部結構


這是傳統的RNN的結構,內部有一個tanh層

LSTM和傳統RNN結構相似,然而內部結構卻有所不一樣網絡


圖中所示的水平線就是LSTM中的狀態信息,能夠把這個理解爲記憶(memory)post

下面介紹門的概念,LSTM中的門能夠選擇性的控制信息的流動,一般由一個sigmoid神經網絡層和一個point wise(或者叫element wise)的乘法操做組成。
spa

LSTM中有三種門:blog

  • 遺忘門:

    能夠看到這裏的\(f_{t}\)由輸入的\(x_t\)\(h_{t-1}\)獲得,用來控制\(C_{t-1}\)中的信息的遺忘程度。\(f_{t}\)中的每一個值都是0-1中的一個數,下界0表明徹底遺忘,上界1表明徹底不變。ci

  • 輸入門:

    遺忘門決定了歷史狀態信息的遺忘程度,那麼輸入門的做用就是往狀態信息中添加新東西。一樣,由輸入的\(x_t\)\(h_{t-1}\)獲得當前的\(i_t\)用以控制新狀態信息的更新程度。這裏新狀態信息\(\tilde{C}\)也是經過輸入的\(x_t\)\(h_{t-1}\)計算得出。element


那麼當前新的狀態信息\(C_t\)就很顯然能夠經過上式計算得出,通俗的說就是遺忘一些舊信息,更新一些新信息進去。get

  • 輸出門:

    最後就是輸出門了。相似地,根據\(x_t\)\(h_{t-1}\)得出\(o_{t}\)用以控制哪些信息須要做爲輸出。

歸納一下:it

  • 狀態信息\(C_t\)的依賴於遺忘門\(f_t\)和輸入門\(i_t\)
  • 遺忘門\(f_t\)和輸入門\(i_t\)依賴於輸入參數中的\(h_{t-1}\)
  • 而當前隱層輸出\(h_t\)依賴於\(C_t\)

LSTM的一些變種

增長peephole connections

Gers & Schmidhuber (2000)提出的增長peephole connections

圖中所示,在全部的門以前都與狀態線相連,使得狀態信息對門的輸出值產生影響。但一些論文裏只是在部門門前加上這樣的鏈接,而不是全部的門

耦合遺忘門和輸入門


這一種變體是將遺忘門和輸入門耦合在一塊兒,簡單來講就是遺忘多少就更新多少新狀態,沒有遺忘就不更新狀態,所有遺忘那就新狀態所有更新進去。

GRU

這是目前比較流行的LSTM變種,不只將遺忘門和輸入門統一爲更新們,並且將h和c也給合併了。可參考Cho, et al. (2014)

參考

Understanding-LSTMs

相關文章
相關標籤/搜索