理解LSTM網路

2021-08-04 22:36:46 字數 2504 閱讀 2999

lstm(long shortterm memory長短項記憶)網路是一種特殊的rnn,可以學習long-term中的依賴。hochreiter& schmidhuber (1997) 向世人介紹了它,然後在接下來的工作中不斷被人們完善。它在很多問題上表現異常的好,現在也被人們廣泛地使用。

所有遞迴神經網路結構都是鏈式的重複的神經網路,在標準rnn中,這些重複的模型只有乙個簡單的結構,例如乙個tanh函式層。

lstm同樣有乙個鏈式的結構,但是重複的模型卻是不同的結構。它們核心有4個神經網路層,用一種特別的方式相互作用,而不是單個神經網路層。

圖中的符號含義如下:

上圖中,每一條線都攜帶了整個向量,從乙個節點的輸出,到另乙個節點的輸入;紫色圓圈表示逐點操作,比如向量相加;黃色矩形表示用來學習的神經網路層;線條相交表示級聯,線條分叉表示內容複製,複製的部分流向了乙個不同的位置。

lstm背後的核心思想

lstm的關鍵是cell state,即圖中上方位置流過的水平直線。cell state有點像是傳輸帶,它直直地流過整個鏈,受到輕微的非線性相互作用影響。因此資訊可以輕鬆地沿它流動而不發生改變。

lstm確實有能力對cell state移除或者增加資訊,由稱作gate的結構小心地調控。gate是一條讓資訊選擇性通過的道路,它們由sigmoid神經網路層和乙個逐點相乘操作組成。

sigmoid層輸出[0,1]之間的數字,表示每個部分有多少資訊允許通過。0表示不然任何資訊通過,而1表示所有資訊都可以通過。乙個lstm有3個這樣的gate,來保護和控制cell state。

lstm的每步動作

第一步:

lstm中的第一步是決定應該從cell state中丟棄哪些資訊,這個決定是由叫做forget gate layer的sigmoid layer作出的。它檢查ht-1和xt,並對cell state ct-1中的每個數字輸出乙個[0, 1]之間的數字。0表示完全拋棄這些資訊,而1表示所有資訊全部保留。

回到語言模型的例子,即通過前面的詞來推測下乙個出現的單詞。在這種情況下,cell state可能攜帶了當前主體的性別,因此可以推導出正確的代詞。而當出現下乙個主體時,我們想要遺忘上一主體的性別。

第二步:

接下來的一步是決定哪些新資訊我們需要儲存在cell state中。這主要有兩部分:首先,乙個稱為input gate layer的sigmoid layer決定哪些值我們需要更新;然後,乙個tanh layer建立了乙個新的候選值向量,它可以被加在state上。在接下來的一步中,我們會結合這兩者來建立乙個update來更新 state。

在語言模型例子中可以這樣解釋,我們想要把新主體的性別加在cell state上,來替換應該被遺忘的舊的主體性別。

第三步:

現在是時候更新舊的cellstate 到新的cell state 了。我們將舊的 state乘上乙個,遺忘掉之前決定遺忘的資訊;然後加上,這是新的候選值,按照我們決定的更新方法進行縮放。

在語言模型例子,我們現在確實刪掉了舊的主體性別,然後加入了新的資訊。

第四步:

最後,我們需要決定輸出什麼。這個輸出是基於cell state的,但是是乙個過濾後的版本。首先,我們執行乙個sigmoid layer,用來決定哪些部分的cell state我們將會輸出;然後,將cell state通過tanh(為了將值變為[-1, 1]之間),並乘上sigmoid layer的輸出,這樣就可以只輸出我們決定輸出的內容了。

在語言模型中,由於模型剛剛發現了乙個主體,它可能想要輸出乙個動詞相關的資訊,因為那個動詞可能就是下乙個輸出。比如它可能輸出主體是單數還是複數,這樣就可以知道如果這就是輸出的話,動詞應該用什麼形式。

理解LSTM網路

傳統的神經網路不能做到這一點,這似乎是乙個主要的缺點。例如,假設您想要對電影中每個點發生的事件進行分類。目前尚不清楚傳統神經網路如何利用其對電影中先前事件的推理來得出後面的事件。迴圈神經網路解決了這個問題。它們是帶有迴圈的網路,允許資訊持續存在。在上圖中,神經網路結構 a 通過一些輸入 xt 並輸出...

通俗理解 LSTM網路

簡單來說,lstm通過一條主線,三個門來處理序列資訊 每個時刻主線上都會加入新時刻的資料,然後將主線上的上的資料輸出並傳遞給下時刻 這裡對lstm常用到的幾個計算和函式做乙個說明 sigmoid函式 用於輸出乙個0 1的概率值或比例值,一般搭配乘法運算,用於控制資訊傳遞的比例,同時sigmoid的非...

lstm原理 長短期記憶網路LSTM

上兩小節我們主要講述了迴圈神經網路rnn,但是儘管 rnn 被設計成可以利用歷史的資訊來 當前的決策,例如使用之前出現的單詞來加強對當前單詞的理解,但是 rnn決策的主要還是最後輸入的一些訊號,更早之前的訊號會隨著時間的推遲而變得強度越來越低,它對後續的影響越來越弱。這樣就會給rnn帶來了新的技術挑...