反向传播的微积分原理 | Chapter 4 | Deep Learning | 3Blue1Brown
目录
- 前言
- 1. 简介
- 2. 神经网络中的链式法则
- 3. 微积分的计算
- 4. 公式含义
- 5. 代价函数对权重偏置的敏感度
- 6. 多个神经元的情形
- 7. 回顾
- 相关资料
- 结语
前言
3Blue1Brown 视频笔记,仅供自己参考
这个章节主要来深度讲解反向传播中的一些微积分理论
官网:https://www.3blue1brown.com
视频:https://www.bilibili.com/video/BV16x411V7Qg
1. 简介
这章开始我们就假设你已经看过第三章了,上章让大家直观上感受了反向传播算法的原理
在这章里,我们会更深入讲解一些其中的微积分理论,这个看不太懂很正常,所以我们的六字格言 “停一停想一想” 在这依旧管用,这章我们的目标是给大家展示在机器学习中,我们一般是怎么理解链式法则的,这点跟别的基础微积分课讲得会有点不一样
对于微积分不够熟悉的观众,我之前已经做了一整个系列了,大家感兴趣的可以看看:Calculus
2. 神经网络中的链式法则
我们从最最简单的网络讲起吧,每层只有一个神经元
图上这个网络就是由 3 个权重和 3 个偏置决定的,我们的目标是理解代价函数对于这些变量有多敏感,这样我们就知道怎么调整这些变量才可以使得代价降低得最快,
我们先来关注最后两个神经元吧,我给最后一个神经元的激活值一个上标 L,表示它处于第 L 层,那么,前一个神经元的激活值就是 a ( L − 1 ) a^{(L-1)} a(L−1),这里的上标不是指数,而是用来标记我们正在讨论哪一层,过一会我会用到下标来表示别的意思
给定一个训练样本,我们把这个最终层激活值要接近的目标叫做 y,例如 y 可能是 0 或者 1,那么这个简易网络对于单个训练样本的代价就等于 ( a ( L ) − y ) 2 \color{black}(a^{(L)}-\color{gold}y\color{black})^2 (a(L)−y)2,对于这个样本,我们把这个代价值标记为 C 0 \color{red}C_0 C0
还记得吗,最终层的激活值是这么算出来的,即一个权重 w L \color{blue}w^L wL 乘上前一个神经元的激活值再加上一个偏置 b L \color{pink}b^L bL,最后把加权和塞进一个特定的非线性函数,例如 sigmoid 或者 ReLU 之类的,给这个加权和起一个名字会方便很多,就叫它 z L \color{green}z^L zL 好了,跟对应的激活值用同一个上标
这里的项挺多,概括起来我们拿权重 w L \color{blue}w^L wL、前一个激活值 a ( L − 1 ) a^{(L-1)} a(L−1) 以及偏置值 b L \color{pink}b^L bL 一起来算出 z L \color{green}z^L zL 再算出 a ( L ) a^{(L)} a(L),最后再用上常量 y \color{gold}y y 算出代价值 C 0 \color{red}C_0 C0,当然 a ( L − 1 ) a^{(L-1)} a(L−1) 也是由它自己的权重和偏置决定的,以此类推,但我们现在重点不在那里
上面这些东西都是数字,没错吧,我们可以想象每个数字都对应一个数轴,我们第一个目标是理解代价函数对权重 w L \color{blue}w^L wL 的微小变化有多敏感,或者换句话讲求 C 0 \color{red}C_0 C0 对 w L \color{blue}w^L wL 的导数
当你看到 ∂ w \color{blue}\partial w ∂w 之类的项时,请把它当做这是对 w \color{blue}w w 的微小扰动,好比改变 0.01,然后把 ∂ C 0 \color{red}\partial C_0 ∂C0 当做 “改变 w \color{blue}w w 对 C 0 \color{red}C_0 C0 的值造成的变化”,我们求得是这两个数的比值
概念上说 w L \color{blue}w^L wL 的微小变化会导致 z L \color{green}z^L zL 产生些变化,然后会导致 a L a^L aL 产生变化,最终影响到代价值
那么,我们把式子拆开,首先求 z L \color{green}z^L zL 的变化量比上 w L \color{blue}w^L wL 的变化量,也就是求 z L \color{green}z^L zL 关于 w L \color{blue}w^L wL 的导数,同理考虑 a L a^L aL 的变化量比上因变量 z L \color{green}z^L zL 的变化量,以及最终的 C 0 \color{red}C_0 C0 的变化量比上直接改动 a L a^L aL 产生的变化量
这不就是链式法则么,把三个比值相乘就可以算出 C 0 \color{red}C_0 C0 对 w L \color{blue}w^L wL 的微小变化有多敏感
3. 微积分的计算
现在图上多了一大堆符号,稍微花点时间理解一下每个符号都是什么意思吧,因为马上我们就要对各个部分求导了
C 0 \color{red}C_0 C0 关于 a L a^L aL 的导数就是 2 ( a ( L ) − y ) \color{black}2(a^{(L)}-\color{gold}y\color{black}) 2(a(L)−y),这也就意味着导数的大小跟网络最终的输出减目标结果的差成正比,如果网络的输出差别很大,即使 w \color{blue}w w 稍稍变一点代价也会改变非常大
a L a^L aL 对 z L \color{green}z^L zL 求导就是求 sigmoid 的导数,或就你选择的非线性激活函数求导
而 z L \color{green}z^L zL 对 w L \color{blue}w^L wL 求导结果就是 a L − 1 a^{L-1} aL−1
4. 公式含义
对我自己来说,这里如果不退一步好好想想这些公式的含义,很容易卡住
就最后这个导数来说,这个权重的改变量 ∂ w \color{blue}\partial w ∂w 对最后一层的影响有多大取决于之前一层的神经元,所谓的 “一同激活的神经元关联在一起” 的出处即来源于此
不过这只是包含一个训练样本的代价对 w ( L ) \color{blue}w^{(L)} w(L) 的导数,由于总的代价函数是许许多多训练样本所有代价的总平均,它对 w ( L ) \color{blue}w^{(L)} w(L) 的导数就需要求 ∂ C ∂ w ( L ) \frac{\color{red}\partial C}{\color{blue}\partial w^ {(L)}} ∂w(L)∂C 这个表达式之于每一个训练样本的平均
当然这只是梯度向量 ∇ C \color{red}\nabla C ∇C 的一个分量,而梯度向量 ∇ C \color{red}\nabla C ∇C 本身则由代价函数对每一个权重和每一个偏置求偏导构成的
5. 代价函数对权重偏置的敏感度
值得注意的是,求出这些偏导中的一个就完成了一大半的工作量,对偏置的求导步骤也就基本相同,只要把 ∂ z ∂ w \frac{\color{green}\partial z}{\color{blue} \partial w} ∂w∂z 替换成 ∂ z ∂ b \frac{\color{green}\partial z}{\color{pink} \partial b} ∂b∂z,对应的公式中可以看出导数 ∂ z ∂ b \frac{\color{green}\partial z}{\color{pink} \partial b} ∂b∂z 等于 1
这里也涉及到了反向传播的概念,我们来看下这个代价函数对上一层激活值的敏感度,展开来说,链式法则的第一项 z \color{green}z z 对上一层激活值的敏感度就是权重 w ( L ) \color{blue}w^{(L)} w(L)
虽然说过我们不能直接改变激活值,但我们很有必要关注这个值,因为我们可以反向应用链式法则来计算代价函数对之前的权重偏置的敏感度
6. 多个神经元的情形
你可能觉得这个例子举得太简单了,毕竟每层只有一个神经元,而真实的神经网络会比这个例子复杂百倍,然而说真的,每层多加若干个神经元并不会复杂很多,真的,只不过多写一些下标罢了
我们用加上下标的神经元来表示 L 层的若干神经元,而不是用 a ( L ) a^{(L)} a(L) 统称 L 层的激活值,现在用 k 来标注 L-1 层的神经元,j 则是 L 层的神经元
现在要求代价函数,我们从期望的输出着手,计算上一层激活值和期望输出的差值的平方然后求和,即求 ( a j ( L ) − y j ) 2 \color{black}(a_j^{(L)}-\color{gold}y_j\color{black})^2 (aj(L)−yj)2 的和
由于权重的数量多了不少,那么每个权重要多用几个下标,我们记连接第 k 个神经元和第 j 个神经元的连线为 w j k ( L ) \color{blue}w_{jk}^{(L)} wjk(L),这些下标感觉像标反了,可能有点别扭,不过和第一章中的权重矩阵的下标是一致的
同样的,把加权和记为 z 总是很方便,那么最后一层的激活值依然等于指定的函数(如 sigmoid)在 z 处的函数值
你懂我意思吧,现在的方程式和之前每层只有一个神经元的时候本质是一样的,只是看着复杂一些
链式法则形式的导数表达式所描述的代价对某个权重的敏感度也是一样的,这里大家可以暂停推导一下每一项的含义,唯一改变的是代价对 L-1 层激活值的导数
此时,激活值可以通过不同的途径影响代价函数,也就是说,神经元一边通过 a 0 ( L ) a_0^{(L)} a0(L) 来影响代价函数,另一边通过 a 1 ( L ) a_1^{(L)} a1(L) 来影响代价函数,得把这些都加起来,然后…就搞定了
只要计算出倒数第二层代价函数对激活值的敏感度,接下来只要重复上述过程,计算喂给倒数第二层的权重和偏置就好了
7. 回顾
现在长吁一口气吧!如果上面这些明白了,那你就看明白了神经网络的主力—反向传播
链式法则表达式给出了决定梯度每个分量的偏导,使得我们能不断下探,最小化神经网络的代价
静下来想一想你会发现这些复杂的层层叠叠很烧脑,消化这些知识需要花一些时间,这很正常
相关资料
- http://neuralnetworksanddeeplearning.com/chap2.html
- https://github.com/mnielsen/neural-networks-and-deep-learning
- https://colah.github.io/posts/2015-08-Backprop/
结语
这个章节我们主要学习了反向传播以微积分的形式表达,其核心就是链式法则
OK,以上就是本章的全部内容了,下章我们来讲 Transformer,敬请期待😄
相关文章:
反向传播的微积分原理 | Chapter 4 | Deep Learning | 3Blue1Brown
目录 前言1. 简介2. 神经网络中的链式法则3. 微积分的计算4. 公式含义5. 代价函数对权重偏置的敏感度6. 多个神经元的情形7. 回顾相关资料结语 前言 3Blue1Brown 视频笔记,仅供自己参考 这个章节主要来深度讲解反向传播中的一些微积分理论 官网:https://…...
matlab读取excel表格
使用matlab读取excel表格中的数据 使用推荐代码读取excel表格中的数据 path "C:\Users\24975\Desktop\503\GUI展示案例\Tx_20_0_Rx_40_90_0.1_95_L.xlsx";%文件路径 data readtable(path,Sheet,Sheet1,ReadRowNames,false,ReadVariableNames,false,Ra…...
基于springboot+vue实现的助学兼职系统(源码+L文+ppt)4-092
基于springbootvue实现的助学兼职系统(源码L文ppt)4-092 第4章 系统设计 4.1 总体功能设计 一般学生、招聘公司和管理者都需要登录才能进入助学兼职系统,使用者登录时会在后台判断使用的权限类型,包括一般使用者和管理者,一般使…...
⌈ 传知代码 ⌋ 农作物病害分类(Web端实现)
💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…...
CMU生成式人工智能大模型:从入门到放弃(九)
引言 在前面的系列博客中,我们深入探讨了生成式对抗网络(GANs)和变分自编码器(VAEs)等生成式模型。今天,我们将探索扩散模型(Diffusion Models)的进一步应用,并讨论在上…...
HTML基础总结
一、简介 HTML(HyperText Markup Language)即超文本标记语言,是用于创建网页的标准标记语言。它通过使用各种标签来定义网页的结构和内容,告诉浏览器如何显示网页。HTML 文档由标签和文本组成,标签用于描述文本的性质…...
EXCELL中如何两条线画入一张图中,标记坐标轴标题?
1,打开excel,左击选中两列, 2,菜单栏>“插入”>”二维折线图”选中一个 3,选中出现的两条线中的一条右击>最下一行,“设置数据系列格式” 4,右测“系列选项中”>点击“次坐标轴” 5…...
Zabbix企业级分布式监控环境部署
“运筹帷幄之中,决胜千里之外”。在IT运维中,监控占据着重要的地位,按比例来算,说占30%一点也不为过。对IT运维工程师来说,构建一个真正可用的监控告警系统是一项艰巨的任务。在监控系统的开源软件中,可供选…...
水轮发电机油压自动化控制系统解决方案介绍
在现代水电工程中,水轮机组油压自动化控制系统,不仅直接关系到水轮发电机组的安全稳定运行,还影响着整个水电站的生产效率和经济效益。 一、系统概述 国科JSF油压自动控制系统,适用于水轮发电机组调速器油压及主阀(蝶…...
今天不分享技术,分享秋天的故事
引言 这个爱情故事好像是个悲剧,你说的是婚姻。爱情没有悲剧,对爱者而言,爱情怎么会是悲剧呢。对春天而言,秋天是它的悲剧吗。结尾是什么,等待,之后呢,没有之后。或者说,等待的结果…...
转录组上游分析流程(三)
环境部署——数据下载——查看数据(非质控)——数据质控——数据过滤(过滤低质量数据) 测序得到的原始序列含有接头序列和低质量序列,为了保证信息分析的准确性,需要对原始数据进行质量控制,得到高质量序列(Clean Reads),原始序列…...
excel判断某一列(A列)中的数据是否在另一列(B列)中
如B列如果有7个元素,在A列右边的空白列中,输入如下公式: COUNTIF($B$1:$B$7,A1), 其中,$B$1:$B$7代表A列中的所有数据即绝对范围,A1代表B列中的一个单元格....
[环境配置]macOS上怎么查看vscode的commit id
macOS的commit id和windows上有点不一样,windows可以在帮助-关于查看 macOS则需要再左边第一个查看...
.net framework 3.5sp1组件安装进度条不动启动错误怎么解决
安装.NET Framework 3.5 SP1通常需要管理员权限。这是因为安装过程可能需要修改系统文件和注册表项,这些操作通常需要管理员权限才能执行。在Windows系统上,安装.NET Framework 3.5 SP1通常通过控制面板中的“启用或关闭Windows功能”选项进行࿰…...
学习threejs,利用THREE.ExtrudeGeometry拉伸几何体实现svg的拉伸
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.ExtrudeGeometry拉伸…...
大模型之三十二-语音合成TTS(coqui) 之二 fine-tune
在 大模型之三十-语音合成TTS(coqui)[shichaog CSDN]中提到了xttsv2的fine-tune。 数据情况: 我是从bilibili up主小Lin说提取了一些视频,然后进行了重新的fine-tune。 训练结果 如下图所示,上面波形幅度较大的是xttsv2原始模型的结果&am…...
JVM的内存模型是什么,每个区域的作用是什么,以及面试题(含答案)
JVM(Java 虚拟机)内存模型定义了 Java 程序在运行时如何分配、管理和优化内存。JVM 内存模型主要分为几个关键区域,每个区域有特定的作用: JVM 内存模型 堆内存(Heap): 作用:用于存…...
《设计模式三》Java代理模式实现
Java代理模式实现 静态代理实现 // Subject.java // 主题接口,定义了请求方法 public interface Subject {void request(); }// RealSubject.java // 真实主题实现类,实现了Subject接口 public class RealSubject implements Subject {Overridepublic …...
vue3中计算属性的用法以及使用场景
在 Vue 3 中,计算属性(computed properties)是一种基于依赖项动态计算并缓存的响应式数据。它与 Vue 2 中的计算属性类似,但在组合式 API 中使用 computed 函数来定义。计算属性的核心优势在于能够自动缓存计算结果,仅…...
pytorh学习笔记——cifar10(六)MobileNet V1网络结构
基础知识储备: 一、深度可分离卷积(Depthwise Separable Convolution) MobileNet的核心是深度可分离卷积(Depthwise Separable Convolution),深度可分离卷积是卷积神经网络(CNN…...
报表系统-连接数据库操作
本专栏用于解析自己开源的项目代码,作为复盘和学习使用。欢迎大家一起交流 本样例说明源码开源在: ruoyi-reoprt gitee仓库 ruoyi-report github仓库 欢迎大家到到项目中多给点star支持,对项目有建议或者有想要了解的欢迎一起讨论 连接数据库…...
[计算机网络] 常见端口号
前言 常见的端口号是指互联网协议(如TCP/IP)中预留给特定服务使用的数字范围。它们主要用于标识网络应用程序和服务,并帮助数据包在网络中找到正确的接收方。 按协议类型划分 TCP协议端口: 21:FTP文件传输协议2…...
Linux系统块存储子系统分析记录
1 Linux存储栈 通过网址Linux Storage Stack Diagram - Thomas-Krenn-Wiki-en,可以获取多个linux内核版本下的存储栈概略图,下面是kernel-4.0的存储栈概略图: 2 存储接口、传输速度 和 协议 2.1 硬盘 《深入浅出SSD:固态存储核心…...
大数据——本地威胁检测的全球方法
大数据似乎是众多专业人士关注的话题,从在自然灾害发生时帮助挽救生命,到帮助营销团队设计更有针对性的策略以接触新客户。 对于安全工程师来说,大数据分析被证明是抵御不断演变的网络入侵的有效防御手段,这得益于基于大量不同网…...
使用postman接口测试
一 、postman断言 1、什么是断言 postman 断言借助JavaScript -js 语言编写代码,自动判断预期结果与实际结果是否一致。 断言代码写在 Tests 的标签中。(新版本在Scripts标签中) 2、断言工作原理 3、常用断言 断言响应状态码 // 断言响应状态码 是否为 200 pm.…...
Ubuntu24.04双系统安装(Linux/windows共存一文打通)
他向远方望去,无法看到高山背后的矮山,只能看到一座座更高的山峰。 目录 编辑 一.前言 二.虚拟机和双系统比较 三.Windows/Linux双系统安装 1.Rufus-制作U盘启动盘系统工具安装 2.Ubuntu24.04下载 3.Ubuntu-u盘启动盘制作 4.压缩磁盘留足安装空…...
C++ - deque
博客主页:【夜泉_ly】 本文专栏:【C】 欢迎点赞👍收藏⭐关注❤️ 文章目录 💡双端队列简介1. 基本特性2. 与其他容器的比较与 vector与 list 3. 中控数组的设计4. 优缺点优点缺点 5. 应用场景6. 结论 💡双端队列简…...
国产!瑞芯微米尔RK357核心板革新AIoT设备,8核6T高算力
随着科技的快速发展,AIoT智能终端对嵌入式模块的末端计算能力、数据处理能力等要求日益提高。近日,米尔电子发布了一款基于瑞芯微RK3576核心板和开发板。核心板提供4GB/8GB LPDDR4X、32GB/64GB eMMC等多个型号供选择。瑞芯微RK3576核心优势主要包括高性能…...
中国人寿财险青岛市分公司践行绿色金融,助力可持续发展
中国人寿财险青岛市分公司积极响应国家绿色发展战略,大力推进绿色金融实践。在保险产品创新方面,推出一系列绿色保险产品。如新能源汽车保险,为新能源汽车产业发展提供风险保障,促进交通领域的节能减排。环境污染责任保险则助力企…...
ajax 读取文件
DOMException: Failed to read the responseXML property from XMLHttpRequest: The value is only accessible if the objects responseType is or document (was blob). at XMLHttpRequest.r ( $.ajax({ url: 未来之窗_服务, method: GET, …...
网站做外链软件/seo网站搭建是什么
模板中使用 v-for: 你也可以提供第二个的参数为键名: 第三个参数为索引: v-for 迭代整数 v-for 也可以循环整数 其他: 1、v-for 还可以循环数组: 2、 3、不仅如此,在迭代属性输出的之前&…...
水源logo设计制作网/广州百度快速排名优化
在整理《全唐诗》的文本之前,我们首先需要完成以下两个步骤: 确定需求 了解文本 在完成以上步骤后,我们开始实际着手整理文本,在整理的过程中大体上也包含两个流程: 文本解析结果输出 全唐诗文本语料在“全唐诗.tx…...
网站维护服务内容/汽油价格最新调整最新消息
如何构造预制体(Prefab)? 选择你需要作为预制体的物体 拖到Assets里面 如何去除物体挂载的脚本文件? 在组件栏操作 Alt鼠标左键、鼠标右键可以实现视角的转变 Box using System.Collections; using System.Collections.Generic…...
html+jsp个人网站模板/地推扫码平台
没驱动。。。你的jar包没导导了啊 哭死CLASSPATH.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:/home/gongsheng/mysql.jarcom.mysql.jdbc.Driver 你在包里找这个类,找的到不?应该导在你的pro下的lib中,再引用一下拉看了 jar包 里面有…...
b2b网站论文/今日足球赛事推荐
以下是全部VolleyError实例可能,如果需要逐条判断可以方便用户了解原因。 //正如前面代码看到的,在创建一个请求时,需要添加一个错误监听onErrorResponse。如果请求发生异常,会返回一个VolleyError实例。 //以下是Volley的异常列…...
wordpress加密视频播放器/站长工具ping检测
这两个工具类都是基于之前介绍的注解来完成的第一个工具类是ExcelImportUtil Excel导入工具类两个方法1.从本地导入2.流导入参数基本上一直,导入文件,导如对应的实体,导入参数第二中方法相对来说我们用的比较多,我们从前天传输的获取流,然后返回一个list对象第二个类 导出类Exc…...