神经网络系列---计算图基本原理

本文探讨了计算图在深度学习中的运用,以及符号微分和数值微分的原理和步骤。介绍了如何通过符号微分精确计算导数,以及在计算图中结合反向传播进行自动求导。同时,对比了数值微分的近似方法,包括前向差分和中心差分,以及它们在各种场景下的应用和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



计算图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

符号微分

在这里插入图片描述

符号微分(Symbolic Differentiation)是一种使用数学表达式来表示微分或导数的技术。与数值微分不同,符号微分不是通过逼近来计算导数,而是直接处理数学表达式,得到一个精确的表达式,表示该函数的导数。

符号微分的步骤

  1. 表达式定义:首先,你需要一个表达式,例如一个多项式或任何可以微分的数学函数。

  2. 应用微分规则:然后,你会应用一系列微分规则(如乘积规则、商规则、链式法则等)来对表达式进行微分。

  3. 简化表达式:最后,你可能需要使用一些代数技巧来简化得到的导数表达式。

示例

假设你有一个函数 f ( x ) = x 2 + 3 x + 2 f(x) = x^2 + 3x + 2 f(x)=x2+3x+2,并且你想要找到其导数。通过符号微分,你可以应用基本的导数规则:

  • d d x x n = n ⋅ x n − 1 \frac{d}{dx} x^n = n \cdot x^{n-1} dxdxn=nxn1
  • d d x c = 0 \frac{d}{dx} c = 0 dxdc=0 (其中 c c c 是常数)
  • 线性函数的导数等于其系数

这样,你可以找到 f ( x ) f(x) f(x)的导数:

f ′ ( x ) = 2 ⋅ x 1 + 3 ⋅ 1 + 0 = 2 x + 3 f'(x) = 2 \cdot x^1 + 3 \cdot 1 + 0 = 2x + 3 f(x)=2x1+31+0=2x+3

符号微分在计算图中的使用

在深度学习中,符号微分经常与计算图结合使用:

  1. 前向传播:通过计算图表示模型的前向计算。
  2. 符号微分:应用符号微分来表示每个操作的局部导数。
  3. 反向传播:使用链式法则和计算图中的局部导数来计算整个模型的梯度。

这个过程允许深度学习框架自动计算模型的梯度,这是训练神经网络时所必需的。

总结

符号微分提供了一种精确、直接的方式来计算导数。在深度学习和其他科学计算应用中,通过结合计算图,符号微分使得自动求导和梯度下降优化变得可行和高效。不过,对于非常复杂的表达式,符号微分可能导致表达式膨胀,从而增加了计算复杂性。因此,有时可能会结合使用符号微分和数值微分方法。

数值微分

在这里插入图片描述

数值微分是一种近似计算函数导数的技术。与符号微分不同,数值微分不是通过解析地处理数学表达式来找到导数的精确形式,而是使用函数在特定点的数值来估计导数。

前向差分法

最简单的数值微分方法之一是前向差分法。假设你想要计算函数 f ( x ) f(x) f(x)在点 x x x处的导数,你可以使用以下公式:

f ′ ( x ) ≈ f ( x + h ) − f ( x ) h f'(x) \approx \frac{f(x + h) - f(x)}{h} f(x)h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值