深度神经网络DNN反向传播BP算法公式推导

深度神经网络DNN反向传播BP算法推导、δ法则

文章目录

  • 前言
  • 一、单个神经元的内部结构
  • 二、前向传播
  • 三、反向传播
  • 总结


前言

\;\;\;\;\; 本文详细推导深度神经网络DNN反向传播BP算法中对权重w和偏置b的更新公式。通过图片和一步步的数学公式推导深刻理解反向传播BP算法,δ法则。


提示:以下是本篇文章正文内容,转载请附上链接!

一、单个神经元的内部结构

\;\;\;\;\; 神经网络中的神经元是对生物神经元的模拟,它接收来自外部的若干个变量值,为每个变量值赋予不同的权重,对变量进行加权求和,并经过内部激活函数的处理,最终输出激活值。
在这里插入图片描述
首先对输入变量进行加权求和:
z = x 1 ∗ w 1 + x 2 ∗ w 2 + x 3 ∗ w 3 + ⋯ + x n ∗ w n + b = ∑ i = 1 n x i w i + b = x ∗ w + b \begin{aligned}\text{z}&=x_1*w_1+x_2*w_2+x_3*w_3+\cdots+x_n*w_n+b\\&=\sum_{i=1}^nx_iw_i+b\\&=\mathbf{x}*\mathbf{w}+b\end{aligned} z=x1w1+x2w2+x3w3++xnwn+b=i=1nxiwi+b=xw+b
然后将加权求和结果输入到激活函数:
y = f ( z ) = f ( x ∗ w + b ) y=f(z)=f(\mathbf{x}*\mathbf{w}+b) y=f(z)=f(xw+b)
输入 x \mathbf{x} x:神经元的输入变量值,可以理解为上一层神经元的输出结果。
权重 w \mathbf{w} w:每一个输入对应着一个权重,代表着该输入的重要程度,重要程度越高,则权重越大。
偏置b:偏置可以理解为激活该神经元的阈值,当超过阈值时该神经元被激活。
激活函数f:当输入激励达到一定强度,神经元就会被激活,产生输出信号。模拟这一细胞激活过程的函数,就叫激活函数。
输出y:激活函数的输出结果,不同的激活函数有着不同的输出结果。

二、前向传播

先进行相关符号的定义:
w j k l w_{jk}^{l} wjkl:第( l − 1 l-1 l1)层的第 k k k 个神经元连接到第 l l l 层的第 j j j 个神经元的权重
b j l b_j^l bjl:第 l l l 层的第 j j j 个神经元的偏置
z j l z_j^l zjl:第 l l l 层的第 j j j 个神经元的带权输入(上一层的激活值与偏置的加权之和)
a j l a_j^l ajl:第 l l l 层的第 j j j 个神经元的激活值

在这里插入图片描述
第1层神经元的带权输入值为:
[ z 1 ( 1 ) z 2 ( 1 ) ] = [ w 11 ( 1 ) w 12 ( 1 ) w 21 ( 1 ) w 22 ( 1 ) ] [ x 1 x 2 ] + [ b 1 ( 1 ) b 2 ( 1 ) ] = w 1 x + b 1 \begin{bmatrix}z_1^{(1)}\\z_2^{(1)}\end{bmatrix}=\begin{bmatrix}w_{11}^{(1)}&w_{12}^{(1)}\\w_{21}^{(1)}&w_{22}^{(1)}\end{bmatrix}\begin{bmatrix}x_1\\x_2\end{bmatrix}+\left[\begin{array}{c}b_1^{(1)}\\b_2^{(1)}\end{array}\right]=\mathbf{w}_1\mathbf{x}+\mathbf{b}_1 [z1(1)z2(1)]=[w11(1)w21(1)w12(1)w22(1)][x1x2]+[b1(1)b2(1)]=w1x+b1
第1层神经元的激活值为,其中 σ \sigma σ为激活函数:
y 1 = [ a 1 ( 1 ) a 2 ( 1 ) ] = [ σ ( z 1 ( 1 ) ) σ ( z 2 ( 1 ) ) ] \mathbf{y}_1=\left[\begin{array}{c}a_1^{(1)}\\a_2^{(1)}\end{array}\right]=\left[\begin{array}{c}\sigma\Big(z_1^{(1)}\Big)\\\sigma\Big(z_2^{(1)}\Big)\end{array}\right] y1=[a1(1)a2(1)]= σ(z1(1))σ(z2(1))
第2层神经元的带权输入值为:
[ z 1 ( 2 ) z 2 ( 2 ) ] = [ w 11 ( 2 ) w 12 ( 2 ) w 21 ( 2 ) w 22 ( 2 ) ] [ a 1 ( 1 ) a 2 ( 1 ) ] + [ b 1 ( 2 ) b 2 ( 2 ) ] = w 2 y 1 + b 2 \begin{bmatrix}z_1^{(2)}\\z_2^{(2)}\end{bmatrix}=\begin{bmatrix}w_{11}^{(2)}&w_{12}^{(2)}\\w_{21}^{(2)}&w_{22}^{(2)}\end{bmatrix}\left[\begin{array}{c}a_1^{(1)}\\a_2^{(1)}\end{array}\right]+\left[\begin{array}{c}b_1^{(2)}\\b_2^{(2)}\end{array}\right]=\mathbf{w}_2\mathbf{y}_1+\mathbf{b}_2 [z1(2)z2(2)]=[w11(2)w21(2)w12(2)w22(2)][a1(1)a2(1)]+[b1(2)b2(2)]=w2y1+b2
第2层神经元的激活值为:
y = [ y 1 y 2 ] = [ a 1 ( 2 ) a 2 ( 2 ) ] = [ σ ( z 1 ( 2 ) ) σ ( z 2 ( 2 ) ) ] \mathbf{y}=\left[\begin{array}{c}y_1\\y_2\end{array}\right]=\left[\begin{array}{c}a_1^{(2)}\\a_2^{(2)}\end{array}\right]=\left[\begin{array}{c}\sigma\Big(z_1^{(2)}\Big)\\\sigma\Big(z_2^{(2)}\Big)\end{array}\right] y=[y1y2]=[a1(2)a2(2)]= σ(z1(2))σ(z2(2))

三、反向传播

对于每一个样本,拟合误差用如下二次损失函数表示:
C = 1 2 ∑ j ( y j − d j ) 2 = 1 2 ∑ j ( a j ( 2 ) − d j ) 2 \begin{aligned}C&=\frac12\sum_j(y_j-d_j)^2=\frac12\sum_j(a_j^{(2)}-d_j)^2\end{aligned} C=21j(yjdj)2=21j(aj(2)dj)2
其中 j j j 表示第 j j j 个神经元, y j y_j yj 表示输出层第 j j j 个神经元的预测值(激活值), d j d_j dj 表示第 j j j 个神经元的标签。

在这里插入图片描述

第2层神经元的误差为:
e 1 = y 1 − d 1 e 2 = y 2 − d 2 e_{1} = y_{1} - d_{1}\\e_{2} = y_{2} - d_{2} e1=y1d1e2=y2d2
第2层第1个神经元的 δ 1 ( 2 ) \delta_1^{(2)} δ1(2) 为:
δ 1 ( 2 ) = ∂ C ∂ z 1 ( 2 ) = ∂ C ∂ a 1 ( 2 ) ⋅ ∂ a 1 ( 2 ) ∂ z 1 ( 2 ) = 1 2 ∑ j ( a j ( 2 ) − d j ) 2 ∂ a 1 ( 2 ) ⋅ ∂ a 1 ( 2 ) ∂ z 1 ( 2 ) = ( a 1 ( 2 ) − d 1 ) ⋅ ∂ a 1 ( 2 ) ∂ z 1 ( 2 ) = ( y 1 − d 1 ) ⋅ σ ′ ( z 1 ( 2 ) ) = σ ′ ( z 1 ( 2 ) ) ⋅ e 1 \begin{aligned} \delta_1^{(2)}=\frac{\partial C}{\partial z_1^{(2)}} &=\frac{\partial C}{\partial a_1^{(2)}}\cdot\frac{\partial a_1^{(2)}}{\partial z_1^{(2)}} =\frac{\frac12\sum_j(a_j^{(2)}-d_j)^2}{\partial a_1^{(2)}}\cdot\frac{\partial a_1^{(2)}}{\partial z_1^{(2)}} \\ &=\begin{pmatrix}a_1^{(2)}-d_1\end{pmatrix}\cdot\frac{\partial a_1^{(2)}}{\partial z_1^{(2)}} =(y_1-d_1)\cdot\sigma^{\prime}(z_1^{(2)})=\sigma^{\prime}(z_1^{(2)})\cdot e_{1} \end{aligned} δ1(2)=z1(2)C=a1(2)Cz1(2)a1(2)=a1(2)21j(aj(2)dj)2z1(2)a1(2)=(a1(2)d1)z1(2)a1(2)=(y1d1)σ(z1(2))=σ(z1(2))e1
同理,第2层第2个神经元的 δ 2 ( 2 ) \delta_2^{(2)} δ2(2) 为:
δ 2 ( 2 ) = σ ′ ( z 2 ( 2 ) ) ⋅ e 2 \begin{aligned} \delta_2^{(2)}=\sigma^{\prime}(z_2^{(2)})\cdot e_{2} \end{aligned} δ2(2)=σ(z2(2))e2
第2层第1个神经元偏置 b 1 ( 2 ) b_1^{(2)} b1(2) 的偏导数为:
∂ C ∂ b 1 ( 2 ) = ∂ C ∂ z 1 ( 2 ) ⋅ ∂ z 1 ( 2 ) ∂ b 1 ( 2 ) = δ 1 ( 2 ) ⋅ ∂ ( w 11 ( 2 ) a 1 ( 1 ) + w 12 ( 2 ) a 2 ( 1 ) + b 1 ( 2 ) ) ∂ b 1 ( 2 ) = δ 1 ( 2 ) \begin{aligned} \frac{\partial C}{\partial b_1^{(2)}}=\frac{\partial C}{\partial z_1^{(2)}}\cdot\frac{\partial z_1^{(2)}}{\partial b_1^{(2)}} =\delta_1^{(2)}\cdot\frac{\partial\left(w_{11}^{(2)}a_1^{(1)}+w_{12}^{(2)}a_2^{(1)}+b_1^{(2)}\right)}{\partial b_1^{(2)}} =\delta_1^{(2)} \end{aligned} b1(2)C=z1(2)Cb1(2)z1(2)=δ1(2)b1(2)(w11(2)a1(1)+w12(2)a2(1)+b1(2))=δ1(2)
同理: ∂ C ∂ b 2 ( 2 ) = = δ 2 ( 2 ) \begin{aligned} \frac{\partial C}{\partial b_2^{(2)}}= =\delta_2^{(2)} \end{aligned} b2(2)C==δ2(2)
第2层第1个神经元权重 w 11 ( 2 ) w_{11}^{(2)} w11(2) 的偏导数为:
∂ C ∂ w 11 ( 2 ) = ∂ C ∂ z 1 ( 2 ) ⋅ ∂ z 1 ( 2 ) ∂ w 11 ( 2 ) = δ 1 ( 2 ) ⋅ ∂ ( w 11 ( 2 ) a 1 ( 1 ) + w 12 ( 2 ) a 2 ( 1 ) + b 1 ( 2 ) ) ∂ w 11 ( 2 ) = δ 1 ( 2 ) ⋅ a 1 ( 1 ) \begin{aligned} \frac{\partial C}{\partial w_{11}^{(2)}} &=\frac{\partial C}{\partial z_1^{(2)}}\cdot\frac{\partial z_1^{(2)}}{\partial w_{11}^{(2)}}=\delta_{1}^{(2)}\cdot\frac{\partial\left(w_{11}^{(2)}a_1^{(1)}+w_{12}^{(2)}a_2^{(1)}+b_1^{(2)}\right)}{\partial w_{11}^{(2)}}=\delta_1^{(2)}\cdot a_1^{(1)} \end{aligned} w11(2)C=z1(2)Cw11(2)z1(2)=δ1(2)w11(2)(w11(2)a1(1)+w12(2)a2(1)+b1(2))=δ1(2)a1(1)
同理得: ∂ C ∂ w 2 = [ δ 1 ( 2 ) δ 2 ( 2 ) ] y 1 T \begin{aligned} \frac{\partial C}{\partial \mathbf{w}_2} =\left[\begin{array}{c}\delta_1^{(2)}\\\delta_2^{(2)}\end{array}\right] \end{aligned}\mathbf{y}_1^{T} w2C=[δ1(2)δ2(2)]y1T
在这里插入图片描述
[ e 1 ( 1 ) e 2 ( 1 ) ] = [ w 11 ( 2 ) w 21 ( 2 ) w 12 ( 2 ) w 22 ( 2 ) ] [ δ 1 δ 2 ] = w 2 T [ δ 1 δ 2 ] \begin{bmatrix}e_1^{(1)}\\e_2^{(1)}\end{bmatrix}=\begin{bmatrix}w_{11}^{(2)}&w_{21}^{(2)}\\w_{12}^{(2)}&w_{22}^{(2)}\end{bmatrix}\begin{bmatrix}\delta_1\\\delta_2\end{bmatrix}=\mathbf{w}_2^T\begin{bmatrix}\delta_1\\\delta_2\end{bmatrix} [e1(1)e2(1)]=[w11(2)w12(2)w21(2)w22(2)][δ1δ2]=w2T[δ1δ2]
那么可以总结以下公式:
δ j l = ( a j l − d j ) ⋅ σ ′ ( z j l ) ∂ C ∂ b j l = δ j l ∂ C ∂ w j k l = δ j l ⋅ a k l − 1 δ l − 1 = ( ( w l ) T δ l ) ⊙ σ ′ ( z l − 1 ) \begin{aligned} &\delta_j^l=(a_j^l-d_j)\cdot\sigma^{\prime}(z_j^l) \\ &\frac{\partial C}{\partial b_j^l}=\delta_j^l \\ &\frac{\partial C}{\partial w_{jk}^l}=\delta_j^l\cdot a_k^{l-1} \\ &\delta^{l-1}=\left(\left(w^l\right)^T\delta^l\right)\odot\sigma^{\prime}\left(z^{l-1}\right) \end{aligned} δjl=(ajldj)σ(zjl)bjlC=δjlwjklC=δjlakl1δl1=((wl)Tδl)σ(zl1)
然后更新权重和偏置:
w j k l → ( w j k l ) ′ = w j k l − η ∂ C ∂ w j k l b j l → ( b j l ) ′ = b j l − η ∂ C ∂ b j l w_{jk}^l\to\left(w_{jk}^l\right)^{\prime}=w_{jk}^l-\eta\frac{\partial C}{\partial w_{jk}^l}\\b_j^l\to\left(b_j^l\right)^{\prime}=b_j^l-\eta\frac{\partial C}{\partial b_j^l} wjkl(wjkl)=wjklηwjklCbjl(bjl)=bjlηbjlC


总结

\;\;\;\;\; 后面推导的有些跳跃,读者自己多多思考,公式是没有问题的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/472429.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

借助Excel实现Word表格快速排序

实例需求:Word中的表格如下图所示,为了强化记忆,希望能够将表格内容随机排序,表格第一列仍然按照顺序编号,即编号不跟随表格行内容调整。 乱序之后的效果如下图所示(每次运行代码的结果都不一定相同&#x…

HarmonyOS 开发环境搭建

HarmonyOS(鸿蒙操作系统)作为一种面向全场景多设备的智能操作系统,正逐渐在市场上崭露头角。为了进入HarmonyOS生态,开发者需要搭建一个高效的开发环境。本文将详细介绍如何搭建HarmonyOS开发环境,特别是如何安装和配置…

Fish Agent V0.13B:Fish Audio的语音处理新突破,AI语音助手的未来已来!

近日,Fish Audio公司发布了一款全新的语音处理模型——Fish Agent V0.13B,这款模型以其高效、精确的语音生成和处理能力,尤其是在模拟或克隆不同声音方面的表现,引起了广泛关注。这不仅意味着我们在拥有一个声音自然、反应迅速的A…

Shell基础2

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…

系统架构师考试18天极限备考复盘(2024年11月)

前言 写下这篇复盘笔记的时候还没有出成绩。泽崽目前是在读研究生,在经过 大概2周多个全日 的极限备考之后,于11月10日参加了软考的系统架构师考试(高级)。目前12月下旬才会出成绩,对于“基础知识-案例分析-论文”的估…

Tessy学习笔记—requirement(需求)的管理

1:什么是需求 Tessy中的requirement(需求)是,我们还是跟着Tessy官方的文档,继续学习,打开官方自带的工程Is Value In Range Requirement.project。 按照官方自带的操作手册,导入txt类型的需求…

web——sqliabs靶场——第六关——报错注入和布尔盲注

这一关还是使用报错注入和布尔盲注 一. 判断是否有sql注入 二. 判断注入的类型 是双引号的注入类型。 3.报错注入的检测 可以使用sql报错注入 4.查看库名 5. 查看表名 6.查看字段名 7. 查具体字段的内容 结束 布尔盲注 结束

Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV买卖股票的最佳时机III

Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV&&买卖股票的最佳时机III&&309.买卖股票的最佳时机含冷冻期 动态规划应该如何学习?-CSDN博客 本次题解参考自灵神的做法,大家也多多支持灵神的题解 买卖股票的最佳时机【…

FlinkSql读取kafka数据流的方法(scala)

我的scala版本为2.12 <scala.binary.version>2.12</scala.binary.version> 我的Flink版本为1.13.6 <flink.version>1.13.6</flink.version> FlinkSql读取kafka数据流需要如下依赖&#xff1a; <dependency><groupId>org.apache.flink&…

RabbitMQ实战启程:从原理到部署的全方位探索(上)

文章目录 一、RabbitMQ简介1.1、概述1.2、特性 二、RabbitMQ原理架构三、RabbitMQ应用场景3.1 简单模式3.2 工作模式3.3 发布订阅3.4 路由模式3.5 主题订阅模式 四、同类中间件对比五、RabbitMQ部署5.1 单机部署5.1.1 安装erlang5.1.2 安装rabbitmq 5.2 集群部署&#xff08;镜…

动态内存管理(c语言)

我们通常开辟空间的方式 int val 20; //大小为4个字节 char arr[10] {0} //开辟出一块连续的空间且大小为10 但是上面开辟空间方式的特点 1.空间开辟大小是固定的 2.数组在声明得时候&#xff0c;必须指定数组得长度&#xff0c;它所需要得内存在编译时分配 但是以上的方式不能…

【从零开始的LeetCode-算法】3270. 求出数字答案

给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数位&#xff08;1 < …

STM32+AI语音识别智能家居系统

基于 STM32 和 AI 语音识别的智能家居系统的详细硬件和软件设计&#xff0c;包括各个模块的详细描述和代码示例。 一、硬件设计 1. 微控制器&#xff08;STM32&#xff09;&#xff1a; 选择 STM32F7 系列或更高性能的芯片&#xff0c;如 STM32F767ZIT6&#xff0c;以满足处理…

信息收集—JS框架识别泄露提取API接口泄露FUZZ爬虫插件项目

前言 免杀结束了&#xff0c;我们开个新的篇章——信息收集。为什么我一开始先写信息收集的文章呢&#xff0c;是因为现在我才发现我的信息收集能力其实有点弱的&#xff0c;所以呢开始知不足&#xff0c;而后进。 什么是JS JS就是JavaScript的简称&#xff0c;它和Java是没…

智能化护士排班系统的设计与实现(文末附源码)

自动排班-护士(分白班|夜班) 当服务器启动时检测需要自动排班,自动开始排班的算法执行 获得本周的所有日期,例如2023-01-29.....2023-02-04依次对每个科室&#xff0c;从第一天开始,逐天进行排班&#xff0c;分别设置两个二个数组&#xff0c;day[7];night[7]分别记忆一周内每…

【原创】java+ssm+mysql社区疫情防控管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

Flink Source 详解

Flink Source 详解 原文 flip-27 FLIP-27 介绍了新版本Source 接口定义及架构 相比于SourceFunction&#xff0c;新版本的Source更具灵活性&#xff0c;原因是将“splits数据获取”与真“正数据获取”逻辑进行了分离 重要部件 Source 作为工厂类&#xff0c;会创建以下两…

CSS回顾-基础知识详解

一、引言 在前端开发领域&#xff0c;CSS 曾是构建网页视觉效果的关键&#xff0c;与 HTML、JavaScript 一起打造精彩的网络世界。但随着组件库的大量涌现&#xff0c;我们亲手书写 CSS 样式的情况越来越少&#xff0c;CSS 基础知识也逐渐被我们遗忘。 现在&#xff0c;这种遗…

11.08-10.14谷粒商城

谷粒商城--品牌管理 前端表单校验 品牌新增 品牌修改 校验规则 dataRule: {name: [{ required: true, message: "品牌名不能为空", trigger: "blur" }],logo: [{ required: true, message: "品牌logo地址不能为空", trigger: "blur"…

无插件H5播放器EasyPlayer.js网页web无插件播放器选择全屏时,视频区域并没有全屏问题的解决方案

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…