You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算矩阵-向量点积的导数:神经网络反向传播局部梯度求解

没问题,我来帮你理清楚这个点积节点的局部梯度计算——完全按照CS231n里的反向传播思路来拆解!

点积节点的局部梯度与链式传播(针对$W \cdot a = b$场景)

首先明确正向计算逻辑:我们有一个3×3的权重矩阵$W$,和一个3×1的输入向量$a$,两者做点积得到3×1的输出向量$b$,也就是$b = W \cdot a$。接下来我们聚焦局部梯度的计算,以及它如何和上游梯度结合。

1. 局部梯度的本质(CS231n核心思路)

局部梯度指的是当前节点输出对输入的偏导数,它描述了“输入的微小扰动会如何直接影响输出”。对于我们的场景,就是要先算出$\frac{\partial b}{\partial W}$——也就是W的每个元素变化时,b的各个元素会怎么变。

2. 逐元素推导局部梯度

把点积拆成元素级的计算来看更清晰:

  • $b_i = W_{i,1}a_1 + W_{i,2}a_2 + W_{i,3}a_3$(其中$i=1,2,3$,对应b的第i个元素)

现在求$\frac{\partial b_i}{\partial W_{m,n}}$(b的第i个元素对W第m行第n列元素的偏导数):

  • 当$i=m$时:只有$W_{m,n}a_n$这一项会影响$b_m$,所以$\frac{\partial b_i}{\partial W_{m,n}} = a_n$
  • 当$i≠m$时:W的这个元素和b的第i个元素完全无关,所以$\frac{\partial b_i}{\partial W_{m,n}} = 0$

简单说就是:W的第m行第n列元素,只会直接影响b的第m个元素,影响幅度等于a的第n个元素。

3. 结合上游梯度的链式传播(反向传播的核心)

在神经网络训练中,我们最终要的是损失对W的梯度$\frac{\partial \text{loss}}{\partial W}$,这就需要把局部梯度和上游传来的梯度$\nabla_b = \frac{\partial \text{loss}}{\partial b}$(这是一个3×1的向量,代表b的每个元素对损失的影响程度)做链式相乘。

根据链式法则:
$\frac{\partial \text{loss}}{\partial W_{i,j}} = \sum_{k=1}^3 \frac{\partial \text{loss}}{\partial b_k} \cdot \frac{\partial b_k}{\partial W_{i,j}}$

代入之前的局部梯度结果,只有当$k=i$时,$\frac{\partial b_k}{\partial W_{i,j}} = a_j$,其他项都是0,所以:
$\frac{\partial \text{loss}}{\partial W_{i,j}} = \nabla_b[i] \cdot a[j]$

把这个结果整理成矩阵乘法形式,会更简洁直观:
$\frac{\partial \text{loss}}{\partial W} = \nabla_b \cdot a^T$

这里$aT$是a的转置(1×3向量),3×1的$\nabla_b$和1×3的$aT$相乘,正好得到和W维度一致的3×3矩阵,完美匹配后续参数更新的需求。

4. 扰动视角的直观理解

你提到的“扰动W时b的变化”,可以这么具象化:如果给$W_{i,j}$加一个微小增量$\Delta W_{i,j}$,那么b的第i个元素会增加$\Delta W_{i,j} \cdot a_j$,其他元素完全不受影响。而反向传播时,我们把这个局部影响,和上游传来的“b的第i个元素对损失的重要性”(也就是$\nabla_b[i]$)相乘,就得到了$W_{i,j}$对最终损失的影响程度——这就是我们要的参数梯度。


内容的提问来源于stack exchange,提问作者Readingtao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:55:13