当前位置: 首页 > 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输入值合理,从而保持梯度稳定,提升训练效率。这一设计是深度学习中处理高维数据时的重要技巧。

相关文章:

  • 第二章 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 )中的最佳实践解决方案
  • 上海乐高乐园明天正式开售年卡,下月开启试运营
  • 云南昆磨高速发生交通事故致3辆车起火,昆明消防:幸无人员伤亡
  • 山东滕州市醉驾交通事故肇事人员已被刑拘
  • 抗战回望19︱《中国工程师学会四川考察团报告》:“将来重工业所在,以四川为最适宜之地点”
  • 三亚再回应游客骑摩托艇出海遇暴雨:俱乐部未配备足额向导人员,停业整改
  • 阿根廷发生5.6级地震,震源深度30公里