理解LSTM網路

2021-10-03 18:07:45 字數 3192 閱讀 5143

傳統的神經網路不能做到這一點,這似乎是乙個主要的缺點。例如,假設您想要對電影中每個點發生的事件進行分類。目前尚不清楚傳統神經網路如何利用其對電影中先前事件的推理來得出後面的事件。

迴圈神經網路解決了這個問題。它們是帶有迴圈的網路,允許資訊持續存在。

在上圖中,神經網路結構 a 通過一些輸入 xt 並輸出乙個值 ht。迴圈允許資訊從網路的乙個步驟傳遞到下乙個步驟。

這些迴圈使得迴圈神經網路看起來有點神秘。但是,如果你多想一點,事實證明它們與普通的神經網路並沒有什麼不同。可以將迴圈神經網路視為同一網路的多個副本,每個副本都將訊息傳遞給後繼者。考慮如果我們展開迴圈會發生什麼:

這種類似鏈的性質表明,遞迴神經網路與序列和列表密切相關。它們是用於此類資料的神經網路的自然架構。

他們肯定會被使用!在過去幾年中,將rnn應用於各種問題取得了令人難以置信的成功:語音識別,語言建模,翻譯,影象識別……這個列表還在繼續。我將不展開討論使用rnns可以實現的驚人壯舉,以及andrej karpathy的優秀部落格文章,回歸神經網路的不合理有效性。但他們真的很棒。

這些成功的關鍵在於使用「lstm」,這是一種非常特殊的遞迴神經網路,對於許多任務而言,它比標準版本好得多。幾乎所有基於遞迴神經網路的令人興奮的結果都是用它們實現的。這篇**將**這些lstm。

有時,我們只需要通過很近的資訊來得到當前任務。例如,考慮一種語言模型,試圖根據之前的單詞**下乙個單詞。如果我們試圖** 「the clouds are in the sky」 的最後乙個詞,我們不需要任何進一步的背景 - 很明顯下乙個詞將是 「sky」。在這種情況下,如果相關資訊與所需資訊之間的距離很小,則rnn可以學習使用過去的資訊。

但也有一些情況需要更多的背景知識。考慮嘗試**文字中的最後乙個詞「我在法國長大……我說流利的法語。」最近的資訊表明,下乙個詞可能是一種語言的名稱,但如果我們想縮小哪種語言,我們需要從更進一步的背景來看,法國的背景。相關資訊之間距離很大是完全可能的。

不幸的是,隨著距離的擴大,rnn無法學習連線資訊

理論上,rnn絕對能夠處理這種「長期依賴性」。人類可以仔細挑選引數來解決這種形式的玩具問題。遺憾的是,在實踐中,rnn似乎無法學習它們。 hochreiter和bengio等人對該問題進行了深入**。他們找到了一些非常根本的原因來說明為什麼它可能很難。

值得慶幸的是,lstm結構不存在這個問題!

長短期記憶網路 - 通常只稱為「lstm」 - 是一種特殊的rnn,能夠學習長期依賴性。它們是由hochreiter和schmidhuber提出的.它在各種各樣的問題上都表現得非常好,現在被廣泛使用。

lstm明確旨在解決長期依賴性問題。長時間記住資訊實際上是他們的預設行為,而不是他們難以學習的東西!

所有遞迴神經網路都具有乙個迴圈體。在標準rnn中,該迴圈體將具有非常簡單的結構,例如單個tanh層。

lstm也具有迴圈體,但迴圈體具有不同的結構。它由四個被稱為門的結構組成,而不是乙個簡單的tanh,並以一種非常特殊的方式進行互動。

不要擔心發生了什麼的細節。我們將逐步介紹lstm圖。現在,讓我們試著理解我們將要使用的符號。

在上圖中,每條線都攜帶乙個整個向量,從乙個節點的輸出到其他節點的輸入。粉色圓圈表示逐位運算,如向量加法,而黃色框表示簡單的神經網路結構。行合併表示連線,而行分叉表示其內容被複製,副本將轉移到不同的位置。

lstm的關鍵是單元狀態,水平線貫穿圖的頂部。

單元狀態有點像傳送帶。它直接沿著整個鏈執行,只有一些次要的線**互。資訊很容易沿著它不變地流動。

lstm能夠通過被稱為門的結構來移除或新增資訊到單元狀態。

門是一種可選擇通過資訊的方式。它們由sigmoid神經網路層和逐位乘法運算組成。

sigmoid層輸出0到1之間的數字,描述每個元件應該通過多少資訊。值為零意味著「不讓任何資訊通過」,而值為1則意味著「讓一切都通過!

lstm具有三個這樣的門,用於保護和控制單元狀態。

lstm的第一步是確定我們將從單元狀態中丟棄哪些資訊。該判定由稱為「遺忘門層」的sigmoid層來進行。它輸入ht-1和xt,並在單元狀態ct-1中為每個數字輸出乙個0到1之間的數字。 1代表「完全保留這個」,而0代表「完全丟棄這個」。

讓我們回到之前提到的試圖根據以前的所有單詞**下乙個單詞的那個語言模型的示例。在這樣的問題中,單元狀態可能包括當前受試者的性別,因此可以使用正確的代詞。當我們看到乙個新受試者時,我們想要忘記舊受試者的性別。

下一步是確定我們將在單元狀態中儲存哪些新資訊。這有兩個部分。首先,稱為「輸入門層」的sigmoid層決定我們將更新哪些值。接下來,tanh層建立可以新增到狀態的新候選值ct的向量。然後,我們將結合他們兩個的結構來建立狀態更新。

在我們的語言模型的例子中,我們想要將新受試者的性別新增到單元狀態中,以替換我們需要忘記的舊受試者。

現在是時候將舊的單元狀態ct-1更新為新的單元狀態ct。之前的步驟已經決定要做什麼,我們只需要實際做到這一點。

我們將舊狀態逐位乘以ft,忘記我們之前的步驟中決定忘記的內容。然後我們把它和it * ct相加。這是新的狀態。

在語言模型的情況下,我們實際上丟棄了關於舊主題的性別的資訊並新增新資訊,正如我們在前面的步驟中所做的那樣。

最後,我們需要決定我們要輸出的內容。此輸出將基於我們的單元狀態,但將是被過濾的版本。首先,我們執行乙個sigmoid層,它決定我們要輸出的單元狀態的哪些部分。然後,我們將單元狀態通過tanh(將值變到-1和1之間)並將其乘以sigmoid門的輸出,這樣我們只輸出我們決定輸出的部分。

到目前為止我所描述的是乙個非常常規的lstm。但並非所有lstm都與上述相同。事實上,似乎幾乎所有涉及lstm的**都使用略有不同的版本。差異很小,但值得一提。

早些時候,我提到了人們使用rnn取得的顯著成果。基本上所有這些都是使用lstm實現的。對於大多數任務來說,它們確實工作得更好!

寫下來作為一組方程式,lstm看起來非常令人生畏。希望在這篇文章中逐步走過它們,使它們更加平易近人。

lstm是我們通過rnn實現的重要一步。很自然地想知道:還有另乙個重要的步驟嗎?研究人員普遍認為:「是的!下一步是它的注意力!「我們的想法是讓rnn的每一步都從一些更大的資訊集中選擇資訊。例如,如果您使用rnn建立描述影象的標題,則可能會選擇影象的一部分來檢視其輸出的每個單詞。實際上,徐等人做到這一點,如果你想探索注意力,它可能是乙個有趣的起點!使用注意力已經取得了許多非常令人興奮的結果,而且似乎還有很多事情即將來臨……

注意力不是rnn研究中唯一激動人心的線索。例如,kalchbrenner等人的grid lstms似乎非常有希望。在生成模型中使用rnn的工作似乎也很有趣。過去幾年對於遞迴神經網路來說是乙個激動人心的時刻,即將到來的神經網路只會更加激動人心!

理解LSTM網路

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

通俗理解 LSTM網路

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

lstm原理 長短期記憶網路LSTM

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