深度學習知識點:RNN

文章目錄

  • 1.簡單介紹
  • 2.網絡結構
  • 3.應對梯度消失

1.簡單介紹

循環神經網絡(RNN,Recurrent Neural Network)是一類用于處理序列數據的神經網絡。與傳統網絡相比,變化不是特別大,不如CNN的變化那么大。
為什么要有循環神經網絡:
傳統神經網絡:輸入一個數據處理一個數據,互不干擾
但是有些數據是連貫性的,比如一個句子(我今天早上8點醒的),就不可能將每一個字或一些詞單獨處理,而是在處理這個字的同時還要考慮到與前面字的關系,因此循環神經網絡就可以解決這一問題。

描述 圖1: 傳統神經網絡

2.網絡結構

RNN 不是剛性地記憶所有固定長度的序列,而是通過隱藏狀態來存儲之前時間步的信息。
也就是說在循環神經網絡的隱藏層中,輸入的數據走向有兩個:輸出和等待,等待是指等待第二個數據的到來并對第二個數據的隱藏特征產生影響。

描述 圖2: 循環神經網絡

可以看出,典型的 RNN 是有環結構(圖3a)。一個典型的 RNN 網絡架構包含一個輸入,一個輸出和一個神經網絡單元 。和普通的前饋神經網絡的區別在于:RNN 的神經網絡單元不但與輸入和輸出存在聯系,而且自身也存在一個循環 / 回路 / 環路 / 回環 (loop)。這種回路允許信息從網絡中的一步傳遞到下一步。 同時,RNN 還能按時間序列展開循環 (unroll the loop) 為圖2b:

描述 圖3: a)等號左:整體網絡;b)等號右:整體網絡的分解

由上圖可知,上一個時刻的網絡狀態將會作用于到下一個時刻的網絡狀態,還表明 RNN 和序列數據密切相關。同時,RNN 要求每一個時刻都有一個輸入,但是不一定每個時刻都需要有輸出。 最終我們需要的只是h t的結果,舉個例子:拿出手寫數據集中的一張照片,將其分割成784維的向量,我們只需要在最后一維向量輸入進去后看整體的結果是屬于0-9的哪種類別即可,最后的輸出結果隱含了前面的信息,所以中間隱藏層的結果我們并不需要知道。 進一步地,公式化 RNN 的結構如下:

描述 圖4: RNN結構推導式

在圖中有一條單向流動的信息流是從輸入單元到達隱藏單元的,與此同時另一條單向流動的信息流從隱藏單元到達輸出單元。在某些情況下,RNNs 會打破后者的限制,引導信息從輸出單元返回隱藏單元,這些被稱為 “Back Projections”,并且隱藏層的輸入還包括上一隱藏層的狀態,即隱藏層內的節點可以自連也可以互連(這實際上就是 LSTM)。

循環神經網絡的輸入是序列數據,每個訓練樣本是一個時間序列,包含多個相同維度的向量。網絡的參數如何通過訓練確定?這里就要使用解決 RNN 訓練問題的 BPTT(Back Propagation Through Time)算法。
右側為計算時便于理解記憶而產生的結構。簡單說,x 為輸入層,o 為輸出層,s 為隱含層,而 t 指第幾次的計算;V、W、U為權重(在 RNN 中,每一層都共享參數U、V、W,降低了網絡中需要學習的參數,提高學習效率。 xt 表示 t 時刻的輸入, St表示 t 時刻的隱狀態, Ot表示 t 時刻的輸出。

  • 輸入單元(input units): { x 0 , ? ? ? , x t ? 1 , x t , x t + 1 , ? ? ? } \{x_{0}, \cdot \cdot \cdot, x_{t-1}, x_{t}, x_{t+1}, \cdot \cdot \cdot\} {x0?,???,xt?1?,xt?,xt+1?,???}

  • 隱藏單元(hidden units): { s 0 , ? ? ? , s t ? 1 , s t , s t + 1 , ? ? ? } \{s_{0}, \cdot \cdot \cdot, s_{t-1}, s_{t}, s_{t+1}, \cdot \cdot \cdot\} {s0?,???,st?1?,st?,st+1?,???}

  • 輸出單元(output units): { o 0 , ? ? ? , o t ? 1 , o t , o t + 1 , ? ? ? } \{o_{0}, \cdot \cdot \cdot, o_{t-1}, o_{t}, o_{t+1}, \cdot \cdot \cdot\} {o0?,???,ot?1?,ot?,ot+1?,???}

  • 輸入層: x t x_{t} xt? 表示時刻 t t t 的輸入。

t 次的中間的隱含層狀態為:

s t = f ( U ? x t + W ? s t ? 1 ) s_{t} = f(U \cdot x_{t} + W \cdot s_{t-1}) st?=f(U?xt?+W?st?1?)

  • f f f 是非線性激活函數,比如 t a n h tanh tanh

輸出層

o t = s o f t m a x ( V ? s t ) o_{t} = softmax(V \cdot s_{t}) ot?=softmax(V?st?)

  • softmax 函數是歸一化的指數函數,使每個元素的范圍都在 0 到 1 之間 ,并且所有元素的和為 1。

反向傳播
E 3 E_3 E3?舉例,當反向傳播時,不僅會傳遞回隱層 s 3 s_3 s3?,還會向輸入層 x 3 x_3 x3?進行傳遞,只要是反向有參數的地方就會更新。

描述

3.應對梯度消失

在進行反向傳播時,循環神經網絡也面臨梯度消失或者梯度爆炸問題,這種問題表現在時間軸上。如果輸入序列的長度很長,人們很難進行有效的參數更新。比如:我今天早上8點起床,中午吃了粘豆包,晚上開車去了電影院。我去電影院這個動作和早上中午的并沒有很大關系,但是RNN在計算時是沒有取舍的。

通常來說梯度爆炸更容易處理一些。梯度爆炸時我們可以設置一個梯度閾值,當梯度超過這個閾值的時候可以直接截取。

應對梯度消失問題的解決方案:

  • 合理地初始化權重值。初始化權重,使每個神經元盡可能不要取極大或極小值,以躲開梯度消失的區域。
  • 使用激活函數 ReLu,代替 sigmoid 和 tanh。
  • 使用其他結構的 RNNs,比如長短時記憶網絡(LSTM)和 門控循環單元 (GRU),這是最流行的做法。

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

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

相關文章

(leetcode算法題)287. 尋找重復數(經典題目,二分解法)

如果一個題目限定了數據范圍是[1, n]內的整數,那么這個題目可以思考的就是 nums[i]和 i 的關系,769. 最多能完成排序的塊 這個題就使用到了子數組中最大值和 連續[0, n - 1]的關系 而對于本題來說,也可以思考[1, n] 和 nums[i] 的關系&…

獲得PostgreSQL中級認證后,可以從事哪些工作崗位?

獲得 PostgreSQL 中級認證后,可以獲得的崗位 數據庫管理類 數據庫管理員(DBA):負責 PostgreSQL 數據庫的日常維護、監控、備份與恢復、性能優化、安全管理等工作。確保數據庫的穩定運行和數據的安全性、完整性,及時處理…

4.1、二纖單向、二纖雙向、四纖雙向,網絡級保護

1、線性復用段保護(LMSP) 就像是給網絡業務傳輸準備的一個 “保險”。在 SDH 和 MSTP 網絡里,業務信號要通過一段一段的路(復用段)來傳輸,LMSP 就是為了保證這些路出問題的時候,業務還能正常走。…

【spark源碼修改】hive3.1.3 spark3.5.4編譯,需要修改源碼,最終編譯成功

【spark源碼修改】hive3.1.3 spark3.5.4編譯,需要修改源碼,最終編譯成功 1. 準備安裝包與maven編譯環境1.1 安裝環境準備1.2 修改pom1.3 打包命令2. 編譯與問題解決2.1 開始編譯 失敗, 缺包pentaho-aggdesigner-algorithm:pom:5.1.5-jhyde2.2 Hive Spark Remote Client 模塊…

SQL-leetcode-584. 尋找用戶推薦人

584. 尋找用戶推薦人 表: Customer -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | | referee_id | int | -------------------- 在 SQL 中,id 是該表的主鍵列。 該表的每一行表示一個客戶的 id、姓名以及推…

【數據庫】一、數據庫系統概述

文章目錄 一、數據庫系統概述1 基本概念2 現實世界的信息化過程3 數據庫系統內部體系結構4 數據庫系統外部體系結構5 數據管理方式 一、數據庫系統概述 1 基本概念 數據:描述事物的符號記錄 數據庫(DB):長期存儲在計算機內的、…

Scala語言的面向對象編程

Scala語言的面向對象編程 面向對象編程(Object-Oriented Programming,OOP)是一種編程范式,它使用“對象”來組織代碼,這些對象能夠包含數據(屬性)以及功能(方法)。Scala…

【JVM-2.1】如何使用JMC監控工具:詳細步驟與實戰指南

Java Mission Control(JMC)是Oracle提供的一個高級圖形化監控工具,專為Java應用程序的性能分析和故障排查設計。JMC不僅提供了實時監控功能,還支持飛行記錄器(Flight Recorder)功能,能夠記錄JVM…

QT c++ 樣式 設置 標簽(QLabel)的漸變色美化

上一篇文章中描述了按鈕的純色&#xff0c;本文描述標簽的漸變色美化。 1.頭文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QLabel…

設計模式 行為型 觀察者模式(Observer Pattern)與 常見技術框架應用 解析

觀察者模式&#xff08;Observer Pattern&#xff09;是一種行為設計模式&#xff0c;它定義了一種一對多的依賴關系&#xff0c;讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時&#xff0c;會通知所有觀察者對象&#xff0c;使它們能夠自動更新。 一…

03_Redis基本操作

1.Redis查詢命令 1.1 官網命查詢命令 為了便于學習Redis,官方將其用于操作不同數據類型的命令進行了分類整理。你可以通過訪問Redis官方網站上的命令參考頁面https://redis.io/commands來查閱這些分組的命令,這有助于更系統地理解和使用Redis的各項功能。 1.2 HELP查詢命令…

system securiry: supervisor password required

報錯解釋&#xff1a; 這個錯誤表明系統安全模塊&#xff08;如SELinux或AppArmor&#xff09;需要超級用戶&#xff08;通常是root&#xff09;的密碼來確認一個操作。這通常發生在嘗試進行某些需要高級權限的系統更改時。 解決方法&#xff1a; 如果你擁有root權限&#xff0…

Ubuntu 如何查看盤是機械盤還是固態盤

在 Ubuntu 系統中&#xff0c;您可以通過以下方法來確定硬盤是機械硬盤&#xff08;HDD&#xff09;還是固態硬盤&#xff08;SSD&#xff09;&#xff1a; 使用 lsblk 命令&#xff1a; 打開終端&#xff0c;輸入以下命令&#xff1a; lsblk -d -o name,rota該命令將列出所…

探索式測試

探索式測試是一種軟件測試風格&#xff0c;它強調獨立測試人員的個人自由和職責&#xff0c;為了持續優化其工作的價值&#xff0c;將測試學習、測試設計、測試執行和測試結果分析作為相互支持的活動&#xff0c;在整個項目實現過程中并行地執行。 選擇合適的探索式測試方法我…

uniapp 微信小程序內嵌h5實時通信

描述&#xff1a; 小程序webview內嵌的h5需要向小程序實時發送消息&#xff0c;有人說postMessage可以實現&#xff0c;所以試驗一下&#xff0c;結果是實現不了實時&#xff0c;只能在特定時機后退、組件銷毀、分享時小程序才能接收到信息&#xff08;小程序為了安全等考慮做了…

php 使用simplexml_load_string轉換xml數據格式失敗

本文介紹如何使用php函數解析xml數據為數組。 <?php$a <xml><ToUserName><![CDATA[ww8b77afac71336111]]></ToUserName><FromUserName><![CDATA[sys]]></FromUserName><CreateTime>1736328669</CreateTime><Ms…

HOW - Form 表單 label 和 wrapper 對齊場景

一、背景 在日常使用 表單 時&#xff0c;我們一般有如下布局&#xff1a; 可以通過 Form 表單提供的配置直接設置&#xff1a; <Formform{form}labelCol{{ span: 4 }}wrapperCol{{ span: 20 }}onFinish{handleSubmit}><Form.Itemlabel"輸入框"name"…

深入探索AI核心模型:CNN、RNN、GAN與Transformer

在人工智能的飛速發展中&#xff0c;眾多深度學習模型和算法不斷涌現&#xff0c;推動了許多領域的進步。特別是在圖像識別、自然語言處理、生成建模等方向&#xff0c;AI模型的應用越來越廣泛。本文將介紹幾種最常用的AI模型&#xff0c;包括卷積神經網絡&#xff08;CNN&…

櫻桃鍵盤win鍵按了沒反應怎么處理

?游戲模式?&#xff1a;部分櫻桃鍵盤在進入游戲模式后會禁用Win鍵&#xff0c;以防止在游戲過程中誤觸。可以通過按下Fn F9鍵來切換游戲模式和辦公模式&#xff0c;確保鍵盤處于辦公模式下&#xff0c;Win鍵即可恢復正常功能。? &#xff08;至此我的問題已解決&#xff0c…

解析若依 `R.java` 類——ruoyi-common-core

文章目錄 1. 類的整體功能2. 代碼解析2.1 成員變量和常量2.2 靜態方法構造響應對象2.3 內部私有方法 restResult2.4 工具方法 3. 開發中的應用擴展3.1 接口規范化3.2 快速響應構造3.3 自定義狀態碼3.4 自定義擴展 R.java 是若依框架中通用的 API 響應封裝類&#xff0c;主要用于…