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

反向传播.

反向传播(Backpropagation)中求导的核心目的是计算损失函数对模型参数的梯度,从而指导参数优化。这一过程本质上是基于链式法则的数学推导,其逻辑可从以下维度拆解:

一、反向传播的目标:优化参数

  • 模型训练的本质:给定输入数据,模型通过参数(如神经网络的权重 W、偏置 b)计算输出,并与真实标签对比得到损失函数 L(如交叉熵、均方差)。训练需不断调整参数,使 L 最小化。
  • 求导的作用:损失函数对参数的梯度 \(\frac{\partial L}{\partial \theta}\) 表示损失随参数变化的速率。梯度方向是损失增长最快的方向,其反方向(负梯度)是损失下降最快的方向,因此求导是为了确定参数更新的方向和幅度(即梯度下降法:\(\theta \leftarrow \theta - \eta \cdot \frac{\partial L}{\partial \theta}\),\(\eta\) 为学习率)。

二、反向传播为何必须 “求导”?从链式法则说起

假设一个简单神经网络:输入 x,经线性变换 \(z = Wx + b\),再通过激活函数 \(a = \sigma(z)\),输出 a 与标签 y 的损失为 \(L = \frac{1}{2}(a - y)^2\)。

  • 正向传播:计算 \(z \rightarrow a \rightarrow L\) 的过程。
  • 反向传播的核心问题:如何计算 \(\frac{\partial L}{\partial W}\) 和 \(\frac{\partial L}{\partial b}\)? 根据链式法则:\(\frac{\partial L}{\partial W} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial W}\)
    • \(\frac{\partial L}{\partial a} = (a - y)\)(损失对输出的导数);
    • \(\frac{\partial a}{\partial z} = \sigma'(z)\)(激活函数对中间值的导数);
    • \(\frac{\partial z}{\partial W} = x\)(线性变换对权重的导数)。 最终梯度为三者的乘积,即:\(\frac{\partial L}{\partial W} = (a - y) \cdot \sigma'(z) \cdot x\) 同理可求 \(\frac{\partial L}{\partial b}\)。这一过程通过链式法则将复杂的梯度分解为多层导数的乘积,实现从输出层到输入层的 “反向” 传递,因此称为反向传播

三、反向传播求导的核心价值:高效计算梯度

  • 若不使用反向传播:直接计算深层网络的梯度(如多层神经网络)会面临计算复杂度爆炸(参数数量随层数指数增长),且无法利用中间层的计算结果。
  • 反向传播的优化:通过缓存中间层的导数(如激活函数的导数、中间值),从最后一层开始逐层向前计算梯度,将时间复杂度从指数级降至线性级(与层数成正比)。例如,对于一个 L 层网络,反向传播的时间复杂度为 \(O(L \cdot N)\)(N 为参数数量),而直接求导可能达到 \(O(N^L)\)。

四、案例:以两层神经网络为例

网络结构:
  • 输入层 \(x \in \mathbb{R}^n\),隐藏层 \(h \in \mathbb{R}^m\),输出层 \(o \in \mathbb{R}^k\);
  • 权重:\(W_1 \in \mathbb{R}^{m \times n}\)(输入→隐藏),\(W_2 \in \mathbb{R}^{k \times m}\)(隐藏→输出);
  • 激活函数:隐藏层用 ReLU,输出层用 Softmax,损失为交叉熵 L。
反向传播求导步骤:
  1. 计算输出层梯度:\(\frac{\partial L}{\partial o} = o - y \quad (\text{Softmax + 交叉熵的导数特性})\)
  2. 反向传递至隐藏层:\(\frac{\partial L}{\partial h} = W_2^T \cdot \frac{\partial L}{\partial o} \cdot \text{ReLU}'(W_1x + b_1)\) (其中 \(\text{ReLU}'(z) = 1\) 当 \(z > 0\),否则为 0)
  3. 计算权重梯度:\(\frac{\partial L}{\partial W_2} = \frac{\partial L}{\partial o} \cdot h^T, \quad \frac{\partial L}{\partial W_1} = \frac{\partial L}{\partial h} \cdot x^T\) 每一步均通过链式法则,将梯度从后往前分解,确保每一层参数的梯度可高效计算。

五、总结:反向传播与求导的本质关系

  • 求导是数学工具:通过导数确定损失对参数的敏感程度,指导参数更新方向;
  • 反向传播是算法实现:利用链式法则高效计算深层网络的梯度,避免重复计算,大幅降低计算成本;
  • 核心逻辑:“正向计算损失,反向传递梯度”,求导是连接两者的桥梁,使模型能通过迭代优化(如 SGD)逐步逼近最优参数。

简而言之,反向传播的本质是基于链式法则的梯度高效计算机制,而求导是这一机制的数学基础 —— 没有求导,就无法确定参数更新的方向,模型也就无法从数据中学习~

http://www.xdnf.cn/news/1050841.html

相关文章:

  • 行列式的逆序数法定义 线性代数
  • macbook配置vscode连接腾讯云服务器
  • 【JVM】- 内存模式
  • Java网络编程深度解析
  • 2025教育趋势:考试答题软件开发如何成为智能教育的核心技术
  • 车载诊断框架 --- TCP window size设置
  • SpringJPA统计数据库表行数及更新频率
  • 微信小程序 按钮点击事件
  • sqli-labs靶场54-65关(次数限制,数据更新)
  • 【Create my OS】6 线程调度
  • logback常用配置
  • 自增id用完怎么办?
  • C# CS_Prj01 串口通信控制台程序
  • Java学习笔记——lambda表达式
  • 【FastAPI高级实战】结合查询参数与SQLModel Joins实现高效多表查询(分页、过滤、计数)
  • 微信开发者工具 插件未授权使用,user uni can not visit app
  • Gartner《Reference Architecture for Federated Analytics》学习心得
  • SAP代理商——哲讯科技,助力企业数字化转型
  • 严格三角形方程组
  • 用c语言实现简易c语言扫雷游戏
  • 解析Buildroot
  • html css js网页制作成品——HTML+CSS+js力学光学天文网页设计(4页)附源码
  • MySQL基础架构
  • 深度学习:PyTorch自动微分模块
  • 【CUDA GPU 支持安装全攻略】PyTorch 深度学习开发者指南
  • AI 社交和AI情绪价值的思考 -延申思考2 -全局记忆
  • MobaXterm首次连接Ubuntu失败
  • Rust语言典型并发模式小结
  • 【Dv3Admin】系统信号机制配置文件解析
  • Photoshop图层蒙版全介绍