1. 程式人生 > >LSTM原理複習整理

LSTM原理複習整理

LSTM網路

long short term memory,即LSTM,是為了解決長期以來問題而專門設計出來的,所有的RNN都具有一種重複神經網路模組的鏈式形式。在標準RNN中,這個重複的結構模組只有一個非常簡單的結構,例如一個tanh層。
這裡寫圖片描述
LSTM 同樣是這樣的結構,但是重複的模組擁有一個不同的結構。不同於單一神經網路層,這裡是有四個,以一種非常特殊的方式進行互動。
這裡寫圖片描述

圖中使用的各種元素的圖示:
這裡寫圖片描述

每一條黑線傳輸著一整個向量,從一個節點的輸出到其他節點的輸入。粉色的圈代表 pointwise 的操作,如向量的和,黃色的矩陣就是學習到的神經網路層。合在一起的線表示向量的連線,分開的線表示內容被複制,然後分發到不同的位置

LSTM核心思想

LSTM的關鍵在於細胞的狀態整個(綠色的圖表示的是一個cell),和穿過細胞的那條水平線。

細胞狀態類似於傳送帶。直接在整個鏈上執行,只有一些少量的線性互動。資訊在上面流傳保持不變會很容易。
這裡寫圖片描述
若只有上面的那條水平線是沒辦法實現新增或者刪除資訊的。通過門(gates) 結構來實現選擇性地讓資訊通過,主要是通過一個 sigmoid 的神經層 和一個逐點相乘的操作來實現的。
這裡寫圖片描述
sigmoid 層輸出(是一個向量)的每個元素都是一個在 0 和 1 之間的實數,表示讓對應資訊通過的權重(或者佔比)。比如, 0 表示“不讓任何資訊通過”, 1 表示“讓所有資訊通過”。

LSTM通過三個這樣的本結構來實現資訊的保護和控制。這三個門分別輸入門、遺忘門和輸出門。

逐步理解LSTM

通過三個門逐步的瞭解LSTM的原理:

遺忘門

LSTM 中的第一步是決定我們會從細胞狀態中丟棄什麼資訊。這個決定通過一個稱為忘記門層完成。該門會讀取ht1xt,輸出一個在 0到 1之間的數值給每個在細胞狀態Ct1中的數字。1 表示“完全保留”,0 表示“完全捨棄”。

例如基於已經看到的詞預測下一個詞,在這個問題中,細胞狀態可能包含當前主語的性別,因此正確的代詞可以被選擇出來。當我們看到新的主語,我們希望忘記舊的主語。
這裡寫圖片描述

其中ht1表示的是上一個cell的輸出,σ表示sigmod函式。

輸入門

下一步是決定讓多少新的資訊加入到 cell 狀態 中來。實現這個需要包括兩個 步驟:首先,一個叫做“input gate layer ”的 sigmoid 層決定哪些資訊需要更新;一個 tanh 層生成一個向量,也就是備選的用來更新的內容,

C^t 。在下一步,把這兩部分聯合起來,對 cell 的狀態進行一個更新。
這裡寫圖片描述

現在更新舊細胞狀態,Ct1更新為Ct。前面的步驟已經決定了將會做什麼,現在就是實際去完成。

把舊狀態與ft相乘,丟棄掉確定需要丟棄的資訊。接著加上itC~t。這就是新的候選值,根據決定更新每個狀態的程度進行變化。

在語言模型的例子中,這就是實際根據前面確定的目標,丟棄舊代詞的性別資訊並新增新的資訊的地方。
這裡寫圖片描述

輸出門

最終,需要確定輸出什麼值。這個輸出將會基於細胞狀態,但是也是一個過濾後的版本。首先,執行一個 sigmoid 層來確定細胞狀態的哪個部分將輸出出去。接著,把細胞狀態通過 tanh 進行處理(得到一個在 -1 到 1 之間的值)並將它和 sigmoid 門的輸出相乘,最終我們僅僅會輸出我們確定輸出的那部分。

例如,因為他就看到了一個 代詞,可能需要輸出與一個 動詞 相關的資訊。例如,可能輸出是否代詞是單數還是負數,這樣如果是動詞的話,我們也知道動詞需要進行的詞形變化。
這裡寫圖片描述

LSTM變體

GRU(Gated Recurrent Unit ),這是由 Cho, et al. (2014) 提出。在 GRU 中,如下圖所示,只有兩個門:重置門(reset gate)和更新門(update gate)。同時在這個結構中,把細胞狀態和隱藏狀態進行了合併。最後模型比標準的 LSTM 結構要簡單,而且這個結構後來也非常流行。
這裡寫圖片描述

其中, rt表示重置門,zt表示更新門。重置門決定是否將之前的狀態忘記。(作用相當於合併了 LSTM 中的遺忘門和傳入門)當ht1會被忘掉,隱藏狀態h^t會被重置為當前輸入的資訊。更新門決定是否要將隱藏狀態更新為新的狀態h^t(作用相當於 LSTM 中的輸出門) 。

和 LSTM 比較一下:
- GRU 少一個門,同時少了細胞狀態Ct
- 在 LSTM 中,通過遺忘門和傳入門控制資訊的保留和傳入;GRU 則通過重置門來控制是否要保留原來隱藏狀態的資訊,但是不再限制當前資訊的傳入。
- 在 LSTM 中,雖然得到了新的細胞狀態 Ct,但是還不能直接輸出,而是需要經過一個過濾的處理:ht=ottanh(Ct);同樣,在 GRU 中, 雖然我們也得到了新的隱藏狀態h^t, 但是還不能直接輸出,而是通過更新門來控制最後的輸出:ht=(1zt)ht1+zth^t

多層LSTM
多層LSTM是將LSTM進行疊加,其優點是能夠在高層更抽象的表達特徵,並且減少神經元的個數,增加識別準確率並且降低訓練時間。

參考資料