【机器学习】反向传播算法的直观解释、微积分原理以及反向传播中的链式法则

news2024/9/24 11:24:51

引言

正如有句话说的好,neurons-that-fire-together-wire-together(一同激活的神经元关联在一起)

文章目录

  • 引言
  • 一、反向传播算法的直观解释
    • 1.1 前向传播
    • 1.2 计算误差
    • 1.3 反向传播误差
    • 1.4 更新权重
  • 二、微积分原理
  • 三、链式法则
  • 四、反向传播中的链式法则
    • 4.1 前向传播
    • 4.2 计算损失函数对输出的梯度
    • 4.3 反向传播
    • 4.4 计算对权重的梯度
    • 4.5 更新参数
    • 4.6 总结

一、反向传播算法的直观解释

想象一下,正在组装一个复杂的装置,这个装置由许多组件组成,每个组件都对最终的输出有影响。现在,如果发现输出不正确,需要找出哪些组件导致了这个问题,并相应地调整它们

1.1 前向传播

  • 你向装置输入一个信号,这个信号通过一系列组件传递,每个组件都会对信号进行一些处理(比如放大或减弱)
  • 最终,信号到达输出端,你得到了一个结果

1.2 计算误差

  • 你将得到的结果与期望的结果进行比较,计算它们之间的差异,这个差异就是误差

1.3 反向传播误差

  • 现在,你需要找出每个组件对最终误差的贡献。你从输出端开始,逆向检查每个组件
  • 对于每个组件,你计算它对最终误差的影响有多大。如果某个组件对误差的影响很大,那么它很可能就是问题所在

1.4 更新权重

  • 一旦你知道了每个组件的影响,你就可以调整它们,使得下次输入相同的信号时,输出更接近期望值
  • 你根据每个组件对误差的贡献来调整其设置(在神经网络中,这些设置就是权重)
    这个过程需要反复进行,每次输入信号后,你都要计算误差,然后反向传播这个误差,并更新组件的设置

二、微积分原理

反向传播算法的数学基础是微积分中的链式法则。以下是链式法则在反向传播中的应用:

2.1 损失函数 L L L

  • 损失函数衡量了网络预测值 y ^ \hat{y} y^ 与真实值 y y y 之间的差异。常见的损失函数有均方误差(MSE)和交叉熵损失

2.2 链式法则的应用

  • 假设神经网络有一个输出层和一个隐藏层。输出层的激活函数为 f f f,隐藏层的激活函数为 g g g
  • 根据链式法则,损失函数 L L L对隐藏层输出的导数可以表示为:
    ∂ L ∂ g = ∂ L ∂ f ⋅ ∂ f ∂ g \frac{\partial L}{\partial g} = \frac{\partial L}{\partial f} \cdot \frac{\partial f}{\partial g} gL=fLgf
  • 这意味着,为了计算损失函数对隐藏层输出的导数,我们需要知道损失函数对输出层输出的导数(输出层的梯度),以及输出层输出对隐藏层输出的导数(隐藏层到输出层的权重)

2.3 计算梯度

  • 对于输出层,我们可以直接计算损失函数对输出层激活值的导数
  • 对于隐藏层,我们需要将输出层的梯度与输出层和隐藏层之间的权重相乘,然后乘以隐藏层激活函数的导数(即 ∂ g ∂ z \frac{\partial g}{\partial z} zg,其中 z z z 是隐藏层的线性组合)

2.4 权重的梯度

  • 最后,我们计算损失函数对每个权重的导数。这涉及到将损失函数对激活值的导数与激活值对权重的导数相乘
  • 对于权重 w w w 来说,其梯度可以表示为:
    ∂ L ∂ w = ∂ L ∂ g ⋅ ∂ g ∂ z ⋅ ∂ z ∂ w \frac{\partial L}{\partial w} = \frac{\partial L}{\partial g} \cdot \frac{\partial g}{\partial z} \cdot \frac{\partial z}{\partial w} wL=gLzgwz
  • 其中, ∂ z ∂ w \frac{\partial z}{\partial w} wz 就是隐藏层的输入。

2.5 总结

通过这种方式,反向传播算法能够计算出损失函数对每个权重的梯度,然后我们可以使用这些梯度来更新权重,以减少损失函数的值。这个过程不断重复,直到网络性能达到一个满意的水平。

在这里插入图片描述

三、链式法则

链式法则是微积分中的基本法则,用于计算复合函数的导数。假设我们有两个函数 f ( x ) f(x) f(x) g ( x ) g(x) g(x),它们复合成一个新函数 h ( x ) = f ( g ( x ) ) h(x) = f(g(x)) h(x)=f(g(x))。链式法则告诉我们如何计算 h h h x x x的导数:
h ′ ( x ) = f ′ ( g ( x ) ) ⋅ g ′ ( x ) h'(x) = f'(g(x)) \cdot g'(x) h(x)=f(g(x))g(x)

换句话说,复合函数的导数等于内函数的导数乘以外函数的导数

四、反向传播中的链式法则

在神经网络中,每一层的输出都是下一层的输入,这形成了一个复杂的函数复合结构。反向传播算法通过链式法则来计算损失函数 L L L对网络中每个参数的梯度

以下是反向传播中链式法则的应用步骤:

4.1 前向传播

  • 输入样本通过网络,每层计算其输出,直到最后一层产生预测值 y ^ \hat{y} y^
  • 计算损失函数 L ( y ^ , y ) L(\hat{y}, y) L(y^,y),其中 y y y是真实标签

4.2 计算损失函数对输出的梯度

  • 首先计算损失函数对网络输出的梯度,即 ∂ L ∂ y ^ \frac{\partial L}{\partial \hat{y}} y^L

4.3 反向传播

  • 从输出层开始,使用链式法则计算损失函数对每个参数的梯度。
  • 对于网络中的每一层 l l l,假设其输入是 z ( l ) z^{(l)} z(l),激活函数是 a ( l ) = σ ( z ( l ) ) a^{(l)} = \sigma(z^{(l)}) a(l)=σ(z(l)),那么链式法则可以表示为:
    ∂ L ∂ z ( l ) = ∂ L ∂ a ( l ) ⋅ ∂ a ( l ) ∂ z ( l ) \frac{\partial L}{\partial z^{(l)}} = \frac{\partial L}{\partial a^{(l)}} \cdot \frac{\partial a^{(l)}}{\partial z^{(l)}} z(l)L=a(l)Lz(l)a(l)
  • 其中, f r a c ∂ L ∂ a ( l ) frac{\partial L}{\partial a^{(l)}} fracLa(l)是从下一层传递回来的梯度, ∂ a ( l ) ∂ z ( l ) \frac{\partial a^{(l)}}{\partial z^{(l)}} z(l)a(l)是激活函数的导数

4.4 计算对权重的梯度

  • 对于层 l l l 中的每个权重 w ( l ) w^{(l)} w(l),其梯度可以表示为:
    ∂ L ∂ w ( l ) = ∂ L ∂ z ( l ) ⋅ ∂ z ( l ) ∂ w ( l ) \frac{\partial L}{\partial w^{(l)}} = \frac{\partial L}{\partial z^{(l)}} \cdot \frac{\partial z^{(l)}}{\partial w^{(l)}} w(l)L=z(l)Lw(l)z(l)
  • 其中, ∂ z ( l ) ∂ w ( l ) \frac{\partial z^{(l)}}{\partial w^{(l)}} w(l)z(l)是输入 x ( l ) x^{(l)} x(l)或前一层的激活 a ( l − 1 ) a^{(l-1)} a(l1)

4.5 更新参数

  • 使用计算出的梯度来更新网络的权重和偏置。

4.6 总结

通过这种方式,反向传播算法能够有效地计算出损失函数对网络中每个参数的梯度,从而允许我们使用梯度下降或其他优化算法来训练神经网络。链式法则是实现这一过程的关键数学工具

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaEE WebServlet、SpringWebMVC、SpringBoot实现跨域访问的4种方式及优先级

文章目录 1. 前置知识2. 原理和解决方案总结2.1. 跨域不通过原理流程图2.2. 实现原理:添加以下http响应头2.3. 四种跨域实现方式及优先级(从高到低) 3. 具体实现代码3.1. 跨域全局配置方式-Filter(全适用)3.2. 跨域全局配置方式-SpringMvc3.3…

数字孪生模型制作教程虚拟现实城市模型制作3dmax数字城市glb/gltf

需要做数字孪生可以QQ可以联系这里,谢谢 下面开始教程 1打开3dmax软件,和需要做的建筑图片 2 在3dmax安图片先建一个长方体框架 3先给长方体贴一个墙体贴图 4在ps做贴图 5 做好贴图贴到3dmax中 6 然后ps再做下一张贴图 7 做好贴图贴到3dma…

[Redis] Redisson分布式锁原理及源码分析

目录 基于 Redis 的分布式锁 Redisson实现分布 Redisson分布式锁原理图 RedissonLock实现分布式锁源码分析 RedissonLock构造方法 lock()加锁 获取锁 锁续命逻辑 tryLockInnerAsync加锁lua脚本分析 unlock()解锁 基于 Redis 的分布式锁 实现方式: 使用 Redis 的 SE…

Idea2023.3版本创建spring Initializr没有JDK8

解决方法: https://start.aliyun.com

SOMEIP_ETS_037:echoUINT8RELIABLE_client_closes_TCP_connection_automatically

测试目的: 验证当所有服务停止时,DUT不会关闭TCP连接。 描述 本测试用例旨在检验DUT在停止所有服务时,是否能够保持TCP连接的活跃状态,而不发送FIN,ACK以关闭连接。 测试拓扑: 具体步骤: TESTER&#…

STM32学习笔记3 ---中断,定时器

目录 EXTI外部中断 NVIC嵌套中断向量控制器 EXTI外部中断 AFIO 旋转编码器 定时器TIM TIM定时中断 ​编辑​编辑 ​编辑 TIM输出比较(OC) 引脚重映射 舵机 直流电机 TIM输入捕获(IC) ​编辑 TIM编码器接口 附&#…

漏洞挖掘 | 某系统webpack接口泄露引发的一系列漏洞

信息搜集 这里找到从小穿一条裤子长大的兄弟,要挟他交出来他的统一账号,否则把小时候的照片挂网上,开始某大学的资产搜集,直接hunter搜索此大学域名 看有价值的站点,ok找到下面的站点 未授权敏感信息泄露越权任意用…

力扣高频SQL 50题(基础版)第四十二题之1517.查找拥有有效邮箱的用户

文章目录 力扣高频SQL 50题(基础版)第四十二题1517.查找拥有有效邮箱的用户题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题(基础版)第四十二题 1517.查找拥有有效邮箱的用户 题目说明 表: Users -----------…

Dify on WeChat

Dify on WeChat 本项目为 chatgpt-on-wechat下游分支 额外对接了LLMOps平台 Dify,支持Dify智能助手模型,调用工具和知识库,支持Dify工作流。 Dify接入微信生态的详细教程请查看文章 手摸手教你把 Dify 接入微信生态 如果我的项目对您有帮助…

gin获得get和post请求参数,获得请求头信息

获得头信息 router.GET("/", func(c *gin.Context) {name : c.Query("id")fmt.Println(name)Token : c.GetHeader("Token")c.JSON(http.StatusOK, Token)})获得get和post信息 package mainimport ("fmt""github.com/SimonWang00…

Leetcode面试经典150题-236.二叉树的最低公共祖先

解法都在代码里,不懂就留言或者私信 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class Solution {/**题目分析:本题是经典的二…

仓颉语言运行时轻量化实践

杨勇勇 华为语言虚拟机实验室架构师,目前负责仓颉语言静态后端的开发工作 仓颉语言运行时轻量化实践 仓颉Native后端(CJNative)是仓颉语言的高性能、轻量化实现。这里的“轻量化”意指仓颉程序运行过程中占用系统资源(内存、CPU等…

数据分析:品牌营销如何借势小红书搜索流量

导语 近期,小红书推出《10大搜索趋势洞察》,在找答案这件事上,你永远可以相信小红书。 据悉,70%的小红狐月活用户使用搜索功能,用户平均每天搜索6次,三分之一的用户打开小红书的第一件事就是搜索&#xf…

haproxy知识点整理

haproxy知识点整理 haproxy七层代理负载均衡什么是负载均衡为什么使用负载均衡 负载均衡类型四层负载均衡七层负载均衡四层和七层的区别 环境搭建:客户端(client)haproxy服务器两台服务器hapserver1hapserver2 简单的haproxy负载均衡 haproxy的基本配置信息global配置proxies配…

2024高端网站设计公司推荐TOP3

随着互联网的飞速发展,现在的企业官网已经成为企业不可或缺的一部分,因为企业官网它不仅是企业品牌形象的延伸,也是连接客户、提升市场竞争力的重要工具。 以下简单阐述一下为何现代企业应当投资于高质量网站建设,搭建企业官网有…

html+css 实现图层水波纹效果

html+css 实现图层水波纹效果,废话不多说,直接上代码 <span class="quote-top"><i>水波纹</i><span class="ripple ripple-1"></span><span class="ripple ripple-2"></span><span class="…

打卡第四十一天:买卖股票的最佳时机

一、 买卖股票的最佳时机 题目 文章 视频 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][0] 表示第i天持有股票所得最多现金 。其实一开始现金是0&#xff0c;那么加入第i天买入股票现金就是 -prices[i]&#xff0c; 这是一个负数。dp[i][1] 表示第i天…

【MySQL】数据库约束和多表查询

目录 1.前言 2.数据库约束 2.1约束类型 2.2 NULL约束 2.3 NUIQUE&#xff1a;唯一约束 2.4 DEFAULT&#xff1a;默认值约束 2.5 PRIMARY KEY&#xff1a;主键约束 2.6 FOREIGN KEY&#xff1a;外键约束 1.7 CHECK约束 3.表的设计 3.1一对一 3.2一对多 3.3多对多 …

基于火山引擎云搜索服务和豆包模型搭建 RAG 推理任务

大语言模型&#xff08;LLM&#xff0c;Large language model&#xff09;作为新一轮科技产业革命的战略性技术&#xff0c;其核心能力在于深层语境解析与知识融合。在生成式人工智能方向主要用于图像生成&#xff0c;书写文稿&#xff0c;信息搜索等。当下的 LLM 模型是基于大…

【扒网络架构】backbone、ccff

backbone CCFF 还不知道网络连接方式&#xff0c;只是知道了每一层 backbone backbone.backbone.conv1.weight torch.Size([64, 3, 7, 7])backbone.backbone.layer1.0.conv1.weight torch.Size([64, 64, 1, 1])backbone.backbone.layer1.0.conv2.weight torch.Size([64, 64,…