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

基于Softmax与交叉熵损失的反向传播偏导求解咨询

咱们一步步来拆解——先确认Softmax+交叉熵组合的核心梯度,再把这些推导直接对应到你的3分类网络架构上。


先统一符号(和你的描述完全对齐)

  • 输入层:$i_1, i_2$(2个神经元)
  • 隐藏层:3个神经元$h_1, h_2, h_3$,每个的净输入为$net_{h_j} = w_{h_j,i1}i_1 + w_{h_j,i2}i_2 + b_{h_j}$(其中$w_{h_j,i1}$就是你说的w13:i1到h1的权重),激活后输出为$out_{h_j} = f(net_{h_j})$($f$是隐藏层激活函数,比如Sigmoid/ReLU,后续推导会用到)
  • 输出层:3个神经元$o_1, o_2, o_3$,每个的**净输入(logits)**为$net_{o_i} = w_{o_i,h1}out_{h1} + w_{o_i,h2}out_{h2} + w_{o_i,h3}out_{h3} + b_{o_i}$(其中$w_{o_i,h1}$就是你说的w1:h1到o1的权重)
  • Softmax输出:$S_i = \frac{e{net_{o_i}}}{\sum_{m=1}3 e^{net_{o_m}}}$(对应你提到的S1、S2、S3)
  • 交叉熵损失:$L = -\sum_{i=1}^3 y_i \log(S_i)$,其中$y_i$是one-hot标签(比如正确类别是o1时,$y_1=1, y_2=y_3=0$)

核心推导:损失对输出层logits的偏导

这是Softmax+交叉熵组合最关键的简化结论,先验证这个核心偏导是否和你的推导一致:

我们对输出层第k个logit $net_{o_k}$ 求偏导:
$$
\frac{\partial L}{\partial net_{o_k}} = \frac{\partial}{\partial net_{o_k}} \left( -\sum_{i=1}^3 y_i \log\left( \frac{e{net_{o_i}}}{\sum_{m=1}3 e^{net_{o_m}}} \right) \right)
$$
拆分并化简后(利用$\log(a/b)=\log a - \log b$、$\log ex=x$,以及one-hot标签$\sum_{i=1}3 y_i=1$的特性),最终会得到:
$$
\boldsymbol{\frac{\partial L}{\partial net_{o_k}} = S_k - y_k}
$$
如果你的偏导方程和这个结论一致,那完全正确!这是Softmax与交叉熵组合的核心优势——梯度计算被大幅简化,不需要复杂的链式展开。


特定偏导数的推导(对应你的需求)

下面针对你提到的权重(w1、w13)以及其他常见的偏导场景,给出具体方程:

1. 损失对输出层权重的偏导(比如w1:h1→o1的权重)

用链式法则拆解:损失→$net_{o1}$→w1
$$
\frac{\partial L}{\partial w_{o1,h1}} = \frac{\partial L}{\partial net_{o1}} \cdot \frac{\partial net_{o1}}{\partial w_{o1,h1}}
$$
其中$\frac{\partial net_{o1}}{\partial w_{o1,h1}} = out_{h1}$(net_o1对w1的偏导就是h1的激活输出),代入核心结论得:
$$
\boldsymbol{\frac{\partial L}{\partial w_{o1,h1}} = (S_1 - y_1) \cdot out_{h1}}
$$

2. 损失对隐藏层权重的偏导(比如w13:i1→h1的权重)

链式法则拆解:损失→$out_{h1}$→$net_{h1}$→w13
$$
\frac{\partial L}{\partial w_{h1,i1}} = \frac{\partial L}{\partial out_{h1}} \cdot \frac{\partial out_{h1}}{\partial net_{h1}} \cdot \frac{\partial net_{h1}}{\partial w_{h1,i1}}
$$
其中:

  • $\frac{\partial out_{h1}}{\partial net_{h1}} = f'(net_{h1})$(隐藏层激活函数的导数,比如Sigmoid的导数是$out_{h1}(1-out_{h1})$)
  • $\frac{\partial net_{h1}}{\partial w_{h1,i1}} = i_1$(net_h1对w13的偏导就是输入i1)
  • $\frac{\partial L}{\partial out_{h1}} = (S_1 - y_1)w_{o1,h1} + (S_2 - y_2)w_{o2,h1} + (S_3 - y_3)w_{o3,h1}$(h1输出会影响所有3个输出层的logits,需求和)
    代入后得:
    $$
    \boldsymbol{\frac{\partial L}{\partial w_{h1,i1}} = \left[ (S_1 - y_1)w_{o1,h1} + (S_2 - y_2)w_{o2,h1} + (S_3 - y_3)w_{o3,h1} \right] \cdot f'(net_{h1}) \cdot i_1}
    $$

3. 其他常见偏导补充

  • 损失对输出层偏置的偏导(比如o1的偏置$b_{o1}$):$\boldsymbol{\frac{\partial L}{\partial b_{o1}} = S_1 - y_1}$
  • 损失对隐藏层偏置的偏导(比如h1的偏置$b_{h1}$):$\boldsymbol{\frac{\partial L}{\partial b_{h1}} = \left[ (S_1 - y_1)w_{o1,h1} + (S_2 - y_2)w_{o2,h1} + (S_3 - y_3)w_{o3,h1} \right] \cdot f'(net_{h1})}$
  • 损失对隐藏层输出的偏导(比如h1的输出$out_{h1}$):$\boldsymbol{\frac{\partial L}{\partial out_{h1}} = (S_1 - y_1)w_{o1,h1} + (S_2 - y_2)w_{o2,h1} + (S_3 - y_3)w_{o3,h1}}$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:43:34