面试常问系列(一)-神经网络参数初始化-之-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.mzph.cn/bicheng/80392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5.9-selcct_poll_epoll 和 reactor 的模拟实现

5.9-select_poll_epoll 本文演示 select 等 io 多路复用函数的应用方法,函数具体介绍可以参考我过去写的博客。 先绑定监听的文件描述符 int sockfd socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serveraddr; memset(&serveraddr, 0, sizeof(struc…

Python基础语法(上)

常量和表达式 我们可以使用python来进行一些 - * / %的一些运算 print(1 2 - 3) print(1 2 * 3) print(1 2 / 3) python中的运算规则与数学当中一致,先乘除后加减,有括号的先计算括号里面的。 形如 1 2 - 3 这样是算式, 在编程语言中称为 表达式,…

数图闪耀2025深圳CCFA中国零售博览会:AI+零售数字化解决方案引发现场热潮

展会时间:2025年5月8日—10日 地点:深圳国际会展中心(宝安新馆) 【深圳讯】5月8日,亚洲规模最大的零售行业盛会——2025 CCFA中国零售博览会在深圳盛大开幕。本届展会汇聚全球25个国家和地区的900余家参展商&#xff…

方法:批量识别图片区域文字并重命名,批量识别指定区域内容改名,基于QT和阿里云的实现方案,详细方法

基于QT和阿里云的图片区域文字识别与批量重命名方案 项目场景 ​​企业档案管理​​:批量处理扫描合同、发票等文档,根据编号或关键信息自动重命名文件​​医疗影像管理​​:识别X光、CT等医学影像中的患者信息,按姓名+检查日期重命名​​电商订单处理​​:从订单截图中提…

Mybatis解决以某个字段存在,批量更新,不存在批量插入(高效)(一)

背景 在开发企业级应用时,我们经常需要处理批量数据的插入和更新操作。传统的逐条处理方式性能低下,而简单的REPLACE INTO或INSERT ... ON DUPLICATE KEY UPDATE在某些场景下又不够灵活。本文将介绍一种基于临时表的高效批量插入/更新方案,解…

JVM、JRE、JDK的区别

JVM JVM全称Java虚拟机(Java Virtual Machine, JVM),它是运行java字节码的虚拟机,JVM针对不同的系统有不同的实现,目的运行相同的字节码有同样的结果,JVM是“一次编译,到处运行”实现的关键。如下不同的编程语言编译生成字节码文…

神经元和神经网络定义

在深度学习中,神经元和神经网络是构成神经网络模型的基本元素。让我们从基础开始,逐步解释它们的含义和作用。 1️⃣ 神经元是什么? 神经元是神经网络中的基本计算单元,灵感来自于生物神经系统中的神经元。每个人的脑中有数以亿…

CDGP重点知识梳理

写在前面 全文11700字,共82个重点知识 目 录 考点分布 考试要求 第一章 数据管理-5%

Ubuntu 22.04 安装配置远程桌面环境指南

在云服务器或远程主机上安装图形化桌面环境,可以极大地提升管理效率和用户体验。本文将详细介绍如何在 Ubuntu 22.04 (Jammy Jellyfish) 系统上安装和配置 Xfce4 桌面环境,并通过 VNC 实现远程访问。 系统环境 操作系统:Ubuntu 22.04 LTS (Jammy Jellyfish)架构:AMD64安装…

node提示node:events:495 throw er解决方法

前言 之前开发的时候喜欢使用高版本,追求新的东西,然后回头运行一下之前的项目提示如下 项目技术栈:node egg 报错 node:events:495 throw er; // Unhandled error event ^ Error: ENOENT: no such file or directory, scandir F:\my\gi…

【软件设计师:软件工程】9.软件开发模型与方法

一、软件危机与软件工程 软件危机与软件工程是计算机科学发展中密切相关的两个概念。 1.软件危机(Software Crisis) 背景:20世纪60年代至80年代,随着计算机硬件性能提升,软件规模与复杂度剧增,传统开发方法难以应对,导致大量项目失败。 表现: 成本失控:开发周期长、…

范式之殇-关系代数与参照完整性在 Web 后台的落寞

最近参加了一个PostgreSQL相关的茶会,感慨良多。原本话题是PostgreSQL 在 SELECT 场景中凭借其成熟的查询优化器、丰富的功能特性和灵活的执行策略,展现出显著优势。在窗口函数(Window Functions)、JOIN 优化、公共表表达式&#…

WebRTC工作原理详细介绍、WebRTC信令交互过程和WebRTC流媒体传输协议介绍

简介 WebRTC(Web Real-Time Communication)是一项允许在网页浏览器之间进行音视频通信的技术,基本不需要安装额外的插件。它的核心特点是支持低延迟的点对点(P2P)通讯,常用于视频聊天、实时文件共享、多人…

【大语言模型ChatGPT4/4o 】“AI大模型+”多技术融合:赋能自然科学暨ChatGPT在地学、GIS、气象、农业、生态与环境领域中的应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

提升编程效率的利器:Zed高性能多人协作代码编辑器

在当今这个快节奏的开发环境中,一个高效、灵活的代码编辑器无疑对开发者们起着至关重要的支持作用。Zed,作为来自知名编辑器Atom和语法解析器Tree-sitter的创造者的心血之作,正是这样一款高性能支持多人合作的编辑神器。本文将带领大家深入探…

基于51单片机步进电机控制—9个等级

基于51单片机步进电机控制 (仿真+程序+设计报告) 功能介绍 具体功能: 1.使用L298驱动步进电机转动,可分为9个速度等级(1级最快,9级最慢); 2.使用74HC595驱…

【某OTA网站】phantom-token 1004

新版1004 phantom-token 请求头中包含phantom-token 定位到 window.signature 熟悉的vmp 和xhs一样 最新环境检测点 最新检测 canvas 下的 toDataURL方法较严 过程中 会用setAttribute给canvas 设置width height 从而使toDataURL返回不同的值 如果写死toDataURL的返回值…

LSTM的简单模型

好的,我来用通俗易懂的语言解释一下这个 LSTMTagger 类是如何工作的。 1️⃣ 类的目的 这个 LSTMTagger 类是一个用于自然语言处理(NLP)任务的模型,目的是标注输入的句子,通常用于词性标注(例如&#xff…

每天批次导入 100 万对账数据到 MySQL 时出现死锁

一、死锁原因及优化策略 1.1 死锁原因分析 批量插入事务过大: Spring Batch 默认将整个 chunk(批量数据块)作为一个事务提交,100 万数据可能导致事务过长,增加锁竞争。 并发写入冲突: 多个线程或批处理作…

DeepResearch深度搜索实现方法调研

DeepResearch深度搜索实现方法调研 Deep Research 有三个核心能力 能力一:自主规划解决问题的搜索路径(生成子问题,queries,检索)能力二:在探索路径时动态调整搜索方向(刘亦菲最好的一部电影是…