以上是示意圖,方便理解網絡呈現。其實網絡結構只是上圖左邊的壹小塊。
普通的RNN解決不了需要長期記憶的功能。比如,試著預測“我在法國長大……我說壹口流利的法語”中的最後壹個詞。。最近的信息顯示,下壹個單詞可能是壹種語言的名稱,但如果我們想縮小選擇範圍,我們需要包括“法國”的上下文,並從前面的信息中推斷出下面的單詞。相關信息和預測位置之間的間隔非常大是完全可能的。但是,RNNs沒有辦法解決這個問題。
作為壹種效果良好的遞歸神經網絡,LSTM具有很好的解決長期時間序列問題的能力。
LSTM也有這樣的鏈結構,但其重復模塊內部的機制不同。詳情如下:
解釋四個內部網絡的具體意義。
主要分為:細胞狀態+閾值。
單元狀態:讓信息以恒定的方式向下流動,相當於壹條傳送帶,但是傳送帶上的東西會根據當時的輸入,隨著他經過每壹個重復的模塊而增加或減少。
閾值:有能力對細胞狀態添加或刪除信息的管理組織,相當於在傳送帶上放東西或拿東西的人。這個過程由LSTM的sigmoid函數和乘法加法控制。
上圖通過當前時間的輸入和前壹時間的輸出,將單元格狀態乘以sigmoid函數的輸出。如果sigmoid函數輸出0,這部分信息需要被遺忘,否則,這部分信息將繼續在細胞狀態下被中繼。
閾值功能是更新舊的單元狀態。之前的遺忘閾值層決定了要遺忘或添加什麽信息,這個閾值層實現了這個功能。
最後,我們需要決定我們需要出口什麽。該輸出將基於單元狀態,但是是經過過濾的版本。首先,我們運行壹個sigmoid層來確定單元狀態的哪些部分需要輸出。然後我們把細胞狀態輸入到tanh函數中(把值轉換到-1到1之間),然後乘以輸出sigmoid閾值,這樣我們只輸出我們要輸出的部分。
上面提到的是壹個非常傳統的LSTM網絡。LSTM有許多不同的品種。這裏有壹些。
是使用耦合遺忘和輸入閾值。我們不單獨決定忘記什麽,增加什麽新的信息,而是壹起做決定。只有進入的時候才會忘記。只有當壹些舊的信息被遺忘時,新的值才會被添加到狀態中。
它將遺忘和輸入閾值合並成壹個“更新閾值”。類似地,合並單元格狀態和隱藏狀態,並進行壹些其他更改。得到的模型比越來越流行的標準LSTM模型簡單。