一.lstm網路
long short term memory,即我們所稱呼的lstm,是為了解決長期以來問題而專門設計出來的,所有的rnn都具有一種重複神經網路模組的鏈式形式。在標準rnn中,這個重複的結構模組只有乙個非常簡單的結構,例如乙個tanh層。
不必擔心這裡的細節。我們會一步一步地剖析 lstm 解析圖。現在,我們先來熟悉一下圖中使用的各種元素的圖示。
在上面的圖例中,每一條黑線傳輸著一整個向量,從乙個節點的輸出到其他節點的輸入。粉色的圈代表 pointwise 的操作,諸如向量的和,而黃色的矩陣就是學習到的神經網路層。合在一起的線表示向量的連線,分開的線表示內容被複製,然後分發到不同的位置。
二.lstm核心思想
lstm的關鍵在於細胞的狀態整個(綠色的圖表示的是乙個cell),和穿過細胞的那條水平線。
細胞狀態類似於傳送帶。直接在整個鏈上執行,只有一些少量的線**互。資訊在上面流傳保持不變會很容易。
若只有上面的那條水平線是沒辦法實現新增或者刪除資訊的。而是通過一種叫做 門(gates) 的結構來實現的。
門 可以實現選擇性地讓資訊通過,主要是通過乙個 sigmoid 的神經層 和乙個逐點相乘的操作來實現的。
sigmoid 層輸出(是乙個向量)的每個元素都是乙個在 0 和 1 之間的實數,表示讓對應資訊通過的權重(或者佔比)。比如, 0 表示「不讓任何資訊通過」, 1 表示「讓所有資訊通過」。
lstm通過三個這樣的本結構來實現資訊的保護和控制。這三個門分別輸入門、遺忘門和輸出門。
逐步理解lstm
現在我們就開始通過三個門逐步的了解lstm的原理
1.遺忘門
在我們 lstm 中的第一步是決定我們會從細胞狀態中丟棄什麼資訊。這個決定通過乙個稱為忘記門層完成。該門會讀取ht−1h_ht−1和xtx_txt,輸出乙個在 0到 1之間的數值給每個在細胞狀態 ct−1c_ct−1 中的數字。1 表示「完全保留」,0 表示「完全捨棄」。
讓我們回到語言模型的例子中來基於已經看到的**下乙個詞。在這個問題中,細胞狀態可能包含當前主語的性別,因此正確的代詞可以被選擇出來。當我們看到新的主語,我們希望忘記舊的主語。
其中ht−1h_ht−1表示的是上乙個cell的輸出,xtx_txt表示的是當前細胞的輸入。σ\sigmaσ表示sigmod函式。
2.輸入門
下一步是決定讓多少新的資訊加入到 cell 狀態 中來。實現這個需要包括兩個 步驟:首先,乙個叫做「input gate layer 」的 sigmoid 層決定哪些資訊需要更新;乙個 tanh 層生成乙個向量,也就是備選的用來更新的內容,c^t\hat c_tc^t 。在下一步,我們把這兩部分聯合起來,對 cell 的狀態進行乙個更新。
現在是更新舊細胞狀態的時間了,ct−1c_ct−1更新為ctc_tct。前面的步驟已經決定了將會做什麼,我們現在就是實際去完成。
我們把舊狀態與ftf_tft相乘,丟棄掉我們確定需要丟棄的資訊。接著加上it∗c~ti_t * \tilde_tit∗c~t。這就是新的候選值,根據我們決定更新每個狀態的程度進行變化。
在語言模型的例子中,這就是我們實際根據前面確定的目標,丟棄舊代詞的性別資訊並新增新的資訊的地方。
3.輸出門
最終,我們需要確定輸出什麼值。這個輸出將會基於我們的細胞狀態,但是也是乙個過濾後的版本。首先,我們執行乙個 sigmoid 層來確定細胞狀態的哪個部分將輸出出去。接著,我們把細胞狀態通過 tanh 進行處理(得到乙個在 -1 到 1 之間的值)並將它和 sigmoid 門的輸出相乘,最終我們僅僅會輸出我們確定輸出的那部分。
在語言模型的例子中,因為他就看到了乙個 代詞,可能需要輸出與乙個 動詞 相關的資訊。例如,可能輸出是否代詞是單數還是負數,這樣如果是動詞的話,我們也知道動詞需要進行的詞形變化。
三.lstm變體
原文這部分介紹了 lstm 的幾個變種,還有這些變形的作用。在這裡我就不再寫了。有興趣的可以直接閱讀原文。
下面主要講一下其中比較著名的變種 gru(gated recurrent unit ),這是由 cho, et al. (2014) 提出。在 gru 中,如下圖所示,只有兩個門:重置門(reset gate)和更新門(update gate)。同時在這個結構中,把細胞狀態和隱藏狀態進行了合併。最後模型比標準的 lstm 結構要簡單,而且這個結
其中, rtr_trt表示重置門,ztz_tzt表示更新門。重置門決定是否將之前的狀態忘記。(作用相當於合併了 lstm 中的遺忘門和傳入門)當rtr_trt趨於0的時候,前乙個時刻的狀態資訊ht−1h_ht−1會被忘掉,隱藏狀態h^t\hat h_tht會被重置為當前輸入的資訊。更新門決定是否要將隱藏狀態更新為新的狀態ht\hat h_th^t(作用相當於 lstm 中的輸出門) 。
和 lstm 比較一下:
gru 少乙個門,同時少了細胞狀態ctc_tct。
在 lstm 中,通過遺忘門和傳入門控制資訊的保留和傳入;gru 則通過重置門來控制是否要保留原來隱藏狀態的資訊,但是不再限制當前資訊的傳入。
在 lstm 中,雖然得到了新的細胞狀態 ct,但是還不能直接輸出,而是需要經過乙個過濾的處理:ht=ot∗tanh(ct)h_t=o_t*tanh(c_t)ht=ot∗tanh(ct);同樣,在 gru 中, 雖然我們也得到了新的隱藏狀態h^t\hat h_th^t, 但是還不能直接輸出,而是通過更新門來控制最後的輸出:ht=(1−zt)∗ht−1+zt∗h^th_t=(1-z_t)h_+z_t\hat h_tht=(1−zt)∗ht−1+zt∗h^t
四.多層lstm
**多層lstm是將lstm進行疊加,其優點是能夠在高層更抽象的表達特徵,並且減少神經元的個數,增加識別準確率並且降低訓練時間。
lstm原理 LSTM原理及實踐(一) 理論
lstm long short term memory 算是時序模型中的比較常用也比較好的一種模型。在提到lstm之前,不得不說一下rnn recurrent neural network 其實就是把上一次輸出作為下一次輸入 如圖 可以看到,在每乙個時間點tn的總輸入都是上乙個tn 1時刻的輸出 這...
lstm原理 長短期記憶網路LSTM
上兩小節我們主要講述了迴圈神經網路rnn,但是儘管 rnn 被設計成可以利用歷史的資訊來 當前的決策,例如使用之前出現的單詞來加強對當前單詞的理解,但是 rnn決策的主要還是最後輸入的一些訊號,更早之前的訊號會隨著時間的推遲而變得強度越來越低,它對後續的影響越來越弱。這樣就會給rnn帶來了新的技術挑...
LSTM的工作原理分析
在我們 lstm 中的第一步是決定我們會從細胞狀態中丟棄什麼資訊。這個決定通過乙個稱為忘記門的層完成。該門會讀取h t 1 和x t 輸出乙個在 0到 1之間的數值給每個在細胞狀態c t 1 中的數字。1 表示 完全保留 0 表示 完全捨棄 f t wf h t 1 xt bf f t w f h ...