基于考研概率论知识解读 Transformer:为何自注意力机制要除以根号 dk

Transformer自注意力机制中除以 d k \sqrt{d_k} dk 深度剖析

【 Transformer 系列,故事从 d k \sqrt{d_k} dk 说起

LLM这么火,Transformer厥功甚伟,某天心血来潮~,再去看看!

它长这个样子: 深入浅出 Transformer

看完后,想起了老生常谈 d k \sqrt{d_k} dk 问题,必须一探究竟:Transformer 中缩放点积注意力机制探讨:除以根号 dk 理由及其影响

感觉不够清楚,还是再Review下考研概率论,有了:基于考研概率论知识解读 Transformer:为何自注意力机制要除以根号 dk,中间会涉及初始化、标准化、Sofrmax函数,于是继续

【初始化相关】:深度学习中的常见初始化方法:原理、应用与比较
【标准化系列】: 数据为什么要进行标准化:Z-标准化的神奇蜕变,带出了关联知识点: 深度 “炼丹” 术之 Batch Normalization 与 Z - 标准化:开启数据的神秘转换
【Softmax复习】:Softmax 层反向传播梯度计算实例解析,中间想到了经常配套使用的交叉熵,于是梳理了交叉熵的前世今生

KL 散度:多维度解读概率分布间的隐秘 “距离”
熵与交叉熵:从不确定性角度理解 KL 散度
机器学习、深度学习关于熵你所需要知道的一切

摘要

本文深入探讨了Transformer自注意力机制中除以 d k \sqrt{d_k} dk 这一关键操作的原因。通过详细的推导过程揭示 d k \sqrt{d_k} dk 的来源,并结合Softmax函数的特性,分析不除以 d k \sqrt{d_k} dk 以及除以结果偏离 d k \sqrt{d_k} dk 时对模型造成的后果及其内在原因,旨在为理解Transformer的工作原理提供全面且深入的视角。

引言

Transformer架构在自然语言处理及其他诸多领域取得了巨大成功,其自注意力机制是核心创新点之一。在自注意力机制的计算过程中,除以 d k \sqrt{d_k} dk (其中 d k d_k dk是键(Key)向量的维度)这一操作对模型的稳定性和性能起着至关重要的作用,本文结合考研中的概率知识对除以 d k \sqrt{d_k} dk 进行理解。


一、考研概率论内容复习

在Transformer自注意力机制中关于方差推导主要用到了以下考研概率知识:

在这里插入图片描述

  1. 期望与方差的基本定义及性质
    • 期望:期望 E ( X ) E(X) E(X) 表示随机变量 X X X 取值的平均水平。
    • 方差:方差 V a r ( X ) = E [ ( X − E ( X ) ) 2 ] = E [ X 2 ] − ( E [ X ] ) 2 Var(X)=E[(X - E(X))^2]=E[X^2]-(E[X])^2 Var(X)=E[(XE(X))2]=E[X2](E[X])2,用于衡量随机变量取值的离散程度。
  2. 独立随机变量的性质
    • X X X Y Y Y 是两个独立的随机变量,则 E [ X Y ] = E [ X ] E [ Y ] E[XY]=E[X]E[Y] E[XY]=E[X]E[Y]
    • 对于独立随机变量 X X X Y Y Y V a r ( X Y ) = E [ X 2 ] E [ Y 2 ] − ( E [ X ] E [ Y ] ) 2 Var(XY)=E[X^2]E[Y^2]-(E[X]E[Y])^2 Var(XY)=E[X2]E[Y2](E[X]E[Y])2
    • X 1 , X 2 , ⋯   , X n X_1,X_2,\cdots,X_n X1,X2,,Xn 相互独立,那么 V a r ( ∑ i = 1 n X i ) = ∑ i = 1 n V a r ( X i ) Var(\sum_{i = 1}^{n}X_i)=\sum_{i = 1}^{n}Var(X_i) Var(i=1nXi)=i=1nVar(Xi)
  3. 随机变量的分布
    假设随机变量 q i q_i qi k i k_i ki 独立同分布,简化了分析过程,使得可以基于相同的分布特性对所有变量进行统一处理。

二、选择除以 d k \sqrt{d_k} dk 的原因

1. 稳定方差

在自注意力机制中,计算注意力分数时涉及查询(Query)向量与键(Key)向量的点积。假设Query向量 Q Q Q和Key向量 K K K的元素是独立同分布的随机变量,均值为0,方差为1(实际模型参数随机初始化时接近此假设)。对于长度为 d k d_k dk的向量 Q = ( q 1 , q 2 , ⋯   , q d k ) Q=(q_1,q_2,\cdots,q_{d_k}) Q=(q1,q2,,qdk) K = ( k 1 , k 2 , ⋯   , k d k ) K=(k_1,k_2,\cdots,k_{d_k}) K=(k1,k2,,kdk),它们的点积 S = ∑ i = 1 d k q i k i S = \sum_{i = 1}^{d_k}q_ik_i S=i=1dkqiki

根据方差性质, V a r ( S ) = ∑ i = 1 d k V a r ( q i k i ) Var(S)=\sum_{i = 1}^{d_k}Var(q_ik_i) Var(S)=i=1dkVar(qiki)由于 q i q_i qi k i k_i ki相互独立, V a r ( q i k i ) = E [ q i 2 ] E [ k i 2 ] − ( E [ q i ] E [ q i ] ) 2 Var(q_ik_i)=E[q_i^2]E[k_i^2]-(E[q_i]E[q_i])^2 Var(qiki)=E[qi2]E[ki2](E[qi]E[qi])2已知 E [ q i ] = E [ k i ] = 0 E[q_i]=E[k_i]=0 E[qi]=E[ki]=0 V a r ( q i ) = V a r ( k i ) = 1 Var(q_i)=Var(k_i)=1 Var(qi)=Var(ki)=1,则 E [ q i 2 ] = E [ k i 2 ] = 1 E[q_i^2]=E[k_i^2]=1 E[qi2]=E[ki2]=1,所以 V a r ( q i k i ) = 1 Var(q_ik_i)=1 Var(qiki)=1,进而 V a r ( S ) = d k Var(S)=d_k Var(S)=dk

这表明点积 S S S的方差随维度 d k d_k dk增大而线性增大。为使点积结果方差稳定,除以 d k \sqrt{d_k} dk ,即新变量 S ′ = S d k S'=\frac{S}{\sqrt{d_k}} S=dk S的方差 V a r ( S ′ ) = 1 d k V a r ( S ) = 1 Var(S') = \frac{1}{d_k}Var(S)=1 Var(S)=dk1Var(S)=1稳定的方差有助于后续Softmax函数输入处于合理范围,避免其输出概率分布过于极端,保证模型训练稳定性。

2. 平衡维度影响

除以 d k \sqrt{d_k} dk 可视为一种归一化操作,有助于平衡不同维度特征在注意力计算中的贡献。若不进行此缩放,高维度向量在点积运算中可能占据主导,使模型过度关注某些维度信息,忽略其他维度。通过除以 d k \sqrt{d_k} dk ,不同维度影响更均衡,模型能全面考虑序列元素关系。

三、 d k \sqrt{d_k} dk 的来源推导

如前文所述,基于随机向量点积方差分析。设 Q Q Q K K K向量元素为独立同分布随机变量,均值为0,方差为1。点积 S = ∑ i = 1 d k q i k i S = \sum_{i = 1}^{d_k}q_ik_i S=i=1dkqiki,其方差 V a r ( S ) = d k Var(S)=d_k Var(S)=dk

为将点积结果方差稳定在1附近,需对其归一化。自然的想法是除以与方差相关量,即除以 V a r ( S ) \sqrt{Var(S)} Var(S) ,也就是 d k \sqrt{d_k} dk 。这样处理后,点积结果的方差得以稳定,为后续Softmax函数提供合适输入。

四、不恰当缩放的后果

1. 不除以 d k \sqrt{d_k} dk

若不除以 d k \sqrt{d_k} dk ,随着 d k d_k dk增大,点积结果方差增大。输入到Softmax函数的数值方差过大,会使Softmax输出概率分布极其不均匀,大部分概率集中在少数较大数值对应元素上。

在反向传播中,这种不均匀分布导致梯度问题。一方面,概率接近0的元素对应梯度极小,在反向传播中对梯度贡献可忽略不计,多个此类元素累积使得梯度消失,模型参数更新缓慢甚至停滞。另一方面,概率接近1的元素对应梯度可能极大,在反向传播中累积导致梯度爆炸,使模型参数更新幅度过大,无法收敛。

2. 除以结果大于 d k \sqrt{d_k} dk

若除以大于 d k \sqrt{d_k} dk 的值,如 α d k \alpha\sqrt{d_k} αdk α > 1 \alpha > 1 α>1),会过度缩放点积结果。这使得Softmax函数输入数值范围变小,输出概率分布相对均匀,各元素概率差异不明显。

在这种情况下,模型难以区分不同元素重要性,无法有效捕捉序列中关键信息,导致模型性能下降。因为自注意力机制依赖概率分布差异来聚焦重要信息,过于均匀分布削弱了这种聚焦能力。

3. 除以结果小于 d k \sqrt{d_k} dk

若除以小于 d k \sqrt{d_k} dk 的值,如 β d k \beta\sqrt{d_k} βdk 0 < β < 1 0 < \beta < 1 0<β<1),点积结果缩放不足,方差仍较大。Softmax函数输入数值方差大,输出概率分布仍会过度集中,类似不除以 d k \sqrt{d_k} dk 的情况,导致梯度消失或爆炸问题,阻碍模型正常训练。

五、结论

在Transformer自注意力机制中,除以 d k \sqrt{d_k} dk 是经过精心设计的关键操作。它源于对随机向量点积方差的理论分析,旨在稳定方差、平衡维度影响。不恰当的缩放,无论是不除以 d k \sqrt{d_k} dk ,还是除以结果偏离 d k \sqrt{d_k} dk ,都会因Softmax函数特性引发梯度问题或信息捕捉能力下降,严重影响模型性能。理解这一操作的原理和影响,对于深入理解Transformer架构及优化相关模型具有重要意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/954022.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 selenium-webdriver 开发 Web 自动 UI 测试程序

优缺点 优点 有时候有可能一个改动导致其他的地方的功能失去效果&#xff0c;这样使用 Web 自动 UI 测试程序可以快速的检查并定位问题&#xff0c;节省大量的人工验证时间 缺点 增加了维护成本&#xff0c;如果功能更新过快或者技术更新过快&#xff0c;维护成本也会随之提高…

【Redis】初识分布式系统

目录 单机架构 分布式系统 应用数据分离架构 应用服务集群架构 读写分离/主从分离架构 冷热分离架构 垂直分库 微服务架构 分布式名词概念 本篇博文&#xff0c;将根据分布式系统的演进一步一步介绍每一种架构的形式&#xff0c;最后为大家总结了一些分布式中常用的…

微服务之松耦合

参考&#xff1a;https://microservices.io/post/architecture/2023/03/28/microservice-architecture-essentials-loose-coupling.html There’s actually two different types of coupling: runtime coupling - influences availability design-time coupling - influences…

pytest+request+yaml+allure搭建低编码调试门槛的接口自动化框架

接口自动化非常简单&#xff0c;大致分为以下几步&#xff1a; 准备入参调用接口拿到2中response&#xff0c;继续组装入参&#xff0c;调用下一个接口重复步骤3校验结果是否符合预期 一个优秀接口自动化框架的特点&#xff1a; 【编码门槛低】&#xff0c;又【能让新手学到…

基于Springboot + vue实现的文档管理系统

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

Pycharm连接远程解释器

这里写目录标题 0 前言1 给项目添加解释器2 通过SSH连接3 找到远程服务器的torch环境所对应的python路径&#xff0c;并设置同步映射&#xff08;1&#xff09;配置服务器的系统环境&#xff08;2&#xff09;配置服务器的conda环境 4 进入到程序入口&#xff08;main.py&#…

初学stm32 --- II2C_AT24C02,向EEPROM中读写数据

目录 IIC总线协议介绍 IIC总线结构图 IIC协议时序 1. ACK&#xff08;Acknowledge&#xff09; 2. NACK&#xff08;Not Acknowledge&#xff09; IO口模拟II2C协议 发送起始信号&#xff1a; 发送停止信号&#xff1a; 检测应答信号&#xff1a; 发送应答信号&#x…

Excel 技巧07 - 如何计算到两个日期之间的工作日数?(★)如何排除节假日计算两个日期之间的工作日数?

本文讲了如何在Excel中计算两个日期之间的工作日数&#xff0c;以及如何排除节假日计算两个日期之间的工作日数。 1&#xff0c;如何计算到两个日期之间的工作日数&#xff1f; 其实就是利用 NETWORKDAYS.INTL 函数 - weekend: 1 - 星期六&#xff0c;星期日 2&#xff0c;如…

保姆级图文详解:Linux和Docker常用终端命令

文章目录 前言1、Docker 常用命令1.1、镜像管理1.2、容器管理1.3、网络管理1.4、数据卷管理1.5、监控和性能管理 2、Linux 常用命令分类2.1、文件和目录管理2.2、用户管理2.3、系统监控和性能2.4、软件包管理2.5、网络管理 前言 亲爱的家人们&#xff0c;技术图文创作很不容易…

从玩具到工业控制--51单片机的跨界传奇【2】

咱们在上一篇博客里面讲解了什么是单片机《单片机入门》&#xff0c;让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识&#xff0c;顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话&#xff0c;可以看看博主的C语言专栏哟&#xff…

智能物流升级利器——SAIL-RK3576核心板AI边缘计算网关设计方案(一)

近年来&#xff0c;随着物流行业智能化和自动化水平不断提升&#xff0c;数据的实时处理与智能决策成为推动物流运输、仓储管理和配送优化的重要手段。传统的集中式云平台虽然具备强大计算能力&#xff0c;但高延迟和带宽限制往往制约了物流现场的即时响应。为此&#xff0c;我…

HTML拖拽功能(纯html5+JS实现)

1、HTML拖拽--单元行拖动 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><…

Jaeger UI使用、采集应用API排除特定路径

Jaeger使用 注&#xff1a; Jaeger服务端版本为&#xff1a;jaegertracing/all-in-one-1.6.0 OpenTracing版本为&#xff1a;0.33.0&#xff0c;最后一个版本&#xff0c;停留在May 06, 2019。最好升级到OpenTelemetry。 Jaeger客户端版本为&#xff1a;jaeger-client-1.3.2。…

【MySQL】简单解析一条SQL查询语句的执行过程

1. MySQL 的逻辑架构图 MySQL 架构主要分为 Server 层和存储引擎层。Server 层集成了连接器、查询缓存、分析器、优化器和执行器等核心组件&#xff0c;负责提供诸如日期、时间、数学和加密等内置函数&#xff0c;以及实现存储过程、触发器、视图等跨存储引擎的功能。存储引擎层…

如何将json字符串格式化

文章目录 如何对json字符串进行格式化显示hutool方案的示例和不足使用fastjson的方案 如何对json字符串进行格式化显示 将json字符串内容进行格式化的输出显示。本文介绍 hutool的方案和alibaba 的fastjson方案 hutool方案的示例和不足 引入依赖 <dependency><grou…

复杂 C++ 项目堆栈保留以及 eBPF 性能分析

在构建和维护复杂的 C 项目时&#xff0c;性能优化和内存管理是至关重要的。当我们面对性能瓶颈或内存泄露时&#xff0c;可以使用eBPF&#xff08;Extended Berkeley Packet Filter&#xff09;和 BCC&#xff08;BPF Compiler Collection&#xff09;工具来分析。如我们在Red…

unity学习18:unity里的 Debug.Log相关

目录 1 unity里的 Debug.log相关 2 用Debug.DrawLine 和 Debug.DrawRay画线 2.1 画线 1 unity里的 Debug.log相关 除了常用的 Debug.Log&#xff0c;还有另外2个 Debug.Log("Debug.Log"); Debug.LogWarning("Debug.LogWarning"); Debug.LogErro…

IoTDB 常见问题 QA 第三期

关于 IoTDB 的 Q & A IoTDB Q&A 第三期持续更新&#xff01;我们将定期汇总我们将定期汇总社区讨论频繁的问题&#xff0c;并展开进行详细回答&#xff0c;通过积累常见问题“小百科”&#xff0c;方便大家使用 IoTDB。 Q1&#xff1a;查询最新值 & null 数据相加方…

MySQL数据库(SQL分类)

SQL分类 分类全称解释DDLData Definition Language数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库&#xff0c;表&#xff0c;字段&#xff09;DMLData Manipulation Language数据操作语言&#xff0c;用来对数据库表中的数据进行增删改DQLData Query Languag…

Swift 趣味开发:查找拼音首字母全部相同的 4 字成语(上)

概述 Swift 语言是一门现代化、安全、强大且还算性感的语言。在去年 WWDC 24 中苹果正式推出了秃头码农们期待许久的 Swift 6.0&#xff0c;它进一步完善了 Swift 语言的语法和语义&#xff0c;并再接再厉——强化了现代化并发模型的安全性和灵活性。 这里我们不妨用 Swift 来…