神经网络中的链式法则解释

部署运行你感兴趣的模型镜像

链式法则是微积分中用于求复合函数导数的核心法则,本质是解决“函数套函数”的求导问题,其核心逻辑是“从外到内、逐层求导再相乘”。

1. 核心定义(单变量情况)

若函数 ( y = f(u) ),且 ( u = g(x) )(即 ( y ) 是 ( x ) 的“复合函数”,( y = f[g(x)] )),则 ( y ) 对 ( x ) 的导数为:

dydx=dydu⋅dudx\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}dxdy=dudydxdu

  • 含义:先求外层函数 ( f(u) ) 对中间变量 ( u ) 的导数(dydu)( \frac{dy}{du} )(dudy),再求内层函数 ( g(x) ) 对自变量 ( x ) 的导数(dudx)( \frac{du}{dx} )(dxdu),最后将两个导数相乘。

2. 直观理解:“连锁反应”

可类比“速度的传递”——比如:

  • 若 ( y ) 随 ( u ) 的变化率是 ( dydu=2\frac{dy}{du} = 2dudy=2 )(( u ) 变1,( y ) 变2);
  • ( u ) 随 ( x ) 的变化率是 ( dudx=3\frac{du}{dx} = 3dxdu=3 )(( x ) 变1,( u ) 变3);
  • 则 ( y ) 随 ( x ) 的变化率就是 ( 2×3=62 \times 3 = 62×3=6 )(( x ) 变1,( y ) 最终变6),这就是“链式”的含义。

3. 多变量扩展(偏导数)

若 ( z = f(u, v) ),且 ( u = g(x, y) )、( v = h(x, y) )(多变量复合),则 ( z ) 对 ( x ) 的偏导数为:
[
∂z∂x=∂z∂u⋅∂u∂x+∂z∂v⋅∂v∂x\frac{\partial z}{\partial x} = \frac{\partial z}{\partial u} \cdot \frac{\partial u}{\partial x} + \frac{\partial z}{\partial v} \cdot \frac{\partial v}{\partial x}xz=uzxu+vzxv
]

  • 逻辑:每个中间变量(( u, v ))都对 ( x ) 有贡献,需分别求“外层对中间”“中间对自变量”的偏导数,再相加(类似“多路径叠加”)。

4. 简单示例

比如求 ( y=sin⁡(x2)y = \sin(x^2)y=sin(x2) ) 的导数:

  • 外层函数:( y=sin⁡(u)y = \sin(u)y=sin(u) ),中间变量 ( u=x2u = x^2u=x2 );
  • 外层对中间的导数:( dydu=cos⁡(u)\frac{dy}{du} = \cos(u)dudy=cos(u) );
  • 中间对自变量的导数:( dudx=2x\frac{du}{dx} = 2xdxdu=2x );
  • 相乘得:( dydx=cos⁡(u)⋅2x=2xcos⁡(x2)\frac{dy}{dx} = \cos(u) \cdot 2x = 2x\cos(x^2)dxdy=cos(u)2x=2xcos(x2) )。

链式法则是求导的“基础工具”,从简单的单变量复合函数,到深度学习中神经网络的反向传播(如对多层权重的梯度计算),本质都依赖链式法则的逐层传递逻辑。

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### 神经网络链式法则的应用与原理 #### 链式法则神经网络中的核心作用 链式法则是微积分中的重要工具,用于计算复合函数的导数。在神经网络中,反向传播算法依赖于链式法则来高效地计算损失函数相对于每个权重和偏置的梯度。具体来说,神经网络是一个由多层组成的复杂系统,每一层的输出作为下一层的输入。因此,整个网络可以看作一系列嵌套函数的组合。 对于任意给定的权重 \( w \),其对应的梯度可以通过链式法则分解为多个局部梯度的乘积[^2]。这种分解使得即使在网络非常深的情况下,也可以有效地计算梯度并进行参数更新。 --- #### 正向传播与反向传播的关系 正向传播是指从输入层到输出层依次计算每层的结果,最终得到预测值的过程。假设第 \( l \) 层的激活值为 \( a^{(l)} \),则有: \[ a^{(l)} = f(z^{(l)}) = f(w^{(l)}a^{(l-1)} + b^{(l)}) \] 其中,\( z^{(l)} \) 是加权输入,\( f(\cdot) \) 是激活函数,\( w^{(l)} \) 和 \( b^{(l)} \) 分别是该层的权重和偏置。 反向传播的目标是从最后一层(输出层)开始逐层向前计算梯度,并将其分配给相应的权重和偏置。这一过程中,链式法则被用来逐步拆分复杂的梯度表达式。 --- #### 使用链式法则的具体步骤 以下是基于链式法则的反向传播主要步骤: 1. **定义目标函数** 假设损失函数为 \( L(a^{(L)}, y) \),其中 \( a^{(L)} \) 表示输出层的激活值,\( y \) 表示真实标签,则需要计算 \( \frac{\partial L}{\partial w} \) 和 \( \frac{\partial L}{\partial b} \)[^4]。 2. **计算输出层的误差项** 定义误差项 \( \delta^{(L)} \) 为: \[ \delta^{(L)} = \nabla_a L \odot f'(z^{(L)}) \] 这里,\( \nabla_a L \) 是损失函数关于输出层激活值的梯度,\( f'(\cdot) \) 是激活函数的导数。 3. **逐层回传误差** 对于隐藏层 \( l \),误差项 \( \delta^{(l)} \) 可以通过前一层的误差项 \( \delta^{(l+1)} \) 来计算: \[ \delta^{(l)} = (w^{(l+1)})^\top \delta^{(l+1)} \odot f'(z^{(l)}) \][^3] 4. **计算权重和偏置的梯度** 利用误差项 \( \delta^{(l)} \),可以分别计算当前层的权重和偏置的梯度: \[ \frac{\partial L}{\partial w^{(l)}} = \delta^{(l)} (a^{(l-1)})^\top, \quad \frac{\partial L}{\partial b^{(l)}} = \delta^{(l)} \] 这些梯度随后会被用于优化器(如梯度下降)来调整模型参数。 --- #### 示例代码实现 以下是一个简单的 Python 实现,展示如何应用链式法则完成单步反向传播: ```python import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) def sigmoid_derivative(x): return sigmoid(x) * (1 - sigmoid(x)) # 输入数据 X = np.array([[0.5]]) y_true = np.array([1]) # 初始化权重和偏置 W1 = np.random.randn(1, 2) b1 = np.zeros((1, 2)) W2 = np.random.randn(2, 1) b2 = np.zeros((1, 1)) # 正向传播 Z1 = X @ W1 + b1 A1 = sigmoid(Z1) Z2 = A1 @ W2 + b2 A2 = Z2 # 输出层无激活函数 # 计算损失 loss = 0.5 * ((A2 - y_true)**2).sum() # 反向传播 dL_dA2 = A2 - y_true dA2_dZ2 = 1 # 因为输出层无激活函数 delta_L = dL_dA2 * dA2_dZ2 dZ2_dW2 = A1.T grad_W2 = delta_L @ dZ2_dW2 dZ2_dA1 = W2.T delta_A1 = delta_L @ dZ2_dA1 delta_Z1 = delta_A1 * sigmoid_derivative(Z1) dZ1_dW1 = X.T grad_W1 = delta_Z1 @ dZ1_dW1 print("Gradient of W2:", grad_W2) print("Gradient of W1:", grad_W1) ``` --- #### 总结 链式法则的核心思想是在复杂的函数关系中找到局部变化率之间的联系,并以此为基础构建全局的变化规律。在神经网络中,这种方法不仅简化了梯度计算过程,还极大地提高了训练效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值