Transformer 个人学习笔记与详细教程——多头自注意力机制(Multi-Head Self-Attention)

多头自注意力机制 (Multi-Head Self-Attention)

为什么要使用多头注意力?

在基础的自注意力机制中,我们通常使用 单个注意力头(single head)来对整个序列进行建模。这种方式存在一定的局限性:

  • 单一视角建模:每个位置的表示只能从一个角度去理解上下文信息,可能忽略了其他维度的联系;

  • 难以捕捉复杂关系:语言中包含多层次的信息,比如语法结构、语义关联、位置依赖等,而单头注意力难以同时有效建模这些不同层面的关系。

这与词向量编码中的一个基本思想类似:我们希望从多个角度去理解和表示一个词或序列的信息。因此,引入多头注意力的机制,使得模型能够并行地从多个子空间对信息进行建模和关注,有效提升了模型对上下文的理解能力。

多头注意力机制的数学表达

在这里插入图片描述

  1. 输入矩阵:给定一个矩阵 X ∈ R n × d X \in \mathbb{R}^{n \times d} XRn×d

  2. 设置注意力头数量 h h h:我们将注意力机制拆分为 h h h 个并行的头(head),每个头能学习不同的表示子空间。

  3. 每个头的维度:为了保证拼接后的维度与输入保持一致,设每个头的表示维度为 d k = d / h d_k = d / h dk=d/h,注意: h h h 必须能整除 d d d

  4. 线性变换生成 Q , K , V Q, K, V Q,K,V 矩阵:对输入 X X X 分别乘以不同的参数矩阵(共享 X X X,但线性层不共享),得到 h h h Q i ​ = X W i Q ​ , K i ​ = X W i K ​ , V i ​ = X W i V ​ Q_i​=XW_i^Q​,K_i​=XW_i^K​,V_i​=XW_i^V​ Qi=XWiQ,Ki=XWiK,Vi=XWiV,其中 i = 1 , 2 , … , h i=1,2,…,h i=1,2,,h,每组 Q i , K i , V i ∈ R n × d k Q_i, K_i, V_i \in \mathbb{R}^{n \times d_k} Qi,Ki,ViRn×dk

  5. 每个头分别计算注意力
    h e a d i = A t t e n t i o n ( Q i , K i , V i ) = s o f t m a x ( Q K T d k ) head_{i} = Attention(Q_i, K_i, V_i) = softmax(\frac{QK^T}{\sqrt{d_k}}) headi=Attention(Qi,Ki,Vi)=softmax(dk QKT)

  6. 拼接所有注意力头的输出:将每个头的输出拼接在一起,得到维度为
    C o n c a t ( h e a d 1 , h e a d 2 , … , h e a d h ) ∈ R n × ( h × d ) Concat(head_{1},head_{2},\dots,head_{h}) \in \mathbb{R}^{n \times (h\times d)} Concat(head1,head2,,headh)Rn×(h×d)

  7. 输出线性变换:拼接结果通常再经过一个线性变换,使得输出维度与输入保持一致:将维度从 n × ( h × d ) n \times (h\times d) n×(h×d) 变为原来的 n × d n \times d n×d

M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , h e a d 2 , … , h e a d h ) W O MultiHead(Q,K,V) = Concat(head_{1},head_{2},\dots,head_{h})W^O MultiHead(Q,K,V)=Concat(head1,head2,,headh)WO

多头注意力机制通过将注意力计算拆分为多个并行的子空间,使模型能够从不同的角度和层次理解序列中各位置之间的关系。每个头专注于捕捉某种类型的特征(如语义关联、句法结构或位置依赖),拼接后统一映射回原始空间,从而提升了模型表达能力和对上下文的理解深度。相比单头注意力,多头注意力在处理复杂语言结构和长距离依赖时表现更为出色,但是会有更大的计算量。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值