侧边栏壁纸
博主头像
ZHD的小窝博主等级

行动起来,活在当下

  • 累计撰写 79 篇文章
  • 累计创建 53 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

微积分中链式法则和反向传播

江南的风
2025-04-17 / 0 评论 / 0 点赞 / 6 阅读 / 4829 字 / 正在检测是否收录...

微积分中链式法则和反向传播


链式法则和反向传播是微积分和机器学习中的两个重要概念。链式法则是微积分中的一个基本求导法则,而反向传播则是深度学习中用于训练神经网络的关键算法。

链式法则

链式法则用于求复合函数的导数。假设有两个函数 y = f(u) 和 u = g(x),那么复合函数 y = f(g(x)) 的导数可以通过链式法则求得:

\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}

具体来说,如果 y = f(g(x)) ,那么:

\frac{d}{dx} f(g(x)) = f'(g(x)) \cdot g'(x)

示例

假设我们有一个函数 y = sin(x^2)

我们想求它的导数。

  1. 识别内外函数

    • 外函数: y = sin(u)
    • 内函数:u = x^2
  2. 应用链式法则

    \frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}
  3. 计算每一部分的导数

    • 外函数的导数:
    \frac{dy}{du} = \cos(u)
    • 内函数的导数:
    \frac{du}{dx} = 2x
  4. 组合结果

\frac{dy}{dx} = \cos(x^2) \cdot 2x

所以,函数 y = \sin(x^2) 的导数是 \frac{dy}{dx} = 2x \cos(x^2)

反向传播

反向传播(Backpropagation)是训练神经网络的一种算法,它利用链式法则来计算损失函数相对于网络参数的梯度。反向传播的主要步骤如下:

  1. 前向传播:计算输入数据通过网络的每一层后的输出,直到得到最终的预测值。
  2. 计算损失:使用损失函数计算预测值与实际值之间的差异。
  3. 反向传播:从输出层开始,逐层计算损失函数相对于每一层权重的梯度。这一步利用链式法则来传播梯度。
  4. 更新权重:使用优化算法(如梯度下降)根据计算得到的梯度更新网络的权重。

示例

假设我们有一个简单的神经网络,输入 x ,权重 w ,偏置 b ,激活函数 \sigma ,损失函数 L 。网络的前向传播公式为:

z = wx + b
y = \sigma(z)

损失函数为:

L = \frac{1}{2} (y - \text{target})^2

反向传播的步骤如下:

  1. 计算损失相对于输出的梯度

    \frac{\partial L}{\partial y} = y - \text{target}
  2. 计算输出相对于激活函数输入的梯度

    \frac{\partial y}{\partial z} = \sigma'(z)
  3. 计算激活函数输入相对于权重和偏置的梯度

\frac{\partial z}{\partial w} = x
\frac{\partial z}{\partial b} = 1
  1. 应用链式法则计算损失相对于权重和偏置的梯度
\frac{\partial z}{\partial b} = 1 \frac{\partial L}{\partial w} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial z} \cdot \frac{\partial z}{\partial w} = (y - \text{target}) \cdot \sigma'(z) \cdot x
\frac{\partial L}{\partial b} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial z} \cdot \frac{\partial z}{\partial b} = (y - \text{target}) \cdot \sigma'(z)

通过这些梯度,我们可以更新权重 w 和偏置 b,从而训练神经网络。

0

评论区