神经网络之计算图

🧠 一、什么是计算图?

定义:

计算图是一种有向无环图(DAG, Directed Acyclic Graph) ,用于表示计算过程。图中的节点 表示操作(函数或运算),表示数据(张量)在操作之间的流动。

举个简单例子:

设有函数:

z = (x + y) \\times (x - y)

可以拆解为一系列中间操作:

  1. ( a = x + y )
  2. ( b = x - y )
  3. ( z = a \times b )

这就是一个计算图:

复制代码
   x     y
    \   /
     +   - 
     |   |
     a   b
      \ /
       *
       |
       z

🧮 二、计算图的两种主要操作

1. 前向传播(Forward Pass)

  • 按照计算图的拓扑顺序,从输入到输出逐步执行操作,计算出最终结果。
  • 举例:给定 (x = 3, y = 2),按图从头算出 (z = (x + y)(x - y) = 5 \times 1 = 5)

2. 反向传播(Backward Pass)

  • 按照链式法则,从输出反向计算梯度(偏导数),用于神经网络的参数更新。
  • 计算每个中间变量对最终输出的导数(如 (\frac{\partial z}{\partial x}),(\frac{\partial z}{\partial y}))。

⚙️ 三、为什么要用计算图?

✅ 自动微分(Automatic Differentiation)

  • 计算图是实现自动微分(特别是反向模式自动微分,即反向传播)的基础。
  • 对神经网络中成千上万的参数,手动求导几乎不可能,计算图让这个过程自动化。

✅ 并行优化

  • 由于计算图是结构化的 DAG,可以进行并行计算优化、子图融合等,提高计算效率。

✅ 可视化与调试

  • 计算图可视化有助于理解模型结构,发现错误或优化模型。

🔁 四、静态图 vs 动态图

特性 静态计算图(Static Graph) 动态计算图(Dynamic Graph)
框架 TensorFlow 1.x、Theano PyTorch、TensorFlow 2.x
构建时间 先定义整个图,再执行 每一步都即时构建和执行
灵活性 较低 更高,支持动态控制流
性能 更容易优化和部署 灵活但稍慢

🧱 五、计算图的构成元素

  1. 变量节点(Variable Nodes)

    • 表示输入、权重、偏置等可学习参数。
  2. 常量节点(Constant Nodes)

    • 表示不可学习的固定数值。
  3. 操作节点(Operation Nodes)

    • 表示加、减、乘、除、激活函数(如 ReLU、Sigmoid)等运算。
  4. 中间结果节点

    • 储存运算过程中的临时变量,供后续操作使用。

📈 六、一个例子:简单神经网络中的计算图

设一个简单的前馈神经网络:

\\begin{align\*} z_1 \&= W_1 x + b_1 a_1 \&= \\text{ReLU}(z_1) z_2 \&= W_2 a_1 + b_2 \\hat{y} \&= \\text{Softmax}(z_2) \\end{align\*}

计算图的节点包括矩阵乘法、加法、激活函数等,自动微分就可以从 (\hat{y}) 反向求导,更新参数 (W_1, b_1, W_2, b_2)。


🔚 七、总结

优点 描述
高效 支持大规模并行计算、自动微分
灵活 支持复杂网络结构(循环、残差等)
可扩展 各种深度学习框架都基于它构建
自动化 免去手动推导导数的烦恼
相关推荐
摘星编程17 小时前
RAG系统搭建指南:5种主流框架的易用性和效果对比
人工智能
荔园微风17 小时前
ML.NET机器学习框架基本流程介绍
人工智能·机器学习·.net
点云SLAM17 小时前
矩阵奇异值分解算法(SVD)的导数 / 灵敏度分析
人工智能·线性代数·算法·机器学习·矩阵·数据压缩·svd算法
仁懋-MOT半导体17 小时前
高效能源转换的关健|仁懋MOSFET在逆变器领域的突破应用
人工智能·硬件工程·能源·创业创新·制造
JAVA学习通17 小时前
Spring AI 1.0 GA 深度解析:Java生态的AI革命已来
java·人工智能·spring·springai
二向箔reverse17 小时前
神经网络中的批归一化(BatchNorm)
人工智能·深度学习·神经网络
就不爱吃大米饭17 小时前
4G5G 移动代理实战:什么时候必须用移动 IP?
人工智能
蒋星熠17 小时前
基于深度学习的卫星图像分类(Kaggle比赛实战)
人工智能·python·深度学习·机器学习·分类·数据挖掘
IT_陈寒17 小时前
JavaScript 性能优化的 7 个致命陷阱:我从 P5 到 P8 的核心突破都在这里!
前端·人工智能·后端