Long Short Term Memory networks (LSTM)


Abstract

  • 聲明:本文只爲我閒暇時候學習所做筆記,僅供我無聊時複習所用,若文中有錯,誤導了讀者,敬請諒解!!!
  • 參見我的語雀: Long Short Term Memory networks (LSTM)

循環神經網絡(Recurrent Neural Networks)

人類不是從零開始思考的。當你讀這篇文章時,你根據你對以前單詞的理解來理解每個單詞。你不會扔掉所有東西,重新開始思考。你的思想是堅持的。


傳統的神經網絡不能做到這一點,這似乎是一個重大的缺點。例如,假設您要對影片中每個點發生的事件進行分類。目前還不清楚傳統神經網絡如何利用它對電影中先前事件的推理來告知以後的事件。


循環神經網絡解決了這個問題。它們是具有循環的網絡,允許信息持久化。

循環神經網絡具有環路
**
在上圖中,神經網絡的一塊_A_,查看一些輸入_Ⅹ_t 並輸出值 ht. 循環允許信息從網絡的一個步驟傳遞到下一個步驟。


這些循環使循環神經網絡看起來有點神祕。但是,如果您想得更多一些,結果證明它們與普通神經網絡沒有完全不同。可認爲循環神經網絡是同一網絡的多個副本,每個副本將消息傳遞給後續網絡。考慮如果我們展開循環會發生什麼情況:

展開的循環神經網絡


這種鏈狀性質揭示了循環神經網絡與序列和列表密切相關。它們是用於此類數據的神經網絡的自然體系結構。


他們肯定被使用!在過去幾年中,將RNN應用於各種問題取得了令人難以置信的成功:語音識別、語言建模、翻譯、圖像字幕…列表繼續。我將離開討論驚人的壯舉,人們可以實現與RNN安德烈·卡帕西的優秀博客文章,經常性神經網絡的不合理有效性(The Unreasonable Effectiveness of Recurrent Neural Networks)。但是他們真的非常驚人。


這些成功的關鍵是使用"LSTM",這是一種非常特殊的循環神經網絡,對於許多任務來說,它比標準版本好得多。幾乎所有基於循環神經網絡的令人興奮的結果都是通過它們實現的。本文將探討這些 LSTM。

長期依賴性問題(The Problem of Long-Term Dependencies)

**
RNN 的吸引力之一是,它們可能能夠將以前的信息連接到當前任務,例如使用以前的視頻幀可能會告知對當前幀的理解。如果RNN能夠做到這一點,它們將會非常有用。但是他們能嗎?視情況而定。

有時,我們只需要查看最近的信息來執行當前任務。例如,考慮一個語言模型,嘗試基於前面的單詞預測下一個單詞。如果我們試圖預測"“the clouds are in the sky”我們不需要任何進一步的上下文——很明顯,下一個詞將是“sky”。在這種情況下,如果相關信息與所需位置之間的差距很小,RNN 可以學習使用過去的信息。




但也有一些情況下,我們需要更多的背景。考慮嘗試預測文本中的最後一個詞"我在法國長大…我會說流利_的法語。_最近的信息表明,下一個單詞可能是一種語言的名稱,但如果我們想要縮小哪種語言的範圍,我們需要法國的背景,從更遠的背面。相關信息與需要變得非常大的點之間的差距是完全可能的。


不幸的是,隨着這種差距的擴大,RN無法學習連接信息。




從理論上講,RN絕對能夠處理這種"長期依賴關係"。人類可以仔細挑選參數,以解決這種形式的玩具問題。可悲的是,在實踐中,RNN似乎無法學習它們。霍赫雷特(1991年)[德國]本吉奧等人(1994年)深入探討了這個問題,他們發現了一些相當基本的原因,爲什麼它可能是困難的。


謝天謝地,LSTM 沒有此問題!

LSTM 網絡(LSTM Networks)

Long Short Term Memory networks(通常簡稱爲"LSTM")是一種特殊的RNN,能夠學習長期依賴關係。它們由霍奇賴特和施密德胡伯(1997年)介紹,並在後續工作中被許多人提煉和推廣。它們在各種問題上工作得非常好,現在得到了廣泛的應用。


LSTM 明確設計爲避免長期依賴問題。長期記住信息實際上是他們的默認行爲,而不是他們難以學習的東西!


所有循環神經網絡都具有神經網絡重複模塊鏈的形式。在標準 RNN 中,此重複模塊將具有非常簡單的結構,例如單個 tanh 層。





準 RNN 中的重複模塊包含單個層。
LSTM 也有這種鏈狀結構,但重複模塊具有不同的結構。而不是有一個單一的神經網絡層,有四個,以一種非常特殊的方式交互。




LSTM 中的重複模塊包含四個交互層。
不要擔心事情的細節。稍後我們將逐步介紹 LSTM 圖。現在,讓我們試着去適應我們將使用的記號法。




在上圖中,每行都攜帶一個完整的矢量,從一個節點的輸出到其他節點的輸入。粉紅色圓圈表示按點操作,如矢量加法,而黃色框是學習神經網絡圖層。行合併表示串聯,而行分叉表示要複製的內容和副本進入不同位置。

LSTM 背後的核心理念(The Core Idea Behind LSTMs)

LSTM 的關鍵是單元格狀態,即貫穿關係圖頂部的水平線。


細胞狀態有點像傳送帶。它直線貫穿整個鏈,只有一些輕微的線性相互作用。信息很容易隨信息一直流動不變。





LSTM 確實能夠刪除或向細胞狀態添加信息,由稱爲門的結構仔細調節。


蓋茨是一種讓信息通過的方式。它們由 sigmoid 神經網絡層和點乘法組成。





sigmoid 層輸出介於零和一之間的數字,描述每個組件應允許通過多少。值爲零表示"不放過任何東西",而值值爲 1 表示"讓一切通過!


LSTM 具有三個這些門,用於保護和控制細胞狀態。

分步 LSTM 演練(Step-by-Step LSTM Walk Through)

我們的 LSTM 的第一步是決定我們將從單元格狀態中丟棄哪些信息。此決策由稱爲"忘記門層"的 sigmoid 層做出。它看起來,並輸出一個介於0和1對於單元格狀態中的每個數字表示"完全保留這一點",而0表示"完全擺脫這一點"。


讓我們回到我們的語言模型的例子,該模型嘗試基於前面的所有單詞預測下一個單詞。在此類問題中,單元格狀態可能包括當前主題的性別,以便可以使用正確的代詞。當我們看到一個新的主題,我們想忘記舊主題的性別。


下一步是決定我們將在單元格狀態中存儲哪些新信息。這有兩個部分。首先,稱爲"輸入門層"的 sigmoid 層決定我們將更新哪些值。接下來,tanh 圖層將創建一個新的候選值的矢量,,可以添加到狀態。在下一步中,我們將合併這兩個狀態以創建狀態的更新。


在我們的語言模型示例中,我們希望將新主體的性別添加到單元格狀態,以替換我們忘記的舊主題。





現在是時候更新舊的單元格狀態了,,進入新的單元格狀態前面的步驟已經決定了該做什麼,我們只需要實際完成。


我們把舊狀態乘以 忘記我們決定忘記的事情。然後我們添加 這是新的候選值,根據我們決定更新每個狀態值的多少進行縮放。


在語言模型中,正如我們在前面的步驟中決定的那樣,我們實際上將丟棄有關舊主題的性別的信息並添加新信息。







最後,我們需要決定要輸出的內容。此輸出將基於我們的單元格狀態,但將是一個篩選的版本。首先,我們運行一個 sigmoid 層,它決定要輸出的單元格狀態的哪些部分。然後,我們把細胞狀態通過坦赫坦赫(將值推到•1和1),並將其乘以 sigmoid 門的輸出,以便我們只輸出我們決定的零件。


對於語言模型示例,因爲它只看到一個主題,它可能需要輸出與謂詞相關的信息,以防接下來出現這種情況。例如,它可能會輸出主題是單數還是複數,以便我們知道動詞應該結合成什麼形式,如果這是接下來的事情。





長期短期記憶的變體(Variants on Long Short Term Memory)

**到目前爲止,我所描述的是一個相當正常的LSTM。但並非所有的 LSTM 都與上述相同。事實上,幾乎所有涉及 LSTM 的論文似乎都使用稍有不同的版本。差異很小,但值得一提的是其中一些。


Gers & Schmidhuber (2000)推出的一個流行的 LSTM 變體是添加"窺孔連接"。這意味着我們讓門層查看單元格狀態。





上圖增加了所有門的窺視孔,但許多文件會給出一些窺視孔,而不是其他。


另一個變體是使用耦合忘記和輸入門。我們不是單獨決定忘記什麼,我們應該向哪些內容添加新信息,而是一起做出這些決定。我們只忘記當我們要輸入的東西,它的地方。我們僅在忘記舊事物時才向狀態輸入新值。


LSTM 的一個稍微更顯著的變化是Cho 等人(2014 年)引入的封閉循環單元(GRU)。它將忘記和輸入門合併到一個"更新門"中。它還合併單元格狀態和隱藏狀態,並進行一些其他更改。生成的模型比標準 LSTM 模型更簡單,並且越來越受歡迎。

這些只是幾個最顯著的 LSTM 變體。還有很多其他,如深度門RNN由姚等人(2015年)。也有一些完全不同的方法來解決長期依賴,如時鐘工作RNN由Koutnik等人(2014年)。


這些變體中哪一個最好?差異重要嗎?Greff等人(2015年)對流行的變種做了很好的比較,發現它們都是一樣的。Jozefowicz等人(2015年)測試了一萬多個RNN架構,發現一些在某些任務中比LSTM效果更好。

結論(Conclusion)

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


作爲一組方程,LSTM 看起來相當嚇人。希望,在這篇文章中一步一步地走過它們,讓他們更加平易近人。


LSTM 是我們能夠在 RNN 上實現的一大步。很自然地想知道:還有一大步嗎?研究人員的一個普遍觀點是:"是的!有下一步,它的關注!其理念是讓 RNN 的每個步驟都從一些較大的信息集合中選取信息。例如,如果使用 RNN 創建描述圖像的標題,則可能會選擇圖像的一部分來查看它輸出的每個單詞。事實上,徐等人(2015年)正是這樣做的——如果你想探索注意力,這可能是一個有趣的起點!有很多真正令人興奮的結果使用注意力,它似乎還有更多是在拐角處…


注意力並不是RNN研究中唯一令人興奮的線索。例如,Kalchbrenner等人(2015年)的網格LSTM似乎非常有前途。在生成模型中使用RNN的工作——如Gregor等人(2015年),鍾等人(2015年),拜耳和奧森多夫(2015年)——似乎也很有趣。過去幾年對於循環神經網絡來說是一個激動人心的時刻,而未來的幾年裏,人們承諾只會更加如此!

致謝(Acknowledgments

我感謝很多人幫助我更好地理解LSTM,評論可視化效果,並提供有關這篇文章的反饋。


我非常感謝我在谷歌的同事,特別是奧里奧爾·維尼亞爾斯,格雷格·科拉多,喬恩·施倫斯,盧克·維爾尼斯伊利亞·蘇茨沃。我也感謝許多其他朋友和同事抽出時間幫助我,包括達里奧·阿莫迪雅各布·斯坦哈特。我特別感謝趙京賢關於我的圖表的非常周到的通信。


在這篇文章之前,我在兩個研討會上練習瞭解釋LSTM,我在神經網絡上教授了。感謝所有參與的人對我耐心,感謝他們的反饋。


除了原作者之外,很多人還爲現代LSTM做出了貢獻。一個非綜合名單是:費利克斯·格斯、弗雷德·康明斯、聖地亞哥·費爾南德斯、賈斯汀·拜耳、丹·維爾斯特拉、朱利安·託格利烏斯、福斯蒂諾·戈麥斯、馬特奧·加格里奧洛和亞歷克斯·格雷夫斯。

參考文獻

[1] Understanding LSTM Networks: http://colah.github.io/posts/2015-08-Understanding-LSTMs/
[2] The Unreasonable Effectiveness of Recurrent Neural Networks: http://karpathy.github.io/2015/05/21/rnn-effectiveness/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章