云计算百科
云计算领域专业知识百科平台

AI-大语言模型LLM-Transformer架构4-多头注意力、掩码注意力、交叉注意力

目的

为避免一学就会、一用就废,这里做下笔记

说明

  • 本文内容紧承前文-Transformer架构1-整体介绍、Transformer架构2-自注意力、Transformer架构3-嵌入和位置编码,欲渐进,请循序
  • 本文重点介绍Transformer架构中的多种注意力,它们在编码器堆栈和解码器堆栈中都有用到 在这里插入图片描述
  • 概述

    在前文Transformer架构2-自注意力中,讲到上图中的1号、2号注意力都是自注意力,而在详细架构图中,他们又被描述为多头注意力、掩码注意力等。诸多概念容易让人混淆,必须澄清:这些注意力的类型并非互斥,他们只是从不同的角度对注意力机制进行的分类

    • 按Q、K、V的不同来源分类:

      • 自注意力:Q、K、V来自同一个序列
      • 交叉注意力:Q、K、V来自不同的序列,上图3号编码器-解码器注意力是一种具体的交叉注意力,它的Q来自解码器(的输出序列),K、V来自编码器(的输出序列)
    • 按Q、K、V的数量分类

      • 多头注意力:将 Q、K、V 投影到多个子空间,并行计算多个注意力,然后拼接
      • 单头注意力:只有一个注意力头,即只有一组Q、K、V
    • 按信息可见性进行分类

      • 掩码注意力:通过掩码矩阵限制某些 token 对之间的注意力权重(通常设为 -∞),使其在 softmax 后接近 0。目的是控制信息流动,防止信息泄漏。架构图中,2号注意力是掩码注意力的一个子类-因果掩码注意力,它只能看到当前及之前的 token(因为解码器下一刻的输出还不知道)
      • 非掩码注意力:所有 token 对之间都可以自由计算注意力,无访问限制。如上图中1号和3号都是非掩码注意力

    按照上述说明,上图1-3号注意力详细分类如下:

  • 1号注意力,属于多头注意力、自注意力、非掩码注意力
  • 2号注意力,属于多头注意力、自注意力、掩码注意力
  • 3号注意力,属于多头注意力、交叉注意力、非掩码注意力
  • 多头注意力详解

    在这里插入图片描述

    什么是多头注意力

    从本质上看:多头注意力是一种将信息的表示空间进行分解的注意力。 它将一个标准的注意力过程分解为多个并行的"头",每个头在不同的表示子空间中学习不同的注意力模式,最后将所有头的输出拼接并线性变换。 从形式上看:多头注意力使用多组

    W

    Q

    W^Q

    WQ

    W

    K

    W^K

    WK

    W

    V

    W^V

    WV矩阵,标准单头注意力则仅使用一组。

    多头注意力的每个头是什么

    每个"头"本质上是一个独立的注意力计算单元,包含三个关键部分:

    1. 独立的参数投影Q、K、V

    2. 独立的注意力计算过程:

    head_i = Attention(head_i_Q, head_i_K, head_i_V)

    • 每个头在自己的子空间中计算注意力权重
    • 计算公式相同:

      s

      o

      f

      t

      m

      a

      x

      (

      Q

      K

      T

      /

      d

      k

      )

      V

      softmax(QKᵀ/√d_k)V

      softmax(QKT/√dk)V

    3. 独立的信息聚焦:

    不同的头可能会自发地学习关注不同类型的信息:

    • 头1:可能关注语法结构(如主谓关系)
    • 头2:可能关注语义角色(如施事、受事)
    • 头3:可能关注长距离依赖
    • 头4:可能关注局部短语结构

    示例(翻译任务:“The animal didn’t cross the street because it was too tired”):

    头1关注 "it" → "animal" (指代关系)
    头2关注 "didn't" → "cross" (否定修饰)
    头3关注 "cross" → "street" (动宾关系)
    头4关注 "tired" → "animal" (属性描述)

    多头注意力的优缺点

    方面优点缺点
    🎯 表示能力 1. 多视角学习:同时捕捉语法、语义、指代等多种关系2. 特征多样性:类似CNN多滤波器,提取不同模式特征3. 表达能力增强:超越单头注意力的表示上限 1. 冗余风险:多个头可能学习相似模式,造成参数浪费2. 协调困难:不同头之间需要良好配合,优化难度增加
    ⚡ 计算效率 1. 并行加速:多个头可完全并行计算,GPU利用率高2. 维度分解:单头维度降低(d_k = d_model/h),矩阵乘法更高效3. 复杂度优化:理论复杂度从 O(n²·d_model²) 降至 O(n²·d_model²/h) 1. 实际开销:拼接、投影、数据移动增加额外开销2. 内存消耗:需存储所有头的中间结果,内存占用显著增加3. 通信成本:分布式训练时,多头的梯度同步成本高
    🔄 模型性能 1. 泛化提升:类似集成学习效应,减少过拟合2. 收敛加速:多路径学习有助于梯度流动3. 鲁棒性增强:部分头失效时,其他头可补偿 1. 僵尸头问题:部分头学习不到有效模式,成为"死头"2. 不稳定训练:多头竞争可能导致训练波动3. 过参数化:小数据集上容易过拟合
    🔍 可解释性 1. 模式可视化:可分析不同头关注的语义/语法模式2. 调试友好:通过头分析定位模型问题3. 结构洞察:揭示模型学习到的语言学结构 1. 解读误导:注意力权重≠重要性,可能被过度解读2. 模式混合:实际中头常学习混合特征,边界模糊3. 分析复杂度:需要专门工具分析多头注意力模式
    🔧 工程实现 1. 模块化设计:结构清晰,易于实现和扩展2. 兼容性好:与各种优化技术(混合精度、梯度检查点)兼容3. 社区支持:主流框架均有优化实现 1. 实现复杂度:比单头注意力实现更复杂2. 批处理限制:不同头可能对批大小敏感3. 部署挑战:边缘设备上多头计算资源要求高
    📊 资源消耗 1. 计算分解:大矩阵分解为小矩阵,适合硬件优化2. 灵活配置:可根据资源调整头数 1. 参数量增加:增加约 (3h+1)/4 倍参数(相比单头)2. 激活值存储:前向传播需存储多头中间结果,内存峰值高3. 能耗增加:移动端/边缘设备能耗显著增加
    🎓 学习动态 1. 多目标优化:不同头可专注不同子任务2. 避免局部最优:多起点搜索提高找到全局最优概率 1. 优化冲突:不同头的梯度方向可能冲突2. 学习不平衡:某些头学习快,某些学习慢3. 超参数敏感:头数选择对性能影响大,需精细调参

    掩码注意力详解

    什么是掩码注意力

    掩码注意力是在注意力计算中,通过一个掩码矩阵强制让某些位置的注意力权重变为零(或接近零),从而限制信息流动方向的注意力机制。 下图分别呈现了1-3号注意力的权重关系特征,其中2号掩码自注意力中,每个token只能向前关注,无法向后关注,因为后面的token还没有生成。 在这里插入图片描述

    为什么用掩码注意力

    • 保证自回归性(因果掩码):防止解码时看到未来信息,确保逐词生成
    • 处理变长序列(填充掩码):忽略padding位置,聚焦有效内容
    • 预训练任务需求(随机掩码):如BERT的MLM任务,随机遮盖部分token
    • 提升计算效率(稀疏掩码):减少注意力计算量,处理长序列

    掩码自注意力怎么计算

    计算公式如下图: 在这里插入图片描述 掩码逻辑示意如下:

    在这里插入图片描述

    注意:之所以这里用

    -∞

    ,是因为后续softmax函数中的

    e

    x

    e^x

    ex,当x是

    -∞

    e

    x

    e^x

    ex趋近于0

    编解码注意力

    即传统的注意力机制,只是它的K和V来自于编码器的输出,Q来自于解码器自身之前的输出,传统注意力机制的说明,详见前文-注意力机制

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » AI-大语言模型LLM-Transformer架构4-多头注意力、掩码注意力、交叉注意力
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!