神經網絡之BP算法

一、

正向傳播

正向傳播(Forward Propagation)是神經網絡中數據從輸入層流向輸出層的過程。輸入數據通過各層的權重和激活函數逐層計算,最終得到預測輸出。

數學表示
對于第 ( l ) 層的神經元,其輸出( a^{(l)} )計算如下:
[ z^{(l)} = W^{(l)} a^{(l-1)} + b^{(l)} ]
[ a^{(l)} = \sigma(z^{(l)}) ]其中:

  • ( W^{(l)} )為第 ( l ) 層的權重矩陣;
  • ( b^{(l)} )為偏置項;
  • ( \sigma )為激活函數(如 ReLU、Sigmoid);
  • ( a^{(l-1)} )為前一層輸出(輸入層 ( a^{(0)} = x ))。

特點

  • 逐層計算,無反饋;
  • 最終輸出用于計算損失(如均方誤差、交叉熵)。

反向傳播

反向傳播(Backward Propagation)通過鏈式法則計算損失函數對各層參數的梯度,用于優化權重和偏置。

數學表示

  1. 輸出層梯度
    計算損失 ( \mathcal{L} ) 對輸出層輸入的梯度 ( \delta^{(L)} )
    [ \delta^{(L)} = \nabla_a \mathcal{L} \odot \sigma'(z^{(L)}) ]
    其中 ( \odot )為逐元素乘法。

  2. 隱藏層梯度
    第 ( l ) 層的梯度( \delta^{(l)} )由后一層梯度反向傳遞:
    [ \delta^{(l)} = (W^{(l+1)})^T \delta^{(l+1)} \odot \sigma'(z^{(l)}) ]

  3. 參數更新
    權重和偏置的梯度由梯度下降法更新:
    [ \frac{\partial \mathcal{L}}{\partial W^{(l)}} = \delta^{(l)} (a^{(l-1)})^T ]
    [ \frac{\partial \mathcal{L}}{\partial b^{(l)}} = \delta^{(l)} ]

特點

  • 依賴鏈式法則逐層回溯;
  • 梯度下降優化器(如 SGD、Adam)利用梯度更新參數。

關鍵區別

特性正向傳播反向傳播
方向輸入層→輸出層輸出層→輸入層
目的計算預測輸出計算參數梯度
依賴關系無反饋依賴正向傳播的中間結果
計算復雜度矩陣乘法矩陣乘法與梯度鏈式求導

二、梯度消失

梯度消失的概念

????????梯度消失是指在深度神經網絡中,反向傳播過程中梯度逐漸減小,導致較早層的權重更新非常緩慢或幾乎不更新。這種現象使得深層網絡難以訓練,因為底層參數無法得到有效調整。

梯度消失的原因

????????深度神經網絡通過鏈式法則計算梯度。在反向傳播時,梯度是各層梯度連乘的結果。如果激活函數的導數權重本身較小(如使用Sigmoid或Tanh),連乘會導致梯度指數級衰減。

例如,Sigmoid函數的導數最大值為0.25,多層連乘后梯度會迅速趨近于0。

梯度消失的影響

????????網絡底層參數更新停滯,模型無法學習到低層特征。例如在CNN中,淺層可能無法捕捉邊緣等基礎特征;在RNN中,遠距離依賴關系難以建模。

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

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

相關文章

Ubuntu 版本號與別名對照表(部分精選)

Ubuntu 的別名遵循 形容詞 動物名 的命名規則,且兩個單詞首字母相同,按字母表順序循環使用(從 Ubuntu 6.06 開始)。 📅 Ubuntu 版本號與別名對照表(部分精選) 版本號別名 (開發代號)發布時間…

實驗03-Spark批處理開發

使用Spark Shell探索RDD 啟動并使用Scala Spark Shell 在終端窗口,啟動Scala Spark shell: spark-shell --master local查看對象: scala> sc scala> spark輸入spark.[TAB]然后可以看到所有可用的方法。 讀并顯示文本文件 查看文本…

【R語言】Can‘t subset elements that don‘t exist.

Error in select(): ? In argument: all_of(label_col). Caused by error in all_of(): ! Cant subset elements that dont exist. ? Element Label doesnt exist. Run rlang::last_trace() to see where the error occurred.原文中文解釋涉及關鍵詞Error in select()報錯發生…

Spring的依賴注入(xml)

引入 首先先明白,依賴注入描述的是在容器中建立bean與bean之間的依賴關系,本質就是將一個類中和別的類解耦的方式,就是把別的類,寫在成員變量位置,再對外提供可以給成員變量賦值的方法,外界就直接調用來給…

docker運行的一些常用命令

docker images 顯示可以加載的鏡像docker ps 顯示運行的docker容器 加-a顯示所有的容器docker run --name 容器名字 -d 鏡像名字docker start 容器名/ID 開啟容器docker stop 容器名/ID 關閉容器docker exec -it dock…

Django跨域

步驟 1:安裝 django-cors-headerspip install django-cors-headers步驟 2:修改 Django 配置 在 settings.py 中添加:INSTALLED_APPS [...,"corsheaders", # 新增 ]MIDDLEWARE [...,"corsheaders.middleware.CorsMiddleware…

20250706-10-Docker快速入門(下)-Harbor鏡像倉庫_筆記

一、Harbor鏡像倉庫搭建與使用1. Harbor概述定義: 由VMWare公司開源的容器鏡像倉庫系統技術基礎: 在Docker Registry基礎上進行企業級擴展核心特性:提供管理用戶界面(GUI)基于角色的訪問控制(RBAC)支持AD/LDAP\mathrm{AD}/\mathrm{LDAP}AD…

JavaScript之數組方法詳解

JavaScript之數組方法詳解一、數組的創建與基礎特性1.1 數組的創建方式1.2 數組的核心特性二、修改原數組的方法2.1 添加/刪除元素2.1.1 push():尾部添加元素2.1.2 pop():尾部刪除元素2.1.3 unshift():頭部添加元素2.1.4 shift():…

品牌增長困局突圍:大模型時代,AI 如何幫我的品牌少走彎路?

AI時代對企業戰略的沖擊與機遇 在當今瞬息萬變的商業環境中,大模型的崛起正以前所未有的力量重塑著各行各業的競爭格局。傳統的市場營銷、品牌傳播模式正在被顛覆,消費者獲取信息、認知品牌的方式發生了根本性變化。如果說過去十年是“互聯網”的時代&am…

從單體到微服務:Spring Cloud 開篇與微服務設計

一、單體架構的核心痛點與微服務化目標 1. 單體架構的致命缺陷問題表現后果可維護性差百萬行代碼耦合,修改一處需全量測試迭代周期長,創新停滯擴展性受限無法按模塊獨立擴縮容(如訂單模塊需擴容時,用戶模塊被迫一起擴容&#xff0…

篇二 OSI七層模型,TCP/IP四層模型,路由器與交換機原理

一 前言 本章節主要介紹OSI七層模型,TCP/IP四層模型劃分,以及日常使用的路由器,交換機的一些基礎知識 二 OSI 七層 OSI(Open Systems Interconnection Model)即開放式系統互聯模型,是國際標準化組織提出的&…

【JavaSE面試篇】Java集合部分高頻八股匯總

目錄 概念 1. 說說Java中的集合? 2. Java中的線程安全的集合有什么? 3. Collections和Collection的區別? 4. 集合遍歷的方法有哪些? List 5. 講一下java里面list的幾種實現,幾種實現有什么不同? 6.…

利用低空無人機影像進行樹種實例分割

在本項先導研究中,我們開發了一個基于低空無人機影像的本地樹種機器學習實例分割模型,用于生態調查。該實例分割包括單株樹冠的描繪和樹種的分類。我們利用無人機影像對20個樹種及其對應的學名進行了訓練,并收集了這些樹種的學名用于機器學習。為了評估該機器學習模型的準確…

二、Flutter基礎

目錄1. 什么是Widget?Flutter中的Widget分為哪幾類?2. StatelessWidget和StatefulWidget的區別3. StatefulWidget生命周期4. 什么是BuildContext?5. 如何優化Widget重建?6. Flutter布局機制7. Row/Column的主軸和交叉軸8. Expande…

設計模式筆記_創建型_建造者模式

1. 建造者模式介紹 建造者模式是一種創建型設計模式,旨在通過將復雜對象的構建過程與其表示分離,使得同樣的構建過程可以創建不同的表示。它通常用于構造步驟固定但具體實現可能變化的對象。 1.1 功能: 封裝復雜對象的創建過程:適…

【ROS2 自動駕駛學習】03-ROS2常用命令

目錄 1. ros2 pkg list 2. ros2 node list 3. ros2 node info 節點名稱 4. ros2 topic list 5. ros2 topic info 話題名 6. ros2 topic type 話題名 7. ros2 topic find 消息類型 8. ros2 service list 9. ros2 service type 服務名稱 10. ros2 service find 服…

MyBatis-Plus:提升數據庫操作效率的利器

在Java開發中,MyBatis是一個非常流行的持久層框架,它簡化了數據庫操作,提供了靈活的SQL映射功能。然而,隨著項目規模的擴大和業務復雜度的增加,開發者需要更高效、更便捷的方式來處理數據庫操作。MyBatis-Plus應運而生…

App爬蟲實戰篇-以華為真機手機爬取集換社的app為例

前言 在開始學習這篇文章之前,建議你先按照之前2篇文章(App爬蟲工具篇-Appium安裝和App爬蟲工具篇-appium配置),配置必要的環境,才可以繼續完成本章節內容。 電腦連接手機 可以通過usb連接電腦。如果通過adb devices命令,發現沒有連接上,就需要手動配置一些信息 華為…

Vue3組合式API應用:狀態共享與邏輯復用最佳實踐

Vue3組合式API應用:狀態共享與邏輯復用最佳實踐 在Vue3中,組合式API的引入為我們提供了一種全新的方式來編寫Vue組件,并有效地解決了混入和繁瑣邏輯復用的問題。本文將為您介紹如何在Vue3中使用組合式API來實現狀態共享與邏輯復用的最佳實踐&…

在linux 上使用tcpdump監聽http 端口的報文并分析

這里寫目錄標題 1. 使用 tcpdump(原始報文捕獲)觀察:報文翻譯與分析(按行解釋)第一段:客戶端請求報文HTTP 請求頭JSON 請求體第二段:服務器響應報文HTTP 響應頭響應體關鍵問題分析在 Linux 上監聽 HTTP 端口的報文,有多種工具可以實現。以下是幾種常用方法的詳細說明:…