LLM之循環神經網絡(RNN)

在人工智能的領域中,神經網絡是推動技術發展的核心力量。今天,讓我們深入探討循環神經網絡(RNN)

在這里插入圖片描述

一、神經網絡基礎

(1)什么是神經網絡

神經網絡,又稱人工神經網絡,其設計靈感源于人類大腦的運作模式。它由眾多被稱為“節點”的處理單元構成,這些節點之間相互傳遞數據,恰似大腦中的神經元傳遞電脈沖。

在機器學習領域,神經網絡扮演著關鍵角色。尤其是在深度學習中,它能夠從無標簽數據中提取有價值的信息,實現諸如識別照片中未知物品等復雜任務。

(2)神經網絡的學習過程

神經網絡的學習過程是一個迭代的過程,主要包括前向傳播、損失函數計算和反向傳播三個關鍵步驟。
在這里插入圖片描述
在前向傳播階段,數據從輸入層開始,依次經過隱藏層的處理,最終到達輸出層。在這個過程中,每個神經元都會根據輸入數據和自身的權重、偏差進行計算。權重決定了輸入數據的相對重要性,而偏差則影響著神經元的激活程度。最初,我們會為權重和偏差賦予非零的隨機值,這就是網絡的參數初始化過程。
在這里插入圖片描述
計算完成后,輸出層的結果即為前向傳播的最終輸出,我們將其與真實值(ground-truth value)進行對比,通過損失函數(loss function)來衡量模型的性能。損失函數計算預測值與真實值之間的誤差,常見的損失函數包括均方誤差(Mean Squared Error,MSE)、平均絕對誤差(Mean Absolute Error,MAE)、二元交叉熵(Binary Cross-entropy)、多類交叉熵(Multi-class Cross-entropy)等,它們分別適用于不同類型的任務,如回歸問題或分類問題。

在這里插入圖片描述
如果前向傳播得到的預測值與真實值相差較大,說明我們需要調整網絡的參數以降低損失函數的值。這就引出了反向傳播過程,在這個階段,我們會計算損失函數關于模型參數的梯度,并利用優化算法(如梯度下降 等)來更新參數。

在這里插入圖片描述

二、循環神經網絡

(1)RNN的定義與應用場景

循環神經網絡(RNN)是一種專門設計用于處理順序數據的神經網絡架構。與傳統的前饋神經網絡不同。
RNN 能夠通過內部狀態來記憶之前輸入的信息,從而更好地處理序列數據。在處理時間序列數據、語言建模或視頻序列等任務時,RNN 表現出了獨特的優勢,因為這些任務中輸入數據的順序至關重要。
在這里插入圖片描述

(2)順序數據的概念

順序數據是指具有特定順序且順序會影響數據含義的信息。

“The quick brown fox jumps over the lazy dog.”

每個單詞都是數據的一部分,單詞的順序決定了句子的語義。如果將單詞順序打亂,句子就會變得毫無意義。
其他常見的順序數據還包括時間序列數據(如股票價格、溫度讀數、網站流量等)和語音信號等。

(3)RNN與前饋神經網絡的對比

  • 前饋神經網絡:數據在網絡中僅沿一個方向流動,從輸入層到輸出層,不存在反饋回路。這種架構適用于模式識別等任務,但在處理順序數據時存在局限性,因為它無法利用之前的輸入信息。
  • 循環神經網絡:通過網絡中的反饋回路,信號可以在前后時間步之間傳遞,使得網絡能夠記住之前的輸入,從而更好地處理順序數據。

在這里插入圖片描述

(4)為什么使用RNN

傳統的人工神經網絡(ANN)在處理順序數據(如文本)時面臨挑戰,因為它們要求輸入數據具有固定的大小。在 ANN 中,每個輸入被獨立處理,無法捕捉元素之間的順序和關系。

三、RNN的架構

在這里插入圖片描述

3.1 RNN的時間展開

RNN的關鍵在于其內部狀態或記憶,它能夠跟蹤已處理的數據,可以將 RNN 視為多個前饋神經網絡在時間上的鏈式執行,每個時間步都有一個相同的網絡結構在處理輸入數據。
在這里插入圖片描述

  • 輸入層:在每個時間步,輸入層接收一個輸入數據,并將其傳遞給隱藏層。與前饋網絡不同,RNN 的輸入是逐個時間步進行處理的,這使得網絡能夠適應動態變化的數據序列
  • 隱藏狀態:隱藏層在 RNN 中起著核心作用,它不僅處理當前輸入,還會保留之前輸入的信息。隱藏狀態 h t h_t ht? 在時間步 t t t是根據當前輸入 X t X_t Xt?和前一個隱藏狀態 h t ? 1 h_{t - 1} ht?1? 計算得出的,計算公式如下:

h t = t a n h ( W ? [ h t ? 1 , X t ] + b h ) h_t = tanh(W*[h_{t-1},X_t] + b_h) ht?=tanh(W?[ht?1?,Xt?]+bh?)

  • t a n h tanh tanh: 是非線性激活函數
  • W W W:隱藏層的權重矩陣
  • b h b_h bh?: 隱藏層的偏差向量
  • 輸出序列
    RNN 的輸出方式非常靈活,可以在每個時間步都產生輸出(多對多),也可以在序列結束時產生一個單一輸出(多對一),甚至可以從單個輸入生成一個序列輸出(一對多)。例如,對于多對多的 RNN,時間步 t t t的輸出 O t O_t Ot? 可以通過以下公式計算:

O t = V ? h t + b o O_t = V*h_t+b_o Ot?=V?ht?+bo?

  • V V V: 輸出層的權重矩陣
  • b o b_o bo?:輸出層的偏差向

3.2 RNN的關鍵操作

3.2.1 前向傳播

在 RNN 的前向傳播過程中,對于每個時間步 t t t,網絡會結合當前輸入 X t X_t Xt? 和前一個隱藏狀態 h t ? 1 h_{t - 1} ht?1? 來計算新的隱藏狀態 h t h_t ht?和輸出 O t O_t Ot?。這個過程中會使用一些非線性激活函數(如 s i g m o i d sigmoid sigmoid t a n h tanh tanh)來引入非線性變換.

在這里插入圖片描述

def forward(self, inputs):h = np.zeros((1, self.hidden_size))self.last_inputs = inputsself.last_hs = {0: h}for i, x in enumerate(inputs):x = x.reshape(1, -1)h = np.tanh(np.dot(x, self.weights_ih) + np.dot(h, self.weights_hh) + self.bias_h)self.last_hs[i + 1] = hy = np.dot(h, self.weights_ho) + self.bias_oself.last_outputs = yreturn y

3.2.2 反向傳播時間(BPTT)

與傳統的反向傳播不同,BPTT 會在時間上展開整個數據序列,并在每個時間步計算梯度,然后利用這些梯度來調整權重,以降低總體損失。

在這里插入圖片描述
假設我們有一個長度為 T T T 的時間序列數據,在每個時間步 t t t 都有一個簡單的損失函數 L t L_t Lt?(如回歸任務中的均方誤差),那么總損失 L t o t a l L_{total} Ltotal? 是每個時間步損失的總和:

L t o t a l = Σ t = 1 T L t L_{total}=\Sigma_{t=1}^{T}L_t Ltotal?=Σt=1T?Lt?

為了更新權重,我們需要計算 L t o t a l L_{total} Ltotal? 關于權重的梯度。對于權重矩陣 U U U(輸入到隱藏層)、 W W W(隱藏層到隱藏層)和 V V V(隱藏層到輸出層),梯度的計算公式如下:
在這里插入圖片描述

def backprop(self, d_y, learning_rate, clip_value=1):n = len(self.last_inputs)d_y_pred = (self.last_outputs - d_y) / d_y.sized_Whh = np.zeros_like(self.weights_hh)d_Wxh = np.zeros_like(self.weights_ih)d_Why = np.zeros_like(self.weights_ho)d_bh = np.zeros_like(self.bias_h)d_by = np.zeros_like(self.bias_o)d_h = np.dot(d_y_pred, self.weights_ho.T)for t in reversed(range(1, n + 1)):d_h_raw = (1 - self.last_hs[t] ** 2) * d_hd_bh += d_h_rawd_Whh += np.dot(self.last_hs[t - 1].T, d_h_raw)d_Wxh += np.dot(self.last_inputs[t - 1].reshape(1, -1).T, d_h_raw)d_h = np.dot(d_h_raw, self.weights_hh.T)for d in [d_Wxh, d_Whh, d_Why, d_bh, d_by]:np.clip(d, -clip_value, clip_value, out=d)self.weights_ih -= learning_rate * d_Wxhself.weights_hh -= learning_rate * d_Whhself.weights_ho -= learning_rate * d_Whyself.bias_h -= learning_rate * d_bhself.bias_o -= learning_rate * d_by

3.2.3 權重更新

在計算出梯度后,我們使用優化算法(如隨機梯度下降)來更新權重。權重更新的公式如下:

在這里插入圖片描述

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

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

相關文章

SQL sever數據導入導出實驗

1.創建數據庫TCP-H (1)右鍵“數據庫”,點擊“新建數據庫”即可 (2)用sql語言創建,此處以創建數據庫DB_test為例,代碼如下: use master;go--檢查在當前服務器系統中的所有數據里面…

讓編程變成一種享受-明基RD320U顯示器

引言 作為一名有著多年JAVA開發經驗的從業者,在工作過程中,顯示器的重要性不言而喻。它不僅是我們與代碼交互的窗口,更是影響工作效率和體驗的關鍵因素。在多年的編程生涯中,我遇到過各種各樣的問題。比如,在進行代碼…

計算機網絡(涵蓋OSI,TCP/IP,交換機,路由器,局域網)

一、網絡通信基礎 (一)網絡通信的概念 網絡通信是指終端設備之間通過計算機網絡進行的信息傳遞與交流。它類似于現實生活中的物品傳遞過程:數據(物品)被封裝成報文(包裹),通過網絡…

圖像處理篇---基本OpenMV圖像處理

文章目錄 前言1. 灰度化(Grayscale)2. 二值化(Thresholding)3. 掩膜(Mask)4. 腐蝕(Erosion)5. 膨脹(Dilation)6. 縮放(Scaling)7. 旋轉…

SpringMVC重定向接口,參數暴露在url中解決方案!RedirectAttributes

OK,首先描述下業務場景,終端數量限制登錄 1.首先訪問項目login的get接口 2.輸入賬號密碼點擊登錄后,會請求login的POST接口 3.后臺對終端數量邏輯處理不允許登錄跳回到登錄頁面 4.因代碼原因需在后臺進行多次重定向接口,最后跳…

Spring Boot01(注解、)---java八股

Spring Boot中常用注解及其底層實現 1、SpringBootApplication注解: SpringBootApplication注解:這個注解標識了一個SpringBoot工程,它實際上是另外三個注解的組合,這三個注解是: aSpringBootConfiguration&#xff1a…

?2.快速了解HTML5的標簽類型

??HTML5 的標簽類型豐富多樣&#xff0c;每種類型都有其獨特的功能和用途&#xff0c;以下是一些常見的 HTML5 標簽類型介紹&#xff1a; &#x1f98b;結構標簽 &#x1faad;<html>&#xff1a;它是 HTML 文檔的根標簽&#xff0c;所有其他標簽都包含在這個標簽內&am…

eNSP防火墻綜合實驗

一、實驗拓撲 二、ip和安全區域配置 1、防火墻ip和安全區域配置 新建兩個安全區域 ip配置 Client1 Client2 電信DNS 百度web-1 聯通DNS 百度web-2 R2 R1 三、DNS透明代理相關配置 1、導入運營商地址庫 2、新建鏈路接口 3、配置真實DNS服務器 4、創建虛擬DNS服務器 5、配置D…

Linux 配置交換空間(Swap)解決內存不足

&#x1f680; 作者主頁&#xff1a; 有來技術 &#x1f525; 開源項目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 倉庫主頁&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 歡迎點贊 &#x1f44d; 收藏 ?評論 …

個人shell腳本分享

在周一到周五做增量備份&#xff0c;在周六周日做完全備份 #!/bin/bash定義變量 SRC“/path/to/source” # 源目錄 BKUP“/backup” # 備份主目錄 FUL“KaTeX parse error: Expected EOF, got # at position 22: …ull" #? 完全備份目錄 INC"BKUP/inc” # 增量備份…

Django 5 實用指南(一)安裝與配置

1.1 Django5的背景與發展 Django 自從2005年由Adrian Holovaty和Simon Willison在 Lawrence Journal-World 新聞網站上首次發布以來&#xff0c;Django 一直是 Web 開發領域最受歡迎的框架之一。Django 框架經歷了多個版本的演進&#xff0c;每次版本更新都引入了新功能、改進了…

百度搜索融合 DeepSeek 滿血版,開啟智能搜索新篇

百度搜索融合 DeepSeek 滿血版&#xff0c;開啟智能搜索新篇 &#x1f680; &#x1f539; 一、百度搜索全量接入 DeepSeek &#x1f539; 百度搜索迎來重要升級&#xff0c;DeepSeek 滿血版全面上線&#xff01;&#x1f389; 用戶在百度 APP 搜索后&#xff0c;點擊「AI」即…

RabbitMQ服務異步通信

消息隊列在使用過程中&#xff0c;面臨著很多實際問題需要思考&#xff1a; 1. 消息可靠性 消息從發送&#xff0c;到消費者接收&#xff0c;會經理多個過程&#xff1a; 其中的每一步都可能導致消息丟失&#xff0c;常見的丟失原因包括&#xff1a; 發送時丟失&#xff1a; 生…

【教程】MySQL數據庫學習筆記(七)——多表操作(持續更新)

寫在前面&#xff1a; 如果文章對你有幫助&#xff0c;記得點贊關注加收藏一波&#xff0c;利于以后需要的時候復習&#xff0c;多謝支持&#xff01; 【MySQL數據庫學習】系列文章 第一章 《認識與環境搭建》 第二章 《數據類型》 第三章 《數據定義語言DDL》 第四章 《數據操…

膠囊網絡動態路由算法:突破CNN空間局限性的數學原理與工程實踐

一、CNN的空間局限性痛點解析 傳統CNN的瓶頸&#xff1a; 池化操作導致空間信息丟失&#xff08;最大池化丟棄85%激活值&#xff09;無法建模層次空間關系&#xff08;旋轉/平移等變換不敏感&#xff09;局部感受野限制全局特征整合 示例對比&#xff1a; # CNN最大池化示例…

#滲透測試#批量漏洞挖掘#Apache Log4j反序列化命令執行漏洞

免責聲明 本教程僅為合法的教學目的而準備,嚴禁用于任何形式的違法犯罪活動及其他商業行為,在使用本教程前,您應確保該行為符合當地的法律法規,繼續閱讀即表示您需自行承擔所有操作的后果,如有異議,請立即停止本文章讀。 目錄 Apache Log4j反序列化命令執行漏洞 一、…

深入剖析Spring MVC

一、Spring MVC 概述 1. 什么是 Spring MVC&#xff1f; Spring MVC 是基于 Spring 框架的 Web 框架&#xff0c;它實現了 MVC 設計模式&#xff0c;將應用程序分為三個核心部分&#xff1a; Model&#xff1a;封裝應用程序的數據和業務邏輯。 View&#xff1a;負責渲染數據…

機器學習入門-讀書摘要

先看了《深度學習入門&#xff1a;基于python的理論和實踐》這本電子書&#xff0c;早上因為入迷還坐過站了。。 因為里面的反向傳播和鏈式法則特別難懂&#xff0c;又網上搜了相關內容進行進一步理解&#xff0c;參考的以下文章&#xff08;個人認為都講的都非常好&#xff0…

【AI】mac 本地部署 Dify 實現智能體

下載 Ollama 訪問 Ollama 下載頁&#xff0c;下載對應系統 Ollama 客戶端。或者參考文章【實戰AI】macbook M1 本地ollama運行deepseek_m1 max可以跑deepseek嗎-CSDN博客 dify 開源的 LLM 應用開發平臺。提供從 Agent 構建到 AI workflow 編排、RAG 檢索、模型管理等能力&am…

[實現Rpc] 消息抽象層的具體實現

目錄 具象層 _ 消息抽象的實現 信息的抽象類 實現 JsonMessage JsonRequest & JsonResponse 消息-不同消息分裝實現 實現 Request RpcRequest TopicRequest ServiceRequest Response RpcResponse TopicResponse ServiceResponse 實現 生產工廠 本篇文章繼 …