【循環神經網絡RNN第一期】循環神經網絡RNN原理概述

目錄

  • 🧠 什么是循環神經網絡(RNN)?
    • 🔁 RNN 的結構圖
    • 🔄 RNN 的“記憶”與問題
    • RNN梯度推導
  • 🧬 LSTM:解決長期依賴問題
    • 🧱 LSTM 的核心結構
    • LSTM總結
  • 參考

人類在思考的時候,會從上下文、從過去推斷出現在的結果。傳統的神經網絡無法記住過去的歷史信息。

循環神經網絡是指隨著時間推移,重復發生的結構。它可以記住之前發生的事情,并且推斷出后面發生的事情。用于處理時間序列很好。所有的神經元共享權值。如下圖所示。
在這里插入圖片描述

🧠 什么是循環神經網絡(RNN)?

循環神經網絡(Recurrent Neural Network, RNN) 是一類用于處理序列數據的神經網絡結構,具有“記憶”能力,適用于自然語言處理、時間序列預測、語音識別等任務。

與傳統的前饋神經網絡(如全連接網絡、卷積神經網絡)不同,RNN 的每一個時刻的輸出不僅依賴于當前的輸入,還依賴于前一個時刻的隱藏狀態(即“記憶”)。

🔁 RNN 的結構圖

RNN 的基本結構可以展開為一個鏈式結構:

xt → ht → Ot↑ht-1

其中:

  • xt 是時間步 t 的輸入
  • ht 是時間步 t 的隱藏狀態(記憶)
  • Ot 是時間步 t 的輸出
  • ht-1 是前一時間步的隱藏狀態

公式如下:

ht = tanh(Wxh * xt + Whh * ht-1 + bh)
Ot = Why * ht + by

可以看到,隱藏狀態 ht 是由當前輸入 xt 和前一個隱藏狀態 ht-1 一起決定的。

🔄 RNN 的“記憶”與問題

RNN 雖然可以捕捉序列的上下文信息,但在實踐中存在兩個主要問題:

? 梯度消失 / 梯度爆炸
在長序列訓練中,反向傳播時的梯度會因為不斷地鏈式相乘而:

  • 趨近于零(梯度消失),導致網絡無法學習長期依賴;
  • 迅速變大(梯度爆炸),導致模型不穩定。

這使得 RNN 在處理長期依賴問題時效果不佳。

記住短期信息:比如預測“天空中有__”,如果過去的信息“鳥”離當前位置比較近,則RNN可以利用這個信息預測出下一個詞為“鳥”
在這里插入圖片描述
不能長期依賴:如果需要的歷史信息距離當前位置很遠,則RNN無法學習到過去的信息。這就是不能長期依賴的問題。
在這里插入圖片描述
所有的RNN有著重復的結構,如下圖,比如內部是一個簡單的tanh 層。
在這里插入圖片描述

RNN梯度推導

在這里插入圖片描述

🧬 LSTM:解決長期依賴問題

為解決上述問題,LSTM(Long Short-Term Memory) 網絡被提出,是一種特殊的 RNN 結構,能夠更好地捕捉長期依賴信息。

LSTM 通過引入 “門控機制” 控制信息的保留與遺忘:
在這里插入圖片描述

🧱 LSTM 的核心結構

單元狀態:單元狀態像一個傳送帶,通過整個鏈向下運行,只有一些小的線性作用。信息就沿著箭頭方向流動。
在這里插入圖片描述

LSTM的門結構 可以添加或者刪除單元狀態的信息,去有選擇地讓信息通過。它由sigmoid網絡層 和 點乘操作組成。輸出屬于[0,1]之間,代表著信息通過的比例。
在這里插入圖片描述

LSTM 的每個單元由以下幾個部分組成:

1、遺忘門(Forget Gate),控制哪些信息要丟棄(忘記):

ft = σ(Wf · [ht-1, xt] + bf)

在這里插入圖片描述

2、輸入門(Input Gate),決定哪些新信息被存入記憶:

it = σ(Wi · [ht-1, xt] + bi)
Ct~ = tanh(WC · [ht-1, xt] + bC)

在這里插入圖片描述

3、更新記憶單元(Cell State)

Ct = ft * Ct-1 + it * Ct~

在這里插入圖片描述

4、輸出門(Output Gate),決定最終輸出:

ot = σ(Wo · [ht-1, xt] + bo)
ht = ot * tanh(Ct)

在這里插入圖片描述

其中:

  • σ 是 sigmoid 激活函數
  • tanh 是雙曲正切函數
  • ht 是輸出
  • Ct 是單元狀態

LSTM總結

核心結構如下圖所示:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

參考

1、循環神經網絡

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

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

相關文章

代碼隨想錄算法訓練營 Day60 圖論Ⅹ Bellmen_ford 系列算法

圖論 題目 94. 城市間貨物運輸 I Bellmen_ford 隊列優化算法 SPFA 大家可以發現 Bellman_ford 算法每次松弛 都是對所有邊進行松弛。 但真正有效的松弛,是基于已經計算過的節點在做的松弛。 本圖中,對所有邊進行松弛,真正有效的松弛&#…

Juce實現Table自定義

Juce實現Table自定義 一.總體展示概及概述 在項目中Juce中TableList往往無法滿足用戶需求,頭部和背景及背景顏色設置以及在Cell中添加自定義按鈕,所以需要自己實現自定義TabelList,該示例是展示實現自定義TableList,實現自定義標…

C++ set數據插入、set數據查找、set數據刪除、set數據統計、set排序規則、代碼練習1、2

set數據插入&#xff0c;代碼見下 #include<iostream> #include<set> #include<vector>using namespace std;void printSet(const set<int>& s) {for (set<int>::const_iterator it s.begin(); it ! s.end(); it) {cout << *it <…

深度學習賦能圖像識別:技術、應用與展望

論文&#xff1a; 一、引言? 1.1 研究背景與意義? 在當今數字化時代&#xff0c;圖像作為信息的重要載體&#xff0c;廣泛存在于各個領域。圖像識別技術旨在讓計算機理解和識別圖像內容&#xff0c;將圖像中的對象、場景、行為等信息轉化為計算機能夠處理的符號或數據 &am…

深入解析C++引用:從別名機制到函數特性實踐

1.C引用 1.1引用的概念和定義 引用不是新定義?個變量&#xff0c;而是給已存在變量取了?個別名&#xff0c;編譯器不會為引用變量開辟內存空間&#xff0c;它和它引用的變量共用同?塊內存空間。比如四大名著中林沖&#xff0c;他有一個外號叫豹子頭&#xff0c;類比到C里就…

【從0-1的HTML】第1篇:HTML簡介

1 HTML簡介 HTML是用來描述網頁的一種語言,是超文本標記語言的縮寫(Hyper Text Markup Language),不屬于編程語言的范疇&#xff0c;屬于一種標記語言。 標記語言使用一套標記標簽(Markup tag)&#xff0c;又稱為標簽,HTML就是使用標記標簽來描述網頁。 1.2 HTML標簽 1、HTM…

vue+cesium示例:地形開挖(附源碼下載)

基于cesium和vue繪制多邊形實現地形開挖效果&#xff0c;適合學習Cesium與前端框架結合開發3D可視化項目。 demo源碼運行環境以及配置 運行環境&#xff1a;依賴Node安裝環境&#xff0c;demo本地Node版本:推薦v18。 運行工具&#xff1a;vscode或者其他工具。 配置方式&#x…

qwen大模型在進行詞嵌入向量時,針對的詞表中的唯一數字還是其他的?

qwen大模型在進行詞嵌入向量時,針對的詞表中的唯一數字還是其他的? Qwen大模型進行詞嵌入向量時,針對的是詞表中每個 Token 對應的唯一數字(Token ID) ,核心邏輯結合詞表構建、嵌入過程展開 一、Qwen 詞表與 Token ID Qwen 用 BPE 分詞器(基于 tiktoken,以 cl100k 為…

動態規劃-1143.最長公共子序列-力扣(LeetCode)

一、題目解析 對于給定了兩個字符串中&#xff0c;需要找到最長的公共子序列&#xff0c;也就是兩個字符串所共同擁有的子序列。 二、算法原理 1、狀態表示 dp[i][j]&#xff1a;表示s1的[0,i]和s2的[0,j]區間內所有子序列&#xff0c;最長子序列的長度 2、狀態轉移方程 根…

互聯網c++開發崗位偏少,測開怎么樣?

通過這標題&#xff0c;不難看出問這個問題的&#xff0c;就是沒工作過的。如果工作過&#xff0c;那就是不斷往深的鉆研&#xff0c;路越走越窄&#xff0c;找工作一般就是找原來方向的。沒工作過的&#xff0c;那一般就是學生。 學生找什么方向的工作比較好&#xff1f; 學生…

推薦算法八股

跑路了&#xff0c;暑期0offer&#xff0c;華為主管面掛了&#xff0c;真幽默&#xff0c;性格測評就掛了居然給我一路放到主管面&#xff0c;科大迅飛太囂張&#xff0c;直接跟人說后面要面華為&#xff0c;元戎啟行&#xff0c;學了C后python完全忘了怎么寫&#xff0c;挺尷尬…

Spring Boot微服務架構(九):設計哲學是什么?

一、Spring Boot設計哲學是什么&#xff1f; Spring Boot 的設計哲學可以概括為 ??“約定優于配置”?? 和 ??“開箱即用”??&#xff0c;其核心目標是??極大地簡化基于 Spring 框架的生產級應用的初始搭建和開發過程??&#xff0c;讓開發者能夠快速啟動并運行項目…

前端導入Excel表格

前端如何在 Vue 3 中導入 Excel 文件&#xff08;.xls 和 .xlsx&#xff09;&#xff1f; 在日常開發中&#xff0c;我們經常需要處理 Excel 文件&#xff0c;比如導入數據表格、分析數據等。文章將在 Vue 3 中實現導入 .xls 和 .xlsx 格式的文件&#xff0c;并解析其中的數據…

C++和C#界面開發方式的全面對比

文章目錄 C界面開發方式1. **MFC&#xff08;Microsoft Foundation Classes&#xff09;**2. **Qt**3. **WTL&#xff08;Windows Template Library&#xff09;**4. **wxWidgets**5. **DirectUI** C#界面開發方式1. **WPF&#xff08;Windows Presentation Foundation&#xf…

刷leetcode hot100返航必勝版--鏈表6/3

鏈表初始知識 鏈表種類&#xff1a;單鏈表&#xff0c;雙鏈表&#xff0c;循環鏈表 鏈表初始化 struct ListNode{ int val; ListNode* next; ListNode(int x): val&#xff08;x&#xff09;,next(nullptr) {} }; //初始化 ListNode* head new ListNode(5); 刪除節點、添加…

軟考 系統架構設計師系列知識點之雜項集萃(78)

接前一篇文章&#xff1a;軟考 系統架構設計師系列知識點之雜項集萃&#xff08;77&#xff09; 第139題 以下關于軟件測試工具的敘述&#xff0c;錯誤的是&#xff08;&#xff09;。 A. 靜態測試工具可用于對軟件需求、結構設計、詳細設計和代碼進行評審、走查和審查 B. 靜…

【Unity】云渲染

1 前言 最近在搞Unity云渲染的東西&#xff0c;所以研究了下官方提供的云渲染方案Unity Renderstreaming。注&#xff1a;本文使用的Unity渲染管線是URP。 2 文檔 本文也只是介紹基本的使用方法&#xff0c;更詳細內容參閱官方文檔。官方文檔&#xff1a;Unity Renderstreamin…

組相對策略優化(GRPO):原理及源碼解析

文章目錄 PPO vs GRPOPPO的目標函數GRPO的目標函數KL散度約束與估計ORM監督RL的結果PRM監督RL的過程迭代RL算法流程 GRPO損失的不同版本GRPO源碼解析 DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models PPO vs GRPO PPO的目標函數 J P P O…

Linux或者Windows下PHP版本查看方法總結

確定當前服務器或本地環境中 PHP 的版本,可以通過以下幾種方法進行操作: 1. 通過命令行檢查 這是最直接且常用的方法,適用于本地開發環境或有 SSH 訪問權限的服務器。 方法一:php -v 命令 php -v輸出示例:PHP 8.1.12 (cli) (built: Oct 12 2023 12:34:56) (NTS) Copyri…

[Linux] MySQL源碼編譯安裝

目錄 環境包安裝 創建程序用戶 解壓源碼包 配置cmake ?編輯編譯 安裝 配置修改屬性 屬主和屬組替換成mysql用戶管理 系統環境變量配置 初始化數據庫 服務管理 啟動 環境包安裝 yum -y install ncurses ncurses-devel bison cmake gcc gcc-c 重點強調&#xff1a;采…