当前位置: 首页 > news >正文

面试常问系列(一)-神经网络参数初始化-之-softmax

背景

本文内容还是对之前关于面试题transformer的一个延伸,详细讲解一下softmax

面试常问系列(二)-神经网络参数初始化之自注意力机制-CSDN博客

Softmax函数的梯度特性与输入值的幅度密切相关,这是Transformer中自注意力机制需要缩放点积结果的关键原因。以下从数学角度展开分析:

1. Softmax 函数回顾

给定输入向量 z = [z₁, z₂, ..., zₖ],Softmax 输出概率为:

\sigma(z)_i = \frac{e^{z_i}}{\sum_{j=1}^{k}e^{z_j}} =\frac{e^{z_i}}{S},S=\sum_{j=1}^{k}e^{z_j}                        

其中 S 是归一化因子。

2. 梯度计算目标

计算 Softmax 对输入 z 的梯度,即 \frac{\delta \sigma_i}{\delta z_j}对所有 i,j∈{1,…,k}。

3. 梯度推导

根据链式法则,对 σi​ 关于 zj​ 求导:

\frac{\delta \sigma_i}{\delta z_j} = \left\{\begin{matrix} &\sigma_i(1-\sigma_j)) &if &i=j, \\ & -\sigma_i\sigma_j &if &i\neq j, \end{matrix}\right.

具体推到过程就不展示了,感兴趣的有需要的可以评论下。因为本次重点不是通用的softmax分析,而是偏实战分析。

4. 与交叉熵损失结合的梯度

在实际应用中,Softmax 通常与交叉熵损失L = \sum_{i=1}^{n}y_i*log\sigma_i 结合使用。此时梯度计算更简单:

\frac{\partial L }{\partial z_j} = \sigma(z_j)-y_j

其中 y_j是真实标签的 one-hot 编码。

5. 推导

  1. 交叉熵损失对 ​\sigma_i 的梯度:

\frac{\partial L }{\partial\sigma_i} = -\frac{y_i}{\sigma_i}

    2. 通过链式法则:

\frac{\partial L }{\partial z_j} =\sum_{i} \frac{\partial L }{\partial \sigma_i}\frac{\partial \sigma_i }{\partial z_j}=\sum_{i} -\frac{y_i }{\sigma_i}\frac{\partial \sigma_i }{\partial z_j}

    3. 代入在上面求解出的\frac{\delta \sigma_i}{\delta z_j}

  • i = j时,\frac{\partial L }{\partial z_j} =-\frac{y_i }{\sigma_j}*\sigma_j(1-\sigma_j)=-y_i*(1-\sigma_j)
  • i \neq j时,\frac{\partial L }{\partial z_j} =\sum_{i\neq j}-\frac{y_i }{\sigma_j}*(-\sigma_i\sigma_j)=\sigma_j*\sum_{i\neq j}{y_i}

    4.合并上述结果

\frac{\partial L }{\partial z_j} =-y_j*(1-\sigma_j) + \sigma_j*(1-y_j)=\sigma_j-y_j

6. 梯度消失问题

  • 极端输入值:若z_k远大于其他z_i,则\sigma (z_k) \approx 1,其他\sigma (z_i) \approx 0。此时:
    • z_k的梯度:-y_k*(1-\sigma_{z_k}) \approx 0(若yk​=1,梯度接近0)。
    • 对其他zi​的梯度:\sigma (z_i) \approx 0, \sigma_j*\sum_{i\neq j}{y_i} \approx 0,梯度趋近于0。
  • 后果:梯度消失导致参数更新困难,模型难以训练。

7. 缩放的作用

在Transformer中,点积结果除以dk​​后:

  • 输入值范围受限:缩放后z_i的方差为1,避免极端值。
  • 梯度稳定性提升\sigma (z_i)分布更均匀,-y_k*(1-\sigma_{z_k})\sigma (z_i)不会趋近于0,梯度保持有效。

5. 直观示例

  • 未缩放:若dk​=512,点积标准差结果可能达±22,Softmax输出接近0或1,梯度消失。
  • 缩放后:点积结果范围约±5,σ(zi​)分布平缓,梯度稳定。
  • 这个示例在最开始的跳转链接有详细解释,可以参考。

总结

Softmax的梯度对输入值敏感,过大输入会导致梯度消失。Transformer通过除以dk​​控制点积方差,确保Softmax输入值合理,从而保持梯度稳定,提升训练效率。这一设计是深度学习中处理高维数据时的重要技巧。

http://www.dtcms.com/a/174387.html

相关文章:

  • 第二章 Logback的架构(二)
  • [250504] Moonshot AI 发布 Kimi-Audio:开源通用音频大模型,驱动多模态 AI 新浪潮
  • Adobe卸载清理工具Creative Cloud Cleaner Tool下载
  • 学习Python的第二天之网络爬虫
  • 各国健康指标数据查询
  • P48-56 应用游戏标签
  • PCIe控制逻辑介绍(一)
  • GitHub中多个PR时,如何协同合并和管理
  • 【计算机网络】TCP为什么可靠?解决了哪些问题?
  • JPress安装(Docker)
  • iMeta | 临床研究+scRNA-seq的组合思路 | 真实世界新辅助研究,HER2⁺就一定受益?单细胞揭示真正的“疗效敏感克隆”
  • 【BUG】mmdetection ValueError: need at least one array to concatenate
  • 【Qt4】Qt4中实现PDF预览
  • 【东枫科技】代理英伟达产品:智能网卡的连接线
  • URP - 深度图
  • CSS网格布局
  • UE5 ML机械学习肌肉反应与布料反应
  • 大疆三方云平台部署
  • Linux grep 命令详解及示例大全
  • 多线程“CPU 飙高”问题:如何确保配置的线程数与CPU核数匹配(Java、GoLang、Python )中的最佳实践解决方案
  • 可检查异常与不可检查异常
  • suna工具调用可视化界面实现原理分析(三)
  • 【神经网络、Transformer及模型微调】
  • Windows11下ESP-IDF开发环境搭建【基于Cursor/VS Code插件】
  • 2025-05-06 滑动窗口最大值
  • 逐次逼近式A/D转换器
  • 1、PLC控制面板 - /自动化与控制组件/plc-control-panel
  • AI-02a5a2.神经网络的学习
  • C# 实现PLC数据自动化定时采集与存储(无需界面,自动化运行)
  • 2021-10-31 C++求一个千位和十位数字之和为10,百位个位之积为12的四位数