深度學習知識點:LSTM

文章目錄

  • 1.應用現狀
  • 2.發展歷史
  • 3.基本結構
  • 4.LSTM和RNN的差異

1.應用現狀

長短期記憶神經網絡(LSTM)是一種特殊的循環神經網絡(RNN)。原始的RNN在訓練中,隨著訓練時間的加長以及網絡層數的增多,很容易出現梯度爆炸或者梯度消失的問題,導致無法處理較長序列數據,從而無法獲取長距離數據的信息。

LSTM應用的領域包括:文本生成、機器翻譯、語音識別、生成圖像描述和視頻標記等。

  • 2009年, 應用LSTM搭建的神經網絡模型贏得了ICDAR手寫識別比賽冠軍。
  • 2015年以來,在機械故障診斷和預測領域,相關學者應用LSTM來處理機械設備的振動信號。
  • 2016年, 谷歌公司應用LSTM來做語音識別和文字翻譯,其中Google翻譯用的就是一個7-8層的LSTM模型。
  • 2016年, 蘋果公司使用LSTM來優化Siri應用。

2.發展歷史

1997年,Sepp Hochreiter 和 Jürgen Schmidhuber[1]提出了長短期記憶神經網絡(LSTM),有效解決了RNN難以解決的人為延長時間任務的問題,并解決了RNN容易出現梯度消失的問題。

  • 1999年,Felix A. Gers等人[2]發現[1]中提出的LSTM在處理連續輸入數據時,如果沒有重置網絡內部的狀態,最終會導致網絡崩潰。因此,他們在文獻[1]基礎上引入了遺忘門機制,使得LSTM能夠重置自己的狀態。
  • 2000年,Felix A. Gers和Jiirgen Schmidhuber[3]發現,通過在LSTM內部狀態單元內添加窺視孔(Peephole)連接,可以增強網絡對輸入序列之間細微特征的區分能力。
  • 2005年,Alex Graves和Jürgen Schmidhuber[4]在文獻[1] [2] [3]的基礎上提出了一種雙向長短期記憶神經網絡(BLSTM),也稱為vanilla LSTM,是當前應用最廣泛的一種LSTM模型。
  • 2005年-2015年期間,相關學者提出了多種LSTM變體模型,此處不多做描述。
  • 2016年,Klaus Greff 等人[5]回顧了LSTM的發展歷程,并比較分析了八種LSTM變體在語音識別、手寫識別和弦音樂建模方面的能力,實驗結果表明這些變體不能顯著改進標準LSTM體系結構,并證明了遺忘門和輸出激活功能是LSTM的關鍵組成部分。在這八種變體中,vanilla LSTM的綜合表現能力最佳。另外,還探索了LSTM相關超參數的設定影響,實驗結果表明學習率是最關鍵的超參數,其次是網絡規模(網絡層數和隱藏層單元數),而動量梯度等設置對最終結果影響不大。
  • 在GRU被提出后,Junyoung Chung等人[6]比較了LSTM和GRU在復音音樂和語音信號建模方面的能力,實驗結果表明GRU和LSTM表現相當。
  • GRU被提出至今(2019年),也只有幾年時間,關于它的一些應用利弊到目前還未探索清楚。不過,相對于LSTM架構,GRU的的參數較少,在數據量較大的情況下,其訓練速度更快。
  • LSTM是深度學習技術中的一員,其基本結構比較復雜,計算復雜度較高,導致較難進行較深層次的學習,例如谷歌翻譯也只是應用7-8層的LSTM網絡結構。另外,在訓練學習過程中有可能會出現過擬合,可以通過應用dropout來解決過擬合問題(這在Keras等框架中均有實現。
  • LSTM在當前應用比較的結構是雙向LSTM或者多層堆疊LSTM,這兩種結構的實現在Keras等框架中均有對應的API可以調用。
    下圖展示一個堆疊兩層的LSTM結構圖
    在這里插入圖片描述
    下圖展示了一個雙向LSTM的結構圖
    在這里插入圖片描述

3.基本結構

本節首先回顧一下RNN的基本結構,然后說明LSTM的具體原理(下面要介紹的LSTM即為vanilla LSTM)。
原始的RNN基本結構圖如下圖所示。
在這里插入圖片描述
由上圖可知,RNN展開后由多個相同的單元連續連接。但是,RNN的實際結構確和上圖左邊的結構所示,是一個自我不斷循環的結構。即隨著輸入數據的不斷增加,上述自我循環的結構把上一次的狀態傳遞給當前輸入,一起作為新的輸入數據進行當前輪次的訓練和學習,一直到輸入或者訓練結束,最終得到的輸出即為最終的預測結果。
LSTM是一種特殊的RNN,兩者的區別在于普通的RNN單個循環結構內部只有一個狀態。而LSTM的單個循環結構(又稱為細胞)內部有四個狀態。相比于RNN,LSTM循環結構之間保持一個持久的單元狀態不斷傳遞下去,用于決定哪些信息要遺忘或者繼續傳遞下去。
包含三個連續循環結構的RNN如下圖,每個循環結構只有一個輸出:
在這里插入圖片描述
包含三個連續循環結構的LSTM如下圖,每個循環結構有兩個輸出,其中一個即為單元狀態:
在這里插入圖片描述
一層LSTM是由單個循環結構結構組成,既由輸入數據的維度和循環次數決定單個循環結構需要自我更新幾次,而不是多個單個循環結構連接組成,即當前層LSTM的參數總個數只需計算一個循環單元就行,而不是計算多個連續單元的總個數。
下面將由一組圖來詳細解釋LSTM細胞的基本組成和實現原理。LSTM細胞由遺忘門、輸入門、輸出門和單元狀態組成。

  • 遺忘門( f t f_t ft?):決定上一時刻的單元狀態有多少需要保留到當前時刻。 (清理記憶垃圾,只保留考試相關內容)
  • 輸入門( i t i_t it?): 更新門決定了當前時刻有多少新的信息要被存儲到單元狀態中。(吸收新重點,加入到當前記憶)
  • 輸出門( o t o_t ot?):控制當前單元狀態有多少需要輸出到當前的輸出值。(考試時根據題目提取相關知識點作答)

更通俗的解釋:

  1. 遺忘門 (Forget Gate)

    功能:決定過去的信息中哪些需要保留,哪些需要丟棄。
    ? 比喻:遺忘門像你的大腦在復習時選擇丟棄的內容。例如,高數考試時你已經知道某些知識點不會考(如緒論部分),于是選擇不再復習這些內容。
    ? 原理:根據當前輸入(考試重點提示)和過去的記憶(已掌握的知識)評估重要性,決定哪些內容不再需要(權值接近 0 的部分被遺忘)。

  2. 輸入門 (Input Gate)

    功能:決定當前時刻有多少新的信息需要被記住并加入到記憶中。
    ? 比喻:輸入門像你的大腦在吸收新的知識。例如,在老師講解考試重點時,你決定哪些內容是需要認真記憶的重點。
    ? 原理:根據當前的輸入(老師強調的重點)和上下文評估新信息的價值,選擇性地將有用信息寫入到記憶中。

  3. 輸出門 (Output Gate)

    功能:決定當前單元狀態中的多少內容需要被輸出,用于生成當前時刻的輸出值。
    ? 比喻:輸出門像你在考試答題時的記憶提取過程。例如,考試時你只需要提取與題目相關的知識點,而不需要將整本書的內容全部回憶出來。
    ? 原理:基于單元狀態(你儲存的知識)和當前輸入(具體的考試題目)決定需要輸出的信息量。

下圖展示了應用上一個時刻的輸出 h t ? 1 h_{t-1} ht?1?和當前的數據輸入 x t x_t xt?,通過遺忘門得到 f t f_t ft?的過程。

在這里插入圖片描述
下圖展示了應用上一個時刻的輸出 h t ? 1 h_{t-1} ht?1?和當前的數據輸入 x t x_t xt?,通過輸入門得到 i t i_t it?,以及通過單元狀態得到當前時刻暫時狀態 C ~ t \tilde{C}_t C~t?的過程。
在這里插入圖片描述
下圖展示了應用上一個細胞結構的單元狀態 C t ? 1 C_{t-1} Ct?1?、遺忘門輸出 f t f_t ft?、輸入門輸出 i t i_t it?以及單元狀態的輸出 C ~ t \tilde{C}_t C~t?,得到當前細胞的狀態 C t C_t Ct?的過程。
在這里插入圖片描述
下圖展示了應用上一個時刻的輸出 h t ? 1 h_{t-1} ht?1?和當前的數據輸入 x t x_t xt?,通過輸出門得到 o t o_t ot?的過程,以及結合當前細胞的單元狀態 C t C_t Ct? o t o_t ot?得到最終的輸出 h t h_t ht?的過程。
在這里插入圖片描述
看看里面的步驟
解釋

  • 三個 σ \sigma σ代表三個門,其輸入均有上一層的隱藏狀態 h t h_t ht?以及輸入數據 x t x_t xt?
  • g t g_t gt? = C ~ t \tilde{C}_t C~t?
  • 其他參數: W W W初始化權重, b b b偏置向
  • c t ? 1 c_{t-1} ct?1?在經歷過一次乘法和一次加法后的流動方向有兩個:一個是直接輸出,另一個是經過 t a n h tanh tanh后和 o t o_t ot?匯合輸出 h t h_t ht?
  • h t h_t ht?也有兩個流向:一個是流到下一個時刻,另一個是輸出 y t = W y h h t + b y y_t = W_{yh}h_t + b_y yt?=Wyh?ht?+by?
    在這里插入圖片描述

4.LSTM和RNN的差異

RNN:把所有信息都記住,不管有用的沒用的。
LSTM:設計一個記憶細胞,具備選擇性記憶的功能,可以選擇記憶重要信息,過濾掉噪聲信息,減輕記憶負擔,解決了RNN上的問題:梯度爆炸和梯度消失
通俗講差異:在期末復習周的時候,比如要考高數,老師已經給劃定了重點,RNN還是會把整本書復習一遍,這會導致記憶負擔重,會遺忘掉一些重要的信息,導致記憶效果差;而LSTM過濾掉了不考的信息,只記重點
名詞解釋
???????梯度消失:
??????????????現象:在訓練過程中,反向傳播時梯度逐漸變小,導致網絡的早期層權重更新很少甚至停滯,使模型無法捕捉長期 ?????????????????????依賴的信息。
??????????????原因:在時間序列長度較長的情況下,RNN 的反向傳播會涉及到多次鏈式求導(如 ? L ? W \frac{\partial L}{\partial W} ?W?L?中的鏈式規則)。如果激活 ?????????????????????函數的導數值小于 1(如 sigmoid),會使得梯度逐步衰減,最終趨近于 0。
???????梯度爆炸:
??????????????現象:在訓練過程中,反向傳播時梯度逐漸變大,導致權重更新幅度過大,模型失控。
??????????????原因:與梯度消失類似,但激活函數導數值較大(或權重初始化不當)會導致梯度不斷放大。

參考文獻

[1] S. Hochreiter and J. Schmidhuber, “Long Short-Term Memory,” Neural Comput, vol. 9, no. 8, pp. 1735–1780, Nov. 1997.

[2] F. A. Gers, J. Schmidhuber, and F. A. Cummins, “Learning to Forget: Continual Prediction with LSTM,” Neural Comput., vol. 12, pp. 2451–2471, 2000.

[3] F. A. Gers and J. Schmidhuber, “Recurrent nets that time and count,” Proc. IEEE-INNS-ENNS Int. Jt. Conf. Neural Netw. IJCNN 2000 Neural Comput. New Chall. Perspect. New Millenn., vol. 3, pp. 189–194 vol.3, 2000.

[4] A. Graves and J. Schmidhuber, “Framewise phoneme classification with bidirectional LSTM and other neural network architectures,” Neural Netw., vol. 18, no. 5, pp. 602–610, Jul. 2005.

[5] K. Greff, R. K. Srivastava, J. Koutník, B. R. Steunebrink, and J. Schmidhuber, “LSTM: A Search Space Odyssey,” IEEE Trans. Neural Netw. Learn. Syst., vol. 28, no. 10, pp. 2222–2232, Oct. 2017.

[6] J. Chung, C. Gulcehre, K. Cho, and Y. Bengio, “Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling,” ArXiv14123555 Cs, Dec. 2014.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65787.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65787.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65787.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mmdet

一,configs/_base_ 1.default_runtime.py 2.schedule_1x.py 二,mmdet 1.datasets/coco.py/CocoDataset METAINFO {classes:(milk, red, spring, fanta, sprite, pepsi, king, ice, cola, scream ),# palette is a list of color tuples, which is us…

ElasticSearch 認識和安裝ES

文章目錄 一、為什么學ElasticSearch?1.ElasticSearch 簡介2.ElasticSearch 與傳統數據庫的對比3.ElasticSearch 應用場景4.ElasticSearch 技術特點5.ElasticSearch 市場表現6.ElasticSearch 的發展 二、認識和安裝ES1.認識 Elasticsearch(簡稱 ES)2.El…

node.js中實現token的生成與驗證

Token(令牌)是一種用于在客戶端和服務器之間安全傳輸信息的加密字符串。在Web開發中,Token常用于身份驗證和授權,確保用戶能夠安全地訪問受保護的資源。 作用與意義 身份驗證:Token可以用來驗證用戶的身份&#xff0…

第34天:安全開發-JavaEE應用反射機制攻擊鏈類對象成員變量方法構造方法

時間軸: Java反射相關類圖解: 反射: 1、什么是 Java 反射 參考: https://xz.aliyun.com/t/9117 Java 提供了一套反射 API ,該 API 由 Class 類與 java.lang.reflect 類庫組成。 該類庫包含了 Field 、 Me…

Django后端相應類設計

通用的ApiResponse類:用于生成統一的 API 響應格式。每個響應都包含以下字段(每個接口最終的返回數據格式): status_code:HTTP 狀態碼(如 200、400、500 等)message:響應的描述信息…

汽車基礎軟件AutoSAR自學攻略(三)-AutoSAR CP分層架構(2)

汽車基礎軟件AutoSAR自學攻略(三)-AutoSAR CP分層架構(2) 下面我們繼續來介紹AutoSAR CP分層架構,下面的文字和圖來自AutoSAR官網目前最新的標準R24-11的分層架構手冊。該手冊詳細講解了AutoSAR分層架構的設計,下面讓我們來一起學習一下。 Introductio…

css面試常考布局(圣杯布局、雙飛翼布局、三欄布局、兩欄布局、三角形)

兩欄布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

模糊查詢在sqlserver、dm8、mysql的編寫示例

模糊查詢要求&#xff1a;字段值以 25D 開頭&#xff0c;并以 4 位數字結尾 sqlserver&#xff1a; select * from table_name where column_name like 25D[0-9][0-9][0-9][0-9] 說明&#xff1a; 25D&#xff1a;表示字符串以 25D 開頭。 [0-9][0-9][0-9][0-9]&#xf…

SCTNet模型詳解及代碼復現

模型背景 隨著深度學習技術的發展,語義分割領域取得了顯著進展。然而,在實際應用中,特別是在實時場景下,現有模型往往面臨計算復雜度高、難以平衡精度和速度等問題。為應對這些挑戰,研究人員提出了SCTNet模型,旨在解決實時語義分割問題,同時兼顧精度和效率。該模型融合…

Python的循環

Python的循環 Python的循環有兩種&#xff0c;分別是for…in循環和while循環。 for…in 循環 假設我們要循環輸出一個列表里的元素&#xff1a; names [張三,李四,王五] for name in names:print(name)執行這段代碼后&#xff0c;會依次打印names的每一個元素&#xff1a;…

【0387】Postgres內核 streaming replication(流復制)工作原理

1. Postgres 流復制 本文是關于設置 PostgreSQL 版本流復制的簡明指南,力求盡可能不受平臺限制。故而,其假定您擁有運用操作系統工具編輯文件及安裝/配置軟件包的扎實知識。并且,還假定您熟悉 PostgreSQL 的配置情況。 PostgreSQL 內置的流復制為您的數據庫構建了一個服務…

網絡攻擊行為可視化分析系統【數據分析 + 可視化】

一、系統背景 隨著信息技術的快速發展&#xff0c;網絡已成為現代社會不可或缺的一部分。然而&#xff0c;與此同時&#xff0c;網絡攻擊手段也日益多樣化和復雜化&#xff0c;給企業和個人的信息安全帶來了極大的威脅。傳統的網絡攻擊分析方法往往依賴于人工分析和處理大量的…

利用obs studio制作(人像+屏幕)錄制影像

1.什么是obs? OBS&#xff08;Open Broadcaster Software&#xff09;是一款功能強大的開源軟件&#xff0c;它使用戶能夠直接從電腦錄制視頻和直播內容到 Twitch&#xff0c;YouTube 和 Facebook Live 等平臺。它在需要直播或錄制屏幕活動的游戲玩家、YouTube 用戶和專業人士…

蠕蟲病毒會給服務器造成哪些危害?

蠕蟲病毒是一種獨立的惡意計算機程序&#xff0c;可以進行自我復制來傳播到其他的計算機系統當中&#xff0c;蠕蟲病毒和傳統病毒之間是有著區別的&#xff0c;蠕蟲病毒不需要宿主程序就能夠自行傳播&#xff0c;主要是利用各種操作系統漏洞進行攻擊的。 接下來小編就介紹一下蠕…

C# GDI+的DrawString無法繪制Tab鍵的現象

【啰嗦2句】 現在用C#的人很少了吧&#xff1f;GDI更少了吧&#xff1f;所以這個問題估計也冷門。沒關系&#xff0c;分享給特定需要的人也不錯。 【問題現象】 工作中開發了一個報告編輯器&#xff0c;實現圖文排版等功能&#xff0c;用著沒什么問題&#xff0c;直到有一天…

互斥信號量的等待與通知

目錄 等待互斥信號量 信號量未被占用 信號量被自己占用 信號量被高優先級任務占用 信號量被低優先級任務占用 釋放互斥信號量 未發生優先級繼承 發生優先級繼承 等待互斥信號量 信號量未被占用 標記為已經被占用鎖定計數1 信號量被自己占用 鎖定計數1 信號量被高優先級任務占用…

夯實前端基礎之HTML篇

知識點概覽 HTML部分 1. DOM和BOM有什么區別&#xff1f; DOM&#xff08;Document Object Model&#xff09; 當網頁被加載時&#xff0c;瀏覽器會創建頁面的對象文檔模型&#xff0c;HTML DOM 模型被結構化為對象樹 用途&#xff1a; 主要用于網頁內容的動態修改和交互&…

Qt資源文件以及文件加密

1、Qt資源文件 在Qt中&#xff0c;資源文件&#xff08;.qrc&#xff09;是一種方便的方式來管理應用程序中的多媒體文件&#xff0c;如圖像、圖標和其他資源。這些文件使用XML格式定義&#xff0c;并在編譯時嵌入到應用程序的二進制文件中。 創建資源文件的步驟如下&#xff…

深入詳解人工智能自然語言處理(NLP)之文本處理:分詞、詞性標注、命名實體識別

【自然語言處理】——深入詳解人工智能自然語言處理&#xff08;NLP&#xff09;之文本處理&#xff1a;分詞、詞性標注、命名實體識別 自然語言處理&#xff08;Natural Language Processing&#xff0c;簡稱NLP&#xff09;是人工智能的一個重要分支&#xff0c;涉及如何使計…

SD ComfyUI工作流 老照片修復上色

文章目錄 老照片修復上色SD模型Node節點工作流程開發與應用效果展示老照片修復上色 該工作流專門設計用于老照片的修復和上色,通過一系列高級的圖像處理技術,包括深度圖預處理、面部修復、上色和圖像放大等步驟,來恢復老照片的質量并增加色彩。首先,工作流加載老照片并進行…