交叉熵损失函数为代表的两层神经网络的反向传播量化求导计算公式
反向传播(back propagation,BP)算法也称误差逆传播,是神经网络训练的核心算法。我们通常说的 BP 神经网络是指应用反向传播算法进行训练的神经网络模型。反向传播算法的工作机制究竟是怎样的呢?我们以一个两层(即单隐层)网络为例,也就是图 8-5 中的网络结构,给出反向传播的基本推导过程。
假设输入层为 x x x ,有 m m m个训练样本,输入层与隐藏层之间的权重和偏置分别为 w 1 w_1 w1 和 b 1 b_1 b1,线性加权计算结果为: z 1 = w 1 x + b 1 z_1 = w_1 x + b_1 z1=w1x+b1,采用 Sigmoid 激活函数,激活输出为: a 1 = σ ( z 1 ) a_1 = \sigma(z_1) a1=σ(z1)
而隐藏层到输出层的权重和偏置分别为 w 2 w_2 w2 和 b 2 b_2 b2,线性加权计算结果为: z 2 = w 2 x + b 2 z_2 = w_2 x + b_2 z2=w2x+b2,激活输出为: a 2 = σ ( z 2 ) a_2 = \sigma(z_2) a2=σ(z2)。所以,这个两层网络的前向计算过程是为: x → z 1 → a 1 → z 2 → a 2 x → z_1 → a_1 → z_2→a_2 x→z1→a1→z2→a2
直观而言,反向传播就是将前向计算过程反过来,但必须是梯度计算的方向反过来,假设这里采用如下交叉熵损失函数:
L ( y , a ) = − ( y log a + ( 1 − y ) log ( 1 − a ) ) (8-11) L(y, a) = -(y \log a + (1 - y) \log (1 - a)) \tag{8-11} L(y,a)=−(yloga+(1−y)log(1−a))(8-11)
反向传播是基于梯度下降策略的,主要是从目标参数的负梯度方向更新参数,所以基于损失函数对前向计算过程中各个变量进行梯度计算是关键。将前向计算过程反过来,基于损失函数的梯度计算顺序就是 d a 2 → d z 2 → d w 2 → d b 2 → d a 1 → d z 1 → d w 1 → d b 1 da_2→ dz_2 → dw_2 → db_2→da_1→ dz_1→ dw_1 → db_1 da2→dz2→dw2→db2→da1→dz1→dw1→db1
首先,计算损失函数 L ( y , a 2 ) L(y, a_2) L(y,a2) 关于 a 2 a_2 a2 的导数 d a 2 da_2 da2,影响输出 a 2 a_2 a2 的是谁呢?由前向传播可知, a 2 a_2 a2 是由 z 2 z_2 z2 经激活函数激活后计算而来的,所以计算损失函数关于 z 2 z_2 z2 的导数 d z 2 dz_2 dz2,必须经过 a 2 a_2 a2 进行复合函数求导,即微积分中常说的链式求导法则。然后继续往前推导,影响 z 2 z_2 z2 的又是哪些变量呢?由前向计算可知, z 2 = w 2 x + b 2 z_2 = w_2x + b_2 z2=w2x+b2,影响 z 2 z_2 z2 的有 w 2 w_2 w2, a 1 a_1 a1 和 b 2 b_2 b2,继续按照链式求导法则进行求导即可。最终以交叉熵损失函数为代表的两层神经网络的反向传播量化求导计算公式如下:
∂ L ∂ a 2 = d d a 2 L ( a 2 , y ) = ( − y log a 2 − ( 1 − y ) log ( 1 − a 2 ) ) ′ = − y a 2 + 1 − y 1 − a 2 (8-12) \frac{\partial L}{\partial a_2} = \frac{d}{da_2}L(a_2, y) = (-y\log a_2 - (1-y)\log(1-a_2))' = -\frac{y}{a_2}+ \frac{1-y}{1-a_2} \tag{8-12} ∂a2∂L=da2dL(a2,y)=(−yloga2−(1−y)log(1−a2))′=−a2y+1−a21−y(8-12)
∂ L ∂ Z 2 = ∂ L ∂ a 2 ∂ a 2 ∂ Z 2 = a 2 − y (8-13) \frac{\partial L}{\partial Z_2} = \frac{\partial L}{\partial a_2}\frac{\partial a_2}{\partial Z_2} = a_2 - y \tag{8-13} ∂Z2∂L=∂a2∂L∂Z2∂a2=a2−y(8-13)
∂ L ∂ w 2 = ∂ L ∂ a 2 ∂ a 2 ∂ Z 2 ∂ Z 2 ∂ w 2 = 1 m ∂ L ∂ Z 2 a 1 = 1 m ( a 2 − y ) a 1 (8-14) \frac{\partial L}{\partial w_2} = \frac{\partial L}{\partial a_2}\frac{\partial a_2}{\partial Z_2}\frac{\partial Z_2}{\partial w_2} = \frac{1}{m}\frac{\partial L}{\partial Z_2} a_1= \frac{1}{m}(a_2 - y)a_1 \tag{8-14} ∂w2∂L=∂a2∂L∂Z2∂a2∂w2∂Z2=m1∂Z2∂La1=m1(a2−y)a1(8-14)
∂ L ∂ b 2 = ∂ L ∂ a 2 ∂ a 2 ∂ Z 2 ∂ Z 2 ∂ b 2 = ∂ L ∂ Z 2 = a 2 − y (8-15) \frac{\partial L}{\partial b_2} = \frac{\partial L}{\partial a_2}\frac{\partial a_2}{\partial Z_2}\frac{\partial Z_2}{\partial b_2} = \frac{\partial L}{\partial Z_2} = a_2 - y \tag{8-15} ∂b2∂L=∂a2∂L∂Z2∂a2∂b2∂Z2=∂Z2∂L=a2−y(8-15)
∂ L ∂ a 1 = ∂ L ∂ a 2 ∂ a 2 ∂ Z 2 ∂ Z 2 ∂ a 1 = ( a 2 − y ) w 2 (8-16) \frac{\partial L}{\partial a_1} = \frac{\partial L}{\partial a_2}\frac{\partial a_2}{\partial Z_2}\frac{\partial Z_2}{\partial a_1} = (a_2 - y)w_2 \tag{8-16} ∂a1∂L=∂a2∂L∂Z2∂a2∂a1∂Z2=(a2−y)w2(8-16)
∂ L ∂ Z 1 = ∂ L ∂ a 2 ∂ a 2 ∂ Z 2 ∂ Z 2 ∂ a 1 ∂ a 1 ∂ Z 1 = ( a 2 − y ) w 2 σ ′ ( Z 1 ) (8-17) \frac{\partial L}{\partial Z_1} = \frac{\partial L}{\partial a_2}\frac{\partial a_2}{\partial Z_2}\frac{\partial Z_2}{\partial a_1} \frac{\partial a_1}{\partial Z_1} = (a_2 - y)w_2\sigma'(Z_1) \tag{8-17} ∂Z1∂L=∂a2∂L∂Z2∂a2∂a1∂Z2∂Z1∂a1=(a2−y)w2σ′(Z1)(8-17)
∂ L ∂ w 1 = ∂ L ∂ a 2 ∂ a 2 ∂ Z 2 ∂ Z 2 ∂ a 1 ∂ a 1 ∂ Z 1 ∂ Z 1 ∂ w 1 = ( a 2 − y ) w 2 σ ′ ( Z 1 ) x (8-18) \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial a_2}\frac{\partial a_2}{\partial Z_2}\frac{\partial Z_2}{\partial a_1} \frac{\partial a_1}{\partial Z_1}\frac{\partial Z_1}{\partial w_1} = (a_2 - y)w_2\sigma'(Z_1)x \tag{8-18} ∂w1∂L=∂a2∂L∂Z2∂a2∂a1∂Z2∂Z1∂a1∂w1∂Z1=(a2−y)w2σ′(Z1)x(8-18)
∂ L ∂ b 1 = ∂ L ∂ a 2 ∂ a 2 ∂ Z 2 ∂ Z 2 ∂ a 1 ∂ a 1 ∂ Z 1 ∂ Z 1 ∂ b 1 = ( a 2 − y ) w 2 σ ′ ( Z 1 ) (8-19) \frac{\partial L}{\partial b_1} = \frac{\partial L}{\partial a_2}\frac{\partial a_2}{\partial Z_2}\frac{\partial Z_2}{\partial a_1} \frac{\partial a_1}{\partial Z_1}\frac{\partial Z_1}{\partial b_1} = (a_2 - y)w_2\sigma'(Z_1) \tag{8-19} ∂b1∂L=∂a2∂L∂Z2∂a2∂a1∂Z2∂Z1∂a1∂b1∂Z1=(a2−y)w2σ′(Z1)(8-19)
以上公式具体的推导过程:
公式8-13:损失函数对输出层激活值Z2的导数
公式8-14:损失函数对输出层权重w2的梯度
公式8-15:损失函数对输出层偏置b2的梯度
公式8-16:损失函数对隐藏层激活值a1的梯度
公式8-17:损失函数对隐藏层加权输入Z1的导数
公式8-18:损失函数对隐藏层权重w1的梯度
公式8-19:损失函数对隐藏层偏置b1的梯度
相关文章:
交叉熵损失函数为代表的两层神经网络的反向传播量化求导计算公式
反向传播(back propagation,BP)算法也称误差逆传播,是神经网络训练的核心算法。我们通常说的 BP 神经网络是指应用反向传播算法进行训练的神经网络模型。反向传播算法的工作机制究竟是怎样的呢?我们以一个两层…...
数据结构——八大排序(上)
数据结构中的八大排序算法是计算机科学领域经典的排序方法,它们各自具有不同的特点和适用场景。以下是这八大排序算法的详细介绍: 一、插入排序(Insertion Sort) 核心思想:将数组中的所有元素依次跟前面已经排好的元…...
vxe-table 导入导出功能全解析
一、vxe-table 导入导出功能概述 vxe-table 的导入导出功能在数据处理中具有至关重要的作用。在现代数据管理和处理的场景中,高效地导入和导出数据是提高工作效率的关键。 对于导入功能而言,它允许用户将外部的表格数据,如 Excel 文件&…...
常用STL的操作以及特点
C 标准模板库(STL)提供了很多常用的数据结构和算法,极大简化了开发工作。STL 包括容器(如 vector、list、map 等)、算法(如排序、查找等)以及迭代器。以下是一些常用 STL 容器的操作以及它们的特…...
025 elasticsearch索引管理-Java原生客户端
文章目录 pom.xml1创建索引2.创建索引并设置settings信息3.创建索引并设置mapping信息4.删除索引库5.给未设置mapping的索引设置mapping elasticsearch版本7.10.2,要求java客户端与之相匹配,推荐Springboot版本是2.3以上版本 依赖配置使用的是JUnit 5&am…...

Gin框架操作指南10:服务器与高级功能
官方文档地址(中文):https://gin-gonic.com/zh-cn/docs/ 注:本教程采用工作区机制,所以一个项目下载了Gin框架,其余项目就无需重复下载,想了解的读者可阅读第一节:Gin操作指南&#…...

AIGC技术的学习 系列一
文章目录 前言一、AIGC技术演进1.1 图像视频生成1.2. 文本生成1.3. 多模态生成1.4. 小结二、CAD&CAE软件介绍2.1. CAD软件2.2. CAE软件2.3. 小结三、AIGC技术与CAD&CAE软件的集成案例3.1. 土建设计领域3.2. 机械设计领域四、结语五、参考文献总结前言 在全球智能制造的…...

Milvus×Dify半小时轻松构建RAG系统
最近,检索增强生成(RAG)技术在AI界引起了广泛关注。作为一种将知识库与生成模型结合的新型架构,RAG大大提升了AI应用的实际表现。而在构建RAG系统时,Milvus作为业界领先的开源向量数据库,扮演着关键角色。本…...

wireshark 解密浏览器https数据包
一、导出浏览器证书有两种方法 1、在浏览器快捷方式追加启动参数: --ssl-key-log-file"d:\log\2.log" C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --ssl-key-log-file"d:\log\2.log" 2、环境变量中新建用…...

【HTML】构建网页的基石
我的主页:2的n次方_ HTML 是一种超文本标记语言,不仅有文本,还能包含图片,音频等 1. HTML 的文件基本结构 html 标签是整个 html 文件的最顶层标签,head 标签中写页面的属性,body 标签是页面中显示的…...
rust不允许在全局区定义普通变量!
文章目录 C 中的全局变量Rust 中的全局变量设计哲学的体现 在 C 和 Rust 中,全局变量的处理方式体现了这两种语言设计哲学上的一些根本性差异: C 中的全局变量 C 允许在全局作用域中定义变量。这些变量在程序的整个生命周期内都存在,从程序开…...
量化投资中的数据驱动决策:大数据如何改变金融市场
随着科技的进步,金融行业迎来了前所未有的变革,量化投资作为其中的代表,逐渐成为投资市场的主流。量化投资是基于数学模型、数据分析以及算法策略的投资方式,与传统依赖经验和直觉的投资方法相比,它的核心优势在于能够…...

MySQL 设计数据表
一个数据表主要包含信息有 : 表名、主键、字段、数据类型、索引,本节主要介绍表的命名规范、字段命名、字段的数据类型选择。 新建的表都是新建在 “item_name” 数据库中的,新建 “item_name” 数据库命令如下 : CREATE DATABASE item_name;新建数据库…...

【大数据技术基础 | 实验一】配置SSH免密登录
文章目录 一、实验目的二、实验要求三、实验原理(一)大数据实验一体机(二)SSH免密认证 四、实验环境五、实验内容和步骤(一)搭建集群服务器(二)添加域名映射(三ÿ…...

地级市碳排放效率测算2006-2021年
为了测算碳排放效率,研究者们采用了多种方法,其中超效率SBM(Slack-Based Measure)和超效率CCR(Charnes, Cooper and Rhodes)模型是常用的两种方法。这些模型可以有效地评估决策单元的相对有效性,…...

周易解读:四象
四 象 在前面呢,我是讲完了太极与两仪的知识。这一节,我们来讲解四象的内容。 关于四象的知识,它在正式的周易的经文里面,它并没有多少用处。但是呢,在基础知识的学习里面,四象的知识,大家是…...

Java设计模式梳理:行为型模式(策略,观察者等)
行为型模式 行为型模式关注的是各个类之间的相互作用,将职责划分清楚,使得我们的代码更加地清晰。 策略模式 策略模式太常用了,所以把它放到最前面进行介绍。它比较简单,我就不废话,直接用代码说事吧。 下面设计的…...
【MySQL】入门篇—基本数据类型:使用LIMIT限制结果集
为了提高查询效率和用户体验,MySQL提供了LIMIT子句,用于限制查询结果的行数。LIMIT不仅可以提高性能,还可以帮助用户快速获取所需的数据,尤其在分页显示数据时非常有用。 应用场景: 分页显示:在网页应用中…...
PostgreSQL与MySQL在语法上的区别
PostgreSQL与MySQL在语法上的区别 在数据库管理系统中,PostgreSQL和MySQL都是非常受欢迎的选择。虽然它们都是一种关系型数据库管理系统(RDBMS),但它们在语法上有一些显著的区别。本文将介绍PostgreSQL和MySQL在语法上的主要区别。 数据类型 PostgreS…...

frameworks 之InputDispatcher
frameworks 之InputDispatcher 1. 填充Iq2.进入循环3.进入oq4. 发布消息,并将数据放进去wq5. 接收消息6. 移除wq android 输入事件 主要分 2个流程 事件读取 和 事件分发。本文讲解事件分发流程。 涉及到的类如下 -frameworks/native/services/inputflinger/Input…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...