深度學習系統學習系列【4】之反向傳播(BP)四個基本公式推導

文章目錄

  • 補充知識:? 和 ⊙ 運算符詳解
    • ? (nabla) 運算符
    • ⊙ (圓圈點) 運算符
  • 反向傳播基本公式
  • 計算圖和基本定義
  • BP1:輸出層誤差推導
    • BP1公式的重要性
    • 實際例子
    • BP2第 l l l層誤差推導
    • BP3 :損失函數關于偏置(b)偏導的推導
    • BP4: 損失函數關于權值(w)偏導推導

補充知識:? 和 ⊙ 運算符詳解

  • 在神經網絡的反向傳播算法中,我們經常會遇到像 δ L = ? a L ⊙ f ′ ( z L ) δ? = ??L ⊙ f'(z?) δL=?a?Lf(zL) 這樣的表達式。讓我們來深入探討其中的 ? (nabla) 和 ⊙ (圓圈點) 運算符。

? (nabla) 運算符

  • ? 符號在數學中被稱為 “nabla” 或 “del” 運算符,它表示梯度(gradient)。在神經網絡中:

  • ??L 表示損失函數 L 相對于網絡最后一層激活輸出 a? 的梯度

  • 這是一個向量,其中每個元素是損失函數對相應激活值的偏導數

  • 數學表達式為: ? a L = [ ? L / ? a 1 , ? L / ? a 2 , . . . , ? L / ? a n ] T ??L = [?L/?a?, ?L/?a?, ..., ?L/?a?]? ?a?L=[?L/?a1?,?L/?a2?,...,?L/?an?]T

  • 在反向傳播中, ? a L ??L ?a?L 告訴我們如果稍微改變輸出層的激活值,損失函數會如何變化。這是誤差從損失函數向后傳播的第一步。

⊙ (圓圈點) 運算符

  • ⊙ 符號表示逐元素乘法(也稱為 Hadamard 乘積):

  • 它作用于兩個相同維度的向量或矩陣。不是矩陣乘法,而是簡單地對相應位置的元素相乘

  • 數學表達式為: ( A ⊙ B ) i j = A i j × B i j (A ⊙ B)?? = A?? × B?? (AB)ij?=Aij?×Bij?

反向傳播基本公式

方程含義
δ L = ? a L ⊙ f ′ ( z L ) \delta^{L} = \nabla_{a} L \odot f^{\prime}(z^{L}) δL=?a?Lf(zL)BP1 輸出層誤差
δ l = ( ( w l ) T δ l + 1 ) ⊙ f ′ ( z l ) \delta^{l} = ((w^{l})^{T} \delta^{l+1}) \odot f^{\prime}(z^{l}) δl=((wl)Tδl+1)f(zl)BP2 第 l l l 層誤差
? L ? b i l = δ i l \frac{\partial L}{\partial b_{i}^{l}} = \delta_{i}^{l} ?bil??L?=δil?BP3 損失函數關于偏置(b)的偏導
? L ? w i , j l = a j l ? 1 δ i l \frac{\partial L}{\partial w_{i,j}^{l}} = a_{j}^{l-1} \delta_{i}^{l} ?wi,jl??L?=ajl?1?δil?BP4 損失函數關于權值(w)的偏導

計算圖和基本定義

在這里插入圖片描述

  • 損失函數: L = 1 2 ( y ? a l ) 2 L=\frac{1}{2}(y-a^l)^2 L=21?(y?al)2
  • 通項: a l = δ ( z l ) = δ ( w l a l ? 1 + b l ) a^l=\delta(z^l)=\delta(w^la^{l-1}+b^l) al=δ(zl)=δ(wlal?1+bl)
  • 定義第 l l l層的第 i i i個神經元的誤差為 δ i l \delta_i^l δil?
    δ i l = ? L ? z i l \delta_i^l=\frac{\partial L}{\partial z_i^l} δil?=?zil??L?

BP1:輸出層誤差推導

  • 前置公式
    • 損失函數: L = 1 2 ( y ? a l ) 2 L=\frac{1}{2}(y-a^l)^2 L=21?(y?al)2
    • l l l層神經元關系 a l = δ ( z l ) a^l = \delta(z^l) al=δ(zl)

  • 采用上圖中 l ? 1 l-1 l?1 z 1 z_1 z1?節點為例
    δ = ? L ? z 1 l = ? L ? a 1 l × ? a 1 l ? z 1 l = ? [ 1 2 ( y 1 ? a 1 l ) 2 ] ? a 1 l × ? a 1 l ? z 1 l = 2 × 1 2 ( a 1 l ? y 1 ) × ? a 1 l ? z 1 l = ( a 1 l ? y 1 ) δ ′ ( z 1 l ) = ? a L ⊙ f ′ ( z 1 L ) \begin{align*} \delta &=\frac{\partial L}{\partial z_1^l} \\ &=\frac{\partial L}{\partial a_1^l} \times \frac{\partial a_1^l}{\partial z_1^l} \\ &=\frac{\partial [\frac{1}{2}(y_1-a_1^l)^2]}{\partial a_1^l}\times \frac{\partial a_1^l}{\partial z_1^l} \\ &=2\times \frac{1}{2} (a_1^l-y_1) \times \frac{\partial a_1^l}{\partial z_1^l} \\ &=(a_1^l-y_1) \delta^{'}(z_1^l) \\ &= \nabla_{a} L \odot f^{\prime}(z_1^{L}) \\ \end{align*} δ?=?z1l??L?=?a1l??L?×?z1l??a1l??=?a1l??[21?(y1??a1l?)2]?×?z1l??a1l??=2×21?(a1l??y1?)×?z1l??a1l??=(a1l??y1?)δ(z1l?)=?a?Lf(z1L?)?

  • 總結:輸出層誤差通用公式為: δ L = ? a L ⊙ f ′ ( z L ) \delta^{L} = \nabla_{a} L \odot f^{\prime}(z^{L}) δL=?a?Lf(zL)

  • f ′ ( z L ) f'(z?) f(zL) 是激活函數的導數在 z L z? zL 處的值

  • 這個逐元素乘法將梯度信息與激活函數的局部變化率結合起來

BP1公式的重要性

  • 這個 δ? 公式是輸出層的誤差項,它是反向傳播的起點。通過它,誤差可以繼續向網絡的前層傳播:
  1. ? a L ??L ?a?L告訴我們損失函數對輸出的敏感度
  2. f ′ ( z L ) f'(z?) f(zL)告訴我們激活函數在當前輸入下的變化率
  3. 它們的逐元素乘積給出了完整的誤差信號 δ L δ? δL

實際例子

  • 假設我們有一個簡單的輸出層,使用 sigmoid 激活函數:
    • a L = [ 0.8 , 0.3 ] , y = [ 1 , 0 ] a? = [0.8, 0.3], y = [1, 0] aL=[0.8,0.3],y=[1,0] (真實標簽)
    • 使用平方誤差損失: L = ? ∣ ∣ y ? a L ∣ ∣ 2 L = ?||y - a?||2 L=?∣∣y?aL2
    • ? a L = a L ? y = [ ? 0.2 , 0.3 ] ??L = a? - y = [-0.2, 0.3] ?a?L=aL?y=[?0.2,0.3]
    • sigmoid 的導數 f ′ ( z ) = a ( 1 ? a ) f'(z) = a(1-a) f(z)=a(1?a),設 f ′ ( z L ) = [ 0.16 , 0.21 ] f'(z?) = [0.16, 0.21] f(zL)=[0.16,0.21]
  • 那么 δ L = [ ? 0.2 , 0.3 ] ⊙ [ 0.16 , 0.21 ] = [ ? 0.032 , 0.063 ] δ? = [-0.2, 0.3] ⊙ [0.16, 0.21] = [-0.032, 0.063] δL=[?0.2,0.3][0.16,0.21]=[?0.032,0.063]

BP2第 l l l層誤差推導

  • 前置公式:
    • z l + 1 = w l + 1 a l + b l + 1 z^{l+1}=w^{l+1}a^{l}+b^{l+1} zl+1=wl+1al+bl+1
    • a l + 1 = δ ( z l ) a^{l+1}=\delta(z^l) al+1=δ(zl)
      δ l = ? L ? z l = ? L ? z i l + 1 × ? z i l + 1 ? z i l = δ i l + 1 × ? z i l + 1 a l × ? a l ? z l = δ i l + 1 × ( w l ) T × δ ′ ( z l ) = ( ( w l ) T δ i l + 1 ) ⊙ δ ′ ( z l ) \begin{align*} \delta^{l} &= \frac{\partial L}{\partial z^{l}}\\ &=\frac{\partial L}{\partial z_i^{l+1}} \times \frac{\partial z_i^{l+1}}{\partial z_i^{l}} \\ &=\delta_i^{l+1} \times \frac{\partial z_i^{l+1}}{a^l} \times \frac{\partial a^l}{\partial z^{l}}\\ &=\delta_i^{l+1} \times (w^l)^T \times \delta^{'}(z^l)\\ &=((w^l)^T \delta_i^{l+1}) \odot \delta^{'}(z^l) \end{align*} δl?=?zl?L?=?zil+1??L?×?zil??zil+1??=δil+1?×al?zil+1??×?zl?al?=δil+1?×(wl)T×δ(zl)=((wl)Tδil+1?)δ(zl)?
  • 總結:BP2第 l l l層誤差公式為: δ l = ( ( w l ) T δ l + 1 ) ⊙ f ′ ( z l ) \delta^{l} = ((w^{l})^{T} \delta^{l+1}) \odot f^{\prime}(z^{l}) δl=((wl)Tδl+1)f(zl)

BP3 :損失函數關于偏置(b)偏導的推導

  • 前置公式

    • a 1 l = δ ( z 1 l ) a_1^l=\delta(z_1^l) a1l?=δ(z1l?) a 2 l = δ ( z 2 l ) a_2^l=\delta(z_2^l) a2l?=δ(z2l?)
    • z l = w l a l ? 1 + b l z^l=w^la^{l-1}+b^l zl=wlal?1+bl
  • 求上圖中 b 1 b_1 b1?的偏導
    ? L ? b 1 = ? L ? z 1 l × ? z 1 l ? b 1 l = δ 1 l × 1 = δ 1 l \begin{align*} \frac{\partial L}{\partial b_1} &=\frac{\partial L}{\partial z_1^l} \times \frac{\partial z_1^l}{\partial b_1^l} \\ &= \delta_1^l \times 1 \\ &= \delta_1^l \end{align*} ?b1??L??=?z1l??L?×?b1l??z1l??=δ1l?×1=δ1l??

  • 求上圖中 b 2 b_2 b2?的偏導
    ? L ? b 2 = ? L ? z 2 l × ? z 2 l ? b 2 l = δ 2 l × 1 = δ 2 l \begin{align*} \frac{\partial L}{\partial b_2} &=\frac{\partial L}{\partial z_2^l} \times \frac{\partial z_2^l}{\partial b_2^l} \\ &= \delta_2^l \times 1 \\ &= \delta_2^l \end{align*} ?b2??L??=?z2l??L?×?b2l??z2l??=δ2l?×1=δ2l??

  • 總結:BP3 損失函數關于偏置(b)偏導為: ? L ? b i l = δ i l \frac{\partial L}{\partial b_{i}^{l}} = \delta_{i}^{l} ?bil??L?=δil?

BP4: 損失函數關于權值(w)偏導推導

  • 前置公式
    • z l = w l a l ? 1 + b l z^l=w^la^{l-1}+b^l zl=wlal?1+bl
    • δ i l = ? L ? z i l \delta_i^l=\frac{\partial L}{\partial z_i^l} δil?=?zil??L?
  • 詳細推導過程:
    ? L ? w i , j l = ? L ? z i l × ? z i l ? w i , j l = ? L ? z i l × a j l ? 1 = δ i l × a j l ? 1 = a j l ? 1 × δ i l \begin{align*} \frac{\partial L}{\partial w_{i,j}^l} &=\frac{\partial L}{\partial z_i^l} \times \frac{\partial z_i^l}{\partial w_{i,j}^l} \\ &=\frac{\partial L}{\partial z_i^l} \times a_j^{l-1} \\ &= \delta_i^l \times a_j^{l-1} \\ &= a_j^{l-1} \times \delta_i^l \end{align*} ?wi,jl??L??=?zil??L?×?wi,jl??zil??=?zil??L?×ajl?1?=δil?×ajl?1?=ajl?1?×δil??
  • 總結:BP4: 損失函數關于權值(w)偏導為: ? L ? w i , j l = a j l ? 1 δ i l \frac{\partial L}{\partial w_{i,j}^{l}} = a_{j}^{l-1} \delta_{i}^{l} ?wi,jl??L?=ajl?1?δil?

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

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

相關文章

極狐Gitlab 如何創建并使用子群組?

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 子群組 (BASIC ALL) 您可以將極狐GitLab 群組組織成子群組。您可以使用子群組: 內部和外部組織分開。因為每個子…

HarmonyOS基本的應用的配置

鴻蒙HarmonyOS組建頁面 1、創建ets文件并配置2、修改main_pages.json文件3、修改EntryAbility.ets文件(啟動時加載的頁面) 1、創建ets文件并配置 Index.ets是創建項目自動構建生成的,我們可以將其刪除掉,并重新在page文件夾下創建…

強化學習三大基本方法-DP、MC、TD

強化學習進階 本文主要講解 動態規劃法(Dynamic Programming DP)蒙特卡洛法(Monte Carlo MC)時序差分法(Temporal Difference TD) 1. 動態規劃法 1.1 動態規劃概念 動態規劃核心思想: 其核心…

《Spring Boot 3.0全新特性詳解與實戰案例》

大家好呀!今天讓我們輕松掌握Spring Boot 3.0的所有新特性!🚀 📌 第一章:Spring Boot 3.0簡介 1.1 什么是Spring Boot 3.0? Spring Boot 3.0就像是Java開發者的"超級工具箱"🧰&…

【推薦筆記工具】思源筆記 - 隱私優先的個人知識管理系統,支持 Markdown 排版、塊級引用和雙向鏈接

Typora 使用Typora好多年了,一直非常的喜歡這個簡潔的Markdown編輯工具,低版本的免費且好用。 Typora官網地址: https://typora.io/ https://typoraio.cn/ Typora的文檔樹如下,細看后,總覺得差點意思! 思源筆記 今…

虛擬文件系統

虛擬文件系統(Virtual File System,VFS)是操作系統內核中的一個抽象層,它為不同的文件系統(如ext4、NTFS、FAT32等)提供統一的訪問接口。通過VFS,用戶和應用程序無需關心底層文件系統的具體差異…

Kubernetes Gateway API 部署詳解:從入門到實戰

引言 在 Kubernetes 中管理網絡流量一直是一個復雜而關鍵的任務。傳統的 Ingress API 雖然廣泛使用,但其功能有限且擴展性不足。Kubernetes Gateway API 作為新一代標準,提供了更強大的路由控制能力,支持多協議、跨命名空間路由和細粒度的流量管理。本文將帶你從零開始部署…

關于大數據的基礎知識(二)——國內大數據產業鏈分布結構

成長路上不孤單😊😊😊😊😊😊 【14后😊///計算機愛好者😊///持續分享所學😊///如有需要歡迎收藏轉發///😊】 今日分享關于大數據的基礎知識(二&a…

py實現win自動化自動登陸qq

系列文章目錄 py實現win自動化自動登陸qq 文章目錄 系列文章目錄前言一、上代碼?總結 前言 之前都是網頁自動化感覺太容易了,就來嘗嘗win自動化,就先寫了一個qq登陸的,這個是拿到className 然后進行點擊等。 一、上代碼&#xf…

動態創建鏈表(頭插法、尾插法)

今天我們來學習動態創建鏈表!!! 動態創建鏈表:分為頭插法和尾插法 頭插法(動態創建): 頭插法就是讓新節點變成頭 代碼如下 吐血了:這邊有個非常重要的知識點,這邊第三…

Dp通用套路(閆式)

閆式dp分析法: 從集合角度來分析DP問題。 核心思想: DP是一種求有限集中的最值或者個數問題 由于集合中元素的數量都是指數級別的,直接用定義去求,把每種方案都用dfs暴力枚舉一遍,時間復雜度很高,此時用…

33、前臺搜索功能怎么實現?

輸入搜索的東西,如果為空 如果有 前端是提交表單,方式是 post 后端接受 調用 mybatisplus的categoryService.getById 用戶在搜索框內輸入關鍵字之后,執行 js 中的 load方法,前端提交表單, 后端 controller 中的loa…

Spring Boot 框架概述

1. 簡介 Spring Boot 是由 Pivotal 團隊開發的一個用于簡化 Spring 應用開發的框架。它通過提供默認配置、嵌入式服務器和自動配置等特性,讓開發者能夠更快速地構建獨立的、生產級別的 Spring 應用。 Spring Boot 的主要特點包括: 快速創建獨立的 Spri…

機器學習第二講:對比傳統編程:解決復雜規則場景

機器學習第二講:對比傳統編程:解決復雜規則場景 資料取自《零基礎學機器學習》。 查看總目錄:學習大綱 關于DeepSeek本地部署指南可以看下我之前寫的文章:DeepSeek R1本地與線上滿血版部署:超詳細手把手指南 一、場景…

Jackson Databind

Jackson Databind 是 Java 生態中處理 JSON 數據的核心庫之一,主要用于實現 Java 對象與 JSON 數據之間的序列化與反序列化。它是 Jackson 庫家族的一部分,通常與 jackson-core 和 jackson-annotations 一起使用,共同完成 JSON 處理任務。 核…

MySQL 中的事務隔離級別有哪些?

MySQL 支持四種標準的事務隔離級別,從低到高依次為:讀未提交(READ UNCOMMITTED)、讀已提交(READ COMMITTED)、可重復讀(REPEATABLE READ) 和 串行化(SERIALIZABLE&#x…

RAG優化知識庫檢索(1):基礎概念與架構

1. 引言 大語言模型(LLM)常常面臨著知識時效性、幻覺生成、定制化難等挑戰,檢索增強生成(Retrieval-Augmented Generation, RAG)技術作為解決這些問題的有效方案,正在成為AI應用開發的標準架構。 本文將從基礎概念入手,全面介紹RAG技術的核心原理、標準架構與組件,以及評…

安卓工程build.gradle中的Groovy的常見知識點

文章目錄 變量定義函數定義函數調用閉包參數APK輸出配置多channel配置依賴配置關鍵總結常見混淆點groovy高度兼容java 變量定義 def debugCdnUrl "\"http://xxx\"" //變量賦值函數定義 def getTime() { // 函數定義(def 是 Groovy 中定義變…

阿里云 SLS 多云日志接入最佳實踐:鏈路、成本與高可用性優化

作者:裘文成(翊韜) 摘要 隨著企業全球化業務的擴展,如何高效、經濟且可靠地將分布在海外各地的應用與基礎設施日志統一采集至阿里云日志服務 (SLS) 進行分析與監控,已成為關鍵挑戰。 本文聚焦于阿里云高性能日志采集…

deep seek簡介和解析

deepseek大合集,百度鏈接:https://pan.baidu.com/s/10EqPTg0dTat1UT6I-OlFtg?pwdw896 提取碼:w896 一篇文章帶你全面了解deep seek 目錄 一、deep seek是什么 DeepSeek-R1開源推理模型,具有以下特點: 技術優勢: 市場定位&…