当前位置: 首页 > news >正文

反向传播的微积分原理 | 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(L1),这里的上标不是指数,而是用来标记我们正在讨论哪一层,过一会我会用到下标来表示别的意思

在这里插入图片描述

给定一个训练样本,我们把这个最终层激活值要接近的目标叫做 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(L1) 以及偏置值 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(L1) 也是由它自己的权重和偏置决定的,以此类推,但我们现在重点不在那里

在这里插入图片描述

上面这些东西都是数字,没错吧,我们可以想象每个数字都对应一个数轴,我们第一个目标是理解代价函数对权重 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} aL1

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} wz 替换成 ∂ z ∂ b \frac{\color{green}\partial z}{\color{pink} \partial b} bz,对应的公式中可以看出导数 ∂ z ∂ b \frac{\color{green}\partial z}{\color{pink} \partial b} bz 等于 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功能”选项进行&#xff0…...

学习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&#xf…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

【位运算】消失的两个数字(hard)

消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...