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

神经网络之计算图分支节点

🌿 一、什么是计算图中的分支节点?

分支节点是指在计算图中,某个中间变量的值被多个后续节点所“依赖”或“使用”的情况。也就是说,一个节点的输出是多个节点的输入,就像一条河流分叉,数据“流”向多个方向。


✅ 举个简单例子:

假设我们有函数:

[
L = f(x, y) = (x + y)^2 + (x + y)^3
]

我们可以定义:

[
z = x + y
L = z^2 + z^3
]

这里的 z 被两个操作使用了:( z^2 ) 和 ( z^3 )。这个 z 就是一个分支节点,因为它的值被用于多个地方。


🔁 二、为什么分支节点在反向传播中重要?

在反向传播中,我们要计算每个变量对最终损失 (L) 的导数(梯度)。当一个变量像 z 这样被多个路径使用时,我们需要:

将所有路径上传回来的梯度累加起来!

也就是说:

[
\frac{dL}{dz} = \frac{dL_1}{dz} + \frac{dL_2}{dz}
]

这是反向传播中的一个关键规则,叫做:

“梯度汇聚(Gradient Accumulation)” 或 “梯度相加”


✍️ 三、上面的例子完整反向传播推导

我们再看刚才的例子:

[
L = z^2 + z^3
z = x + y
]

第一步:前向传播

  • ( z = x + y )
  • ( L = z^2 + z^3 )

第二步:反向传播(求梯度)

  1. ( \frac{dL}{dz} = \frac{d}{dz}(z^2) + \frac{d}{dz}(z^3) = 2z + 3z^2 )

注意,这里就是 分支节点的关键体现:两个路径的导数相加!

  1. ( \frac{dL}{dx} = \frac{dL}{dz} \cdot \frac{dz}{dx} = (2z + 3z^2) \cdot 1 )

  2. 同理,( \frac{dL}{dy} = (2z + 3z^2) \cdot 1 )


🔄 四、图示(计算图结构)

   x     y\   /\ /z = x + y/     \z^2        z^3|          |+----+-----+|L = z^2 + z^3
  • z 是分支节点
  • 反向传播时,来自 ( z^2 ) 和 ( z^3 ) 两个分支的梯度都会合并回 z

🧠 五、编程实现中的处理(以 PyTorch 为例)

在自动微分框架中,如 PyTorch、TensorFlow:

  • 每个变量在构建计算图时,记录自己被哪些操作使用;
  • 反向传播时,每条路径上传回来的梯度都会自动累加(accumulate)
  • 框架自动实现“分支节点”的梯度合并,不需要用户手动相加。

🧩 六、可能的误解和注意点

误解正确做法
每条路径上的梯度是互相独立的错!必须累加所有路径上传回来的梯度
分支节点和参数节点一样对待错!分支节点的梯度可能来自多个地方
不需要考虑重复使用的中间变量错!一个变量只要被多次使用,就必须合并梯度

🧮 七、总结:分支节点的本质

特性描述
多路径使用一个变量被多个操作所依赖
梯度累加所有路径上传回的梯度需要加在一起
计算图核心结构分支是计算图中非线性结构的核心
自动处理在现代框架中已自动实现梯度累加
http://www.dtcms.com/a/490508.html

相关文章:

  • 【表格对比分析】Java集合体系、Java并发编程、JVM核心知识、Golang go-zero微服务框架
  • 【任务管理软件】实用工具之ToDoList 9.0.6 详细图文安装教程:高效任务管理的完美起点
  • Linux中zonelist分配策略初始化
  • hadoop的三副本数据冗余策略
  • 岳阳网站建设企业足球比赛直播app下载
  • React 三元运算符页面切换:完整进出流程
  • NumPy zeros_like() 函数详解
  • 网站建设要后台吗公司网页制作哪家好
  • 天津网站建设优化网页设计图片代码
  • CXR SDK实战指南:跨设备AR应用开发
  • 已知明文攻击(Known plaintext):原理、方法与防御体系深度剖析
  • ​SPI四种工作模式
  • 深度学习------YOLOV1和YOLOV2
  • 最小二乘问题详解5:非线性最小二乘求解实例
  • 算法入门数学基础
  • 错误边界:用componentDidCatch筑起React崩溃防火墙
  • 网站备案提交管局原创软文
  • 成都比较好的网站建设公司视频制作和剪辑软件
  • 如何从电脑上卸载安卓应用程序
  • 每日手撕算法--哈希映射/链表存储数求和
  • k8s的pvc和pv
  • RK3562核心板/开发板RT-Linux系统实时性及硬件中断延迟测试
  • node.js把webp,gif格式图片转换成jpg格式图片
  • 不能识别adb/usb口记录
  • SpringBoot-常用注解
  • 支付商城网站制作软件开发报价表
  • wordpress类似的平台快速优化排名公司推荐
  • Git 基础操作指南
  • 网站给部分文字做遮挡代码wordpress主题仿逛丢
  • 【bug】大模型微调bug:OSError: Failed to load tokenizer.| Lora