循環神經網絡 - 長短期記憶網絡

在之前的博文中,我們介紹了循環神經網絡的長程依賴問題及改進方案,可以參考:循環神經網絡 - 長程依賴問題及改進方案-CSDN博客

但是改進方案只是可以緩解梯度消失,并不能徹底解決梯度爆炸問題和記憶容量(Memory Capacity)問題。

長短期記憶網絡(Long Short-Term Memory Network,LSTM)是循環神經網絡的一個變體,可以有效地解決簡單循環神經網絡的梯度爆炸或消失問題。

在普通 RNN 中,由于每一步的隱藏狀態只通過簡單的遞歸更新,長時間以來傳遞的梯度可能會迅速消失或爆炸,導致模型無法捕捉長距離依賴。LSTM 通過引入記憶單元 c_t?和門控機制,將信息在時間步之間直接傳遞,且引入了“跳躍”連接(將 c_{t-1} 直接影響 ct 經過線性組合而非多次非線性變換),這樣就能更穩定地傳遞梯度信息,捕捉長程依賴。具體來說:

  • 遺忘門 控制過去的記憶保留程度;

  • 輸入門與候選記憶 決定如何加入新信息;

  • 輸出門 決定如何輸出對后續步驟有用的信息。

這種設計有效減弱了反向傳播過程中梯度消失或爆炸的問題,使得 LSTM 能夠記住和利用長時間跨度中的關鍵信息,這正是許多語言模型、語音處理和其他序列數據任務中的核心需求。

本文,我們來認識長短期記憶網絡的相關概念,探究一下其解決梯度爆炸或消失的原理。

長短期記憶網絡(LSTM)的內部狀態主要指其“記憶細胞”(cell state,通常記為 c_t)以及與之相關的隱藏狀態(hidden state,通常記為 h_t)。這兩個狀態共同決定了 LSTM 如何存儲、傳遞和更新信息,使其能夠捕獲長程依賴。下面通過語言描述 LSTM 內部狀態的構成、更新機制及其關鍵作用。

1. 內部狀態的構成

  • 記憶單元(Cell State c_t?)
    記憶單元是 LSTM 的核心,它像一條傳送帶,沿著整個序列傳遞信息。其主要作用是保持長期信息,并且通過特定的門控機制有選擇地“遺忘”或者“保留”信息。由于這種傳遞過程主要依靠乘法操作(例如和遺忘門 f_t? 相乘),可以在一定程度上減緩梯度消失的問題。

  • 隱藏狀態(Hidden State h_t?)
    隱藏狀態可以被看作是當前時刻對外的輸出,也是在當前時間步經過非線性激活(通常是 tanh?)處理后的記憶狀態。它既包含了長期記憶 c_t?的信息,也反映了對當前輸入的即時響應。隱藏狀態經過輸出門 o_t?的調制之后,是最終傳遞給下一層或后續運算的信號。

2. 內部狀態的更新機制

LSTM 通過三個門來更新內部狀態,它們分別是:

  • 遺忘門(Forget Gate)
    遺忘門決定了保留上一時刻記憶單元 c_{t-1}? 中哪些信息。
    數學表達:

    其中 σ 是 sigmoid 函數,其輸出在 [0,1] 之間。輸出值越接近 1,表示對應維度的信息越應該保留,反之則“遺忘”。

  • 輸入門(Input Gate)
    輸入門決定了當前輸入 x_t? 中哪些新信息以及通過候選記憶 ? 將加入到記憶單元中。
    數學表達:

  • 記憶單元更新
    最后,新的記憶單元 c_t?通過結合遺忘門與輸入門的作用得到更新:

    這里“⊙”表示逐元素相乘。這意味著,上一時刻的記憶經過遺忘門濾波后和新生成的信息按比例混合,從而構成當前的記憶單元。

  • 輸出門(Output Gate)
    輸出門決定了如何從記憶單元中提取信息生成當前的隱藏狀態:

    最終得到隱藏狀態:

3. 舉例說明

設想一個簡單的文本生成任務——例如生成一句話。假設模型需要捕獲長句子中前后字符之間的依賴關系。在處理輸入“今天天氣很好”時:

  • 當模型接收到“今天”時,會在記憶單元 c_t? 中保存與“今天”相關的信息(比如時間概念)。

  • 接下來,當輸入“天氣”時,遺忘門 f_t?控制是否保留“今天”的信息,同時輸入門 i_t? 選擇性地將與“天氣”相關的新特征加入記憶單元。

  • 當進一步輸入“很好”時,記憶單元中的“今天”和“天氣”信息經由輸出門調制,影響最終隱藏狀態 h_t? 的計算,進而幫助模型生成連貫的輸出。

在這個過程中,整個句子中遠距離(“今天”與“很好”之間)的依賴通過記憶單元傳遞,LSTM 的三個門結構允許模型有選擇地更新和維持這些信息。盡管內部使用的激活函數(如 sigmoid 和 tanh?)本身很簡單,但通過逐層的線性變換與非線性激活的復合,LSTM 能夠捕捉和表達復雜的語義依賴關系,支持長程信息的有效傳遞。

4. 關鍵理解

  • 記憶單元 c_t?是信息的長期存儲器,可以跨越多個時間步穩定傳遞關鍵信息。

  • 門控機制(遺忘門、輸入門、輸出門)決定了信息如何在各個時間步之間選擇性地保留或更新。

  • 隱藏狀態 h_t?則是經過記憶單元篩選和調制后的信息,供下一層或下一時間步使用。

5. 對于候選記憶的理解

在長短期記憶網絡(LSTM)中,“候選記憶”指的是在當前時間步下,根據輸入和前一隱藏狀態生成的一組新信息,用來在更新記憶單元時候選加入到長期記憶中的數據。它通常用符號 ? 表示,計算公式為:

這里,表示將前一時刻的隱藏狀態和當前輸入拼接在一起,經過一個線性變換(由權重矩陣 W_c? 和偏置 b_c 定義)后,再通過 tanh? 激活函數映射到區間 [?1,1] 內,就得到了“候選記憶”。

為什么需要候選記憶?

候選記憶的作用在于:

  • 提供新信息的備選項:當前時間步的輸入常常攜帶有新的信息,候選記憶就是對這些新信息的一種初步加工和表示。但新信息不是全部都適合直接加入到長期記憶中。

  • 由輸入門決定是否更新:在 LSTM 中,還有一個輸入門(Input Gate),其計算公式為:

    輸入門 i_t?的值(介于0和1之間)將會與候選記憶逐元素相乘,形成對記憶單元的增量更新:

    這意味著,對于候選記憶中的每個元素,如果輸入門對應的數值較大(接近1),那么該部分候選信息將被更多地寫入到長期記憶;如果較小(接近0),則該部分新信息基本被忽略。

舉例說明

假設你正利用 LSTM 處理一句話:"我愛自然語言處理"。我們來看一下某個時間步的情況:

  1. 前一時刻隱含狀態h_{t-1}
    假設在處理到“愛”這個詞時,隱藏狀態已經捕捉到了前面“我愛”這部分的語義信息,即可以表示為 h_{t-1}?。

  2. 當前輸入 x_t
    當前輸入為“自然語言處理”中某個字符或詞的表示,這個表示包含了與當前新信息相關的語義特征。

  3. 候選記憶計算

    這里,0.8 可能表示當前輸入中對于“自然”這個概念的一個強烈信號,-0.3 表示某些信息的負面特征,而 0.4 表示另一個中等程度的特征。

  4. 輸入門的作用
    同時,輸入門 i_t? 計算出的向量決定了候選記憶哪些部分真正被寫入記憶單元。如果 i_t? 計算得到:

    則實際更新記憶單元的增量就是逐元素相乘:

    這表示,記憶單元在這一時刻將吸收主要來自候選記憶的 0.72 和 0.28 兩個分量,而將 -0.06 的新信息(可視為低權重或噪聲)幾乎忽略掉。

  5. 整體更新
    最終,記憶單元 c_t?的更新會結合上一時刻保留的信息(由遺忘門控制)與這一時刻更新的信息:

    這樣,就構成了 LSTM 內部記憶狀態的動態更新。

  • 候選記憶是對當前輸入與前一隱藏狀態進行線性組合和非線性映射后的“新信息”表示,它代表了當前時刻可以加入到長期記憶中的潛在內容。

  • 輸入門決定最終哪些候選信息真正更新進記憶單元。

  • 舉例中,通過具體向量的生成、輸入門的篩選、以及逐元素相乘,展示了候選記憶如何幫助 LSTM 有選擇地吸收新輸入的信息,從而逐步構建出對長程信息的有效記憶。

? ? ? ?這種設計使得 LSTM 能夠在動態更新中捕捉到句子、語音或其他序列數據中復雜、非線性的長期依賴關系,而候選記憶作為一種臨時的備選信息起到了關鍵作用。

即使網絡中的激活函數和門機制看似簡單,通過不斷的層級組合以及權重參數的學習,LSTM 能在整個序列上捕捉和表達復雜的長期依賴和非線性關系,這正是其在自然語言處理、語音識別、時間序列預測等任務中大放異彩的原因。

這樣的內部狀態設計正是 LSTM 能夠“記住”關鍵信息,同時對無用信息進行“忘記”,從而有效解決傳統 RNN 長程依賴問題的核心所在。

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

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

相關文章

LLM應用開發(七)--記憶

1.LangChain記憶模塊 底層原理:在最新一次問題時,帶上前面的人機對話歷史內容 1.1.具體方式 緩沖記憶 緩沖窗口記憶(限定存儲會話信息次數) 令牌緩沖記憶 摘要總結記憶 摘要緩沖混合記憶 向量存儲庫記憶

Unity VideoPlayer 播放無聲音

增加一個videoPlayer下掛&#xff0c;audiorSource腳本 this.videoPlayer.EnableAudioTrack(0, true); this.videoPlayer.audioOutputMode VideoAudioOutputMode.AudioSource; this.videoPlayer.SetTargetAudioSource(0, this.videoPlayer.GetComponent<AudioSource>()…

AGI|AutoGen入門食用手冊,搭建你的智能體流水線

目錄 1. AutoGen簡介 主要特點 2.快速安裝 3. 相關概念 Agent Roles and Conversations 4.多代理對話 4.1 Agents 例子: 兩個對話代理 4.2 支持多樣化的對話模式 1. AutoGen簡介 AutoGen 是一個開源編程框架&#xff0c;用于構建AI代理并促進多個代理之間的合作以解…

基于ImGui+FFmpeg實現播放器

基于ImGuiFFmpeg實現播放器 演示&#xff1a; ImGui播放器 繼續研究FFmpeg&#xff0c;之前做了一個SDL的播放器&#xff0c;發現SDL的可視化UI界面的功能稍微差了點&#xff0c;所以今天我們換了一個新的工具&#xff0c;也就是ImGui。 ImGui官方文檔&#xff1a;https://g…

ES6變量聲明:let、var、const全面解析

一、引言 ECMAScript 6&#xff08;簡稱 ES6&#xff09;的發布為 JavaScript 帶來了許多革命性的變化&#xff0c;其中變量聲明方式的更新尤為重要。let、var和const成為開發者日常編碼中頻繁使用的關鍵字。 本文將深入解析這三種聲明方式的核心特性、區別及最佳實踐&#xff…

Java基礎 - 反射(2)

文章目錄 示例5. 通過反射獲得類的private、 protected、 默認訪問修飾符的屬性值。6. 通過反射獲得類的private方法。7. 通過反射實現一個工具BeanUtils&#xff0c; 可以將一個對象屬性相同的值賦值給另一個對象 接上篇&#xff1a; 示例 5. 通過反射獲得類的private、 pro…

FCOS目標檢測

一、模型框架 FCOS采用的網絡架構和RetinaNet一樣&#xff0c;都是采用FPN架構&#xff0c;如圖2所示&#xff0c;每個特征圖后是檢測器&#xff0c;檢測器包含3個分支&#xff1a;classification&#xff0c;regression和center-ness。 對于特征圖Fi∈RHWC&#xff0c;其相對…

Java基礎 - 泛型(常見用法)

文章目錄 泛型類泛型方法泛型類派生子類示例 1&#xff1a;子類固定父類泛型類型&#xff08;StringBox 繼承自 Box<String>&#xff09;示例 2&#xff1a;子類保留父類泛型類型&#xff08;AdvancedBox<T> 繼承自 Box<T>)示例 3&#xff1a;添加子類自己的…

YOLO學習筆記 | YOLOv8環境搭建全流程指南(2025.4)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== YOLOv8環境搭建 一、環境準備與工具配置1. Conda虛擬環境搭建2. CUDA與…

【 Beautiful Soup (bs4) 詳解】

引言 Beautiful Soup 是 Python 最流行的 HTML/XML 解析庫&#xff0c;能夠從復雜的網頁文檔中高效提取數據。以下是其核心知識點及示例代碼。 一、庫簡介 1. 核心模塊 BeautifulSoup&#xff1a;主類&#xff0c;用于構建文檔樹結構Tag&#xff1a;表示 HTML/XML 標簽的對象…

傅利葉發布首款開源人形機器人N1:開發者可實現完整復刻

2025年4月11日&#xff0c;上海——通用機器人公司傅利葉正式發布首款開源人形機器人 Fourier N1&#xff0c;并同步開放涵蓋物料清單、設計圖紙、裝配指南、基礎操作軟件在內的完整本體資源包。作為傅利葉 “Nexus 開源生態矩陣” 的首個落地項目&#xff08;“N1” 即 “Nexu…

視覺目標檢測大模型GAIA

中國科學院自動化研究所智能感知與計算研究中心攜手華為等領軍企業&#xff0c;共同推出面向產業應用的視覺目標檢測全流程解決方案——GAIA智能檢測平臺。該研究成果已獲CVPR 2021會議收錄&#xff08;論文鏈接&#xff1a; 論文地址&#xff1a;https://arxiv.org/pdf/2106.…

前端時間同步利器:React + useEffect 實現高性能動態時鐘

前言 在你奮筆疾敲代碼的瞬間&#xff0c;是不是突然一低頭&#xff0c;發現時間像偷偷跑路的變量&#xff0c;一眨眼就從上午飄到下午&#xff1f;飯沒吃、會沒開、工位也快被前端貓霸占了。仿佛你寫的不是代碼&#xff0c;而是“時間穿梭機”。別慌&#xff0c;咱們今天就來…

前端動畫性能優化

前端動畫性能優化全攻略&#xff1a;告別卡頓與高CPU占用 一、動畫性能問題現狀分析 1.1 性能問題現象 動畫幀率低于60FPS時出現明顯卡頓滾動/縮放操作時響應延遲CPU占用率長期超過70%移動端設備發熱嚴重 1.2 核心問題根源 瀏覽器渲染流程中的性能瓶頸主要出現在&#xff1…

springboot中如何處理跨域

什么是跨域 跨域&#xff08;Cross-Origin&#xff09;是瀏覽器出于安全考慮&#xff0c;對不同源的資源訪問施加的限制機制。其核心原因是同源策略&#xff08;Same-Origin Policy&#xff09;&#xff0c;即瀏覽器僅允許協議&#xff08;Protocol&#xff09;、域名&#xf…

js實現生肖宜忌展示

實現效果圖如下 實現邏輯&#xff1a; 1.錄入屬相列表&#xff08;列表順序不可調整&#xff09;&#xff1b; 2.錄入各屬相相宜、相忌屬相&#xff1b; 3.輸入年份后&#xff0c;根據屬相列表獲取到正確的屬相&#xff1b; 4.根據獲取的屬相去展示宜、忌屬相&#xff1b; 5.打…

3DMAX筆記-UV知識點和烘焙步驟

1. 在展UV時&#xff0c;如何點擊模型&#xff0c;就能選中所有這個模型的uv 2. 分多張UV時&#xff0c;不同的UV的可以設置為不同的顏色&#xff0c;然后可以通過顏色進行篩選。 3. 烘焙步驟 擺放完UV后&#xff0c;要另存為一份文件&#xff0c;留作備份 將模型部件全部分成…

AI 重構 Java 遺留系統:從靜態方法到 Spring Bean 注入的自動化升級

在當今快速發展的軟件行業中&#xff0c;許多企業都面臨著 Java 遺留系統的維護和升級難題。這些老舊系統往往采用了大量靜態方法&#xff0c;隨著業務的不斷發展&#xff0c;其局限性日益凸顯。而飛算 JavaAI 作為一款強大的 AI 工具&#xff0c;為 Java 遺留系統的重構提供了…

【從一個 TypeScript 報錯理解 ES6 模塊的三種導入方式】

從一個 TypeScript 報錯理解 ES6 模塊的三種導入方式 在日常開發中&#xff0c;我們經常遇到模塊導入導出的場景。最近在處理一個項目時&#xff0c;遇到了一個有趣的問題&#xff1a;對于只有默認導出的模塊&#xff0c;我們該使用哪種導入方式&#xff1f;這個問題引發了對 …

安徽京準:NTP網絡時鐘服務器功能及同步模式的介紹

安徽京準&#xff1a;NTP網絡時鐘服務器功能及同步模式的介紹 安徽京準&#xff1a;NTP網絡時鐘服務器功能及同步模式的介紹 1、NTP網絡時鐘服務器概念&#xff1a; NTP時鐘服務器&#xff0c;表面意思是時間計量工具的服務設備&#xff0c;其在現代工業中是用于對客戶端設備…