機器學習:深入理解LSTM網路 (二)

Matrix_11發表於2016-11-28

之前我們介紹了RNN 網路結構以及其所遇到的問題,RNN 結構對於關聯度太長的時序問題可能無法處理,
簡單來說,RNN對於太久遠的資訊不能有效地儲存,為了解決這個問題,有人提出了LSTM的網路結構,LSTM 網路結構最早是由 Hochreiter & Schmidhuber 在1997 年提出的,隨著後來研究者的不斷改進,LSTM網路在很多問題上都有非常好的表現,並且得到廣泛的關注與應用。

LSTM 網路

LSTM 結構的一個優勢在於可以很好的解決 “long-term dependency” 的問題,”長期記憶”是LSTM結構與生俱來的特性,而不需要刻意地去學習。

所有的RNN結構都是有一個不斷重複的模組,在標準的RNN結構中,這個不斷重複的模組是一個單層的tanh , 如下圖所示:

這裡寫圖片描述

表示式簡單來說就是: ht=tanh(Wh[ht1,Xt]+bh)

h_{t}=tanh(W_{h} \cdot [h_{t-1}, X_{t}]+b_{h})

LSTM 網路也是有一個不斷重複的模組,但是這個模組不是一個簡單的tanh層,而是有複雜的四個網路層,用一種特殊的方式連線在一起,如下圖所示:

這裡寫圖片描述

LSTM 的核心思想

LSTM 網路的關鍵是 cell state,就是網路結構中最上面的那條水平線,如下圖所示:

這裡寫圖片描述

這條水平線貫穿整個網路,與一些線性組合相結合,可以將資訊無改變的傳遞。

LSTM 網路具備的另外一種能力就是移除或者增加一些資訊,這個過程是由一些稱為傳送門的結構來控制的,傳送門可以讓資訊有選擇的通過,這種門結構由sigmoid 層 與 點乘運算子組成。如下圖所示:

這裡寫圖片描述

其中,sigmoid 層輸出 0-1 之間的數,控制資訊傳遞的概率,1表示資訊完全通過,0表示資訊完全不能通過,一個典型的LSTM 網路有三個這樣的傳送門用來控制 cell state.

逐步深入LSTM

LSTM 網路的第一步就是決定哪些資訊將從 cell state 中剔除掉,這一步是由一個sigmoid 層來負責的,sigmoid 層會根據輸入的ht1

h_{t-1}
xt
x_{t}
輸出一系列 0-1 之間的數,這些數表示了狀態 Ct1
C_{t-1}
中資訊儲存下來的概率,1 表示完全儲存,而 0 表示完全剔除。結構及表示式如下圖所示:

這裡寫圖片描述

接下來的一步是要決定哪些新的資訊需要儲存在cell state 中,這一步有兩部分,首先,一個稱為 “input gate layer”的sigmoid 層會決定哪些資訊要被更新,然後 一個 tanh 層會建立一個新的向量 C̃ t

\tilde{C}_{t}
, 這個新的向量有可能被加入到 cell state 中,接下來的一步,我們會結合這兩部分對cell state 建立一個更新,結構及表示式如下圖所示:

這裡寫圖片描述

現在,就是對網路的舊狀態Ct1

C_{t-1}
進行更新到新的狀態 Ct
C_{t}
, 前面兩部已經做好了所有的準備的工作,我們只需要進行簡單的線性組合運算即可,結構及表示式如下圖所示:

這裡寫圖片描述

ft

f_{t}
it
i_{t}
是兩個控制門,Ct1
C_{t-1}
是網路的舊狀態,C̃ t
\tilde{C}_{t}
是網路更新的資訊,ft
f_{t}
表示有多少舊資訊會被剔除,而 it
i_{t}
表示會有多少新的資訊加入進來。

最後,我們需要給出輸出,我們同樣需要一個sigmoid層來決定Ct

C_{t}
中哪些是需要被輸出的,然後我們讓 cell state 通過一個 tanh 層 將值對映到到 [-1, 1]之間,然後乘以sigmoid層的輸出,這樣最終輸出的就是我們決定輸出的。結構與表示式如下圖所示:

這裡寫圖片描述

總得來說,LSTM結構,利用了幾個傳送門來控制資訊的刪除與更新,通過一些設計好的連線方式,可以擁有“長期記憶”的能力。與標準的RNN結構最大的區別就在於,LSTM是利用模組層裡的神經網路來控制資訊,而RNN是利用模組本身的連線方式來處理資訊。所以與RNN相比,LSTM處理時序資訊的能力要更強。效能也更穩定。

這裡介紹的只是最常見的一種LSTM結構,實際上還有很多LSTM的變種,更加詳細的介紹,可以參考colah 的部落格。

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

相關文章