神经网络之交叉熵与 Softmax 的梯度计算

🧠 目标

我们要计算的是:

给定模型输出 logits z=z1,z2,...,zC\mathbf{z} = z_1, z_2, ..., z_Cz=z1,z2,...,zC,Softmax 后得到预测概率 y^=y\^1,...,y\^C\hat{\mathbf{y}} = \\hat{y}_1, ..., \\hat{y}_Cy^=y\^1,...,y\^C,交叉熵损失函数为:

L=−∑i=1Cyilog⁡(y^i) L = -\sum_{i=1}^C y_i \log(\hat{y}_i) L=−i=1∑Cyilog(y^i)

我们要推导损失对 z\mathbf{z}z 的梯度,也就是:

∂L∂zj \frac{\partial L}{\partial z_j} ∂zj∂L


📘 步骤概览:

  1. 定义 softmax:

    y^i=ezi∑k=1Cezk \hat{y}i = \frac{e^{z_i}}{\sum{k=1}^C e^{z_k}} y^i=∑k=1Cezkezi

  2. 定义交叉熵:

    L=−∑i=1Cyilog⁡(y^i) L = -\sum_{i=1}^C y_i \log(\hat{y}_i) L=−i=1∑Cyilog(y^i)

  3. 合并并对 zjz_jzj 求导:


🧮 步骤一:对 softmax 求导

对于 softmax 输出的 y^i\hat{y}_iy^i,对 zjz_jzj 求导:

  • 当 i=ji = ji=j 时:

∂y^i∂zj=y^i(1−y^i) \frac{\partial \hat{y}_i}{\partial z_j} = \hat{y}_i (1 - \hat{y}_i) ∂zj∂y^i=y^i(1−y^i)

  • 当 i≠ji \ne ji=j 时:

∂y^i∂zj=−y^iy^j \frac{\partial \hat{y}_i}{\partial z_j} = -\hat{y}_i \hat{y}_j ∂zj∂y^i=−y^iy^j

或者统一地写成:

∂y^i∂zj=y^i(δij−y^j) \frac{\partial \hat{y}_i}{\partial z_j} = \hat{y}i (\delta{ij} - \hat{y}_j) ∂zj∂y^i=y^i(δij−y^j)

其中 δij\delta_{ij}δij 是 Kronecker delta,若 i=ji = ji=j 则为 1,否则为 0。


🧮 步骤二:对损失函数求导

回忆损失函数:

L=−∑i=1Cyilog⁡(y^i) L = -\sum_{i=1}^C y_i \log(\hat{y}_i) L=−i=1∑Cyilog(y^i)

对 zjz_jzj 求导(链式法则):

∂L∂zj=−∑i=1Cyi⋅1y^i⋅∂y^i∂zj \frac{\partial L}{\partial z_j} = -\sum_{i=1}^C y_i \cdot \frac{1}{\hat{y}_i} \cdot \frac{\partial \hat{y}_i}{\partial z_j} ∂zj∂L=−i=1∑Cyi⋅y^i1⋅∂zj∂y^i

代入 softmax 的导数:

∂L∂zj=−∑i=1Cyi⋅1y^i⋅y^i(δij−y^j)=−∑i=1Cyi(δij−y^j) \frac{\partial L}{\partial z_j} = -\sum_{i=1}^C y_i \cdot \frac{1}{\hat{y}i} \cdot \hat{y}i (\delta{ij} - \hat{y}j) = -\sum{i=1}^C y_i (\delta{ij} - \hat{y}_j) ∂zj∂L=−i=1∑Cyi⋅y^i1⋅y^i(δij−y^j)=−i=1∑Cyi(δij−y^j)

展开求和:

∂L∂zj=−yj(1−y^j)+∑i≠jyiy^j \frac{\partial L}{\partial z_j} = -y_j (1 - \hat{y}j) + \sum{i \ne j} y_i \hat{y}_j ∂zj∂L=−yj(1−y^j)+i=j∑yiy^j

由于 ∑i≠jyi=1−yj\sum_{i \ne j} y_i = 1 - y_j∑i=jyi=1−yj,可化简为:

∂L∂zj=y^j−yj \frac{\partial L}{\partial z_j} = \hat{y}_j - y_j ∂zj∂L=y^j−yj


✅ 结论:最终梯度公式

∂L∂zj=y^j−yj \boxed{ \frac{\partial L}{\partial z_j} = \hat{y}_j - y_j } ∂zj∂L=y^j−yj

也就是说,Softmax + 交叉熵一起用时,最终反向传播时的梯度是预测概率减去真实标签


📌 优点

  • 数值稳定 :因为常用实现将 Softmax + CrossEntropy 合并在一起(如 PyTorch 中的 CrossEntropyLoss),避免了显式计算 log(softmax(x)),从而防止 underflow/overflow。
  • 高效:只需要一减法操作,计算非常快。
  • 简单清晰:可以直接用误差向量反向传播。
相关推荐
苏州邦恩精密18 小时前
江苏三维扫描仪厂家如何选择合适的工业测量方案?
人工智能·科技·机器学习·3d·自动化·制造
humors22118 小时前
100种社会实践
人工智能·程序人生
保卫大狮兄18 小时前
什么是WBS项目管理?WBS有哪些核心功能?
大数据·人工智能
标书畅畅行18 小时前
钛投标:全流程企业级AI标书解决方案,重构投标数字化生产力
大数据·人工智能
叫我:松哥18 小时前
基于深度卷积神经网络的水果图片分类算法设计与实现,有ResNet50的迁移学习模型,准确率达95%
人工智能·python·神经网络·机器学习·分类·cnn·迁移学习
大囚长18 小时前
大模型API的上下文缓存(Contextual Cache)
人工智能·缓存
无心水18 小时前
【Hermes:团队、企业、生态与边界】47、Hermes 在 CI/CD 中的完整 DevOps 流水线:从 PR 审查到自动部署,让 Agent 接管你的发布流程
运维·人工智能·devops·openclaw·养龙虾·hermes·honcho
名不经传的养虾人18 小时前
从0到1:企业级AI项目迭代日记 Vol.44|功能建好,和功能接通,是两件完全不同的事
人工智能·架构·agent·ai编程·企业ai
金融小师妹18 小时前
AI因子共振模型显示:金银比突破区间上沿,白银定价逻辑进入再校准阶段
人工智能·算法·均值算法·线性回归
奶油话梅糖18 小时前
IMA 知识库体验(内有资源分享):把资料变成可以提问的 AI 知识助手
人工智能·ai·aigc·知识图谱·知识库·学习工具·ima