GPT-0: Attention+Transformer+可视化

本文介绍GPT组件: Attention+Transformer,及其可视化

原文 《Visualizing Attention in Transformer-Based Language Representation Models》, 2019

1.Attention原文

原文核心就1个公式和2个图

1.1 公式

1.2 多头注意力

图2展示attention的计算方法,即点积,输出标量,即注意力值(得分)

以及多头注意力的结构:

1.3 Transformer结构

图1以自编码器(auto-encoder)的方式展示Transformer结构。

左边是解码器(decoder),右边是编码器(encoder)。

当前大模型更多不用自编码器,仅用解码器部分(decoder-only)

另外Feed-Forward Network (FFN)通常是普通的全链接网络:线性层+激活函数

2.Attention可视化

层级 学到的主要信息 注意力特征
低层(1--4) 表层语言特征:字形、位置、词序 强位置依赖,捕捉局部顺序关系
中层(5--8) 句法结构、词类依赖(POS patterns) 出现明确句法或搭配规律,如介词↔宾语
高层(9--12) 语义与实体层次规律 关注跨词组或概念性关联(缩写、命名实体等)

2.1 图1-多头注意力可视化(GPT-2 Attention Head View)

Attention 可视化是解释大模型内部机制的关键手段。

图1展示GPT2的 多头注意力(attention heads)在文本处理时"注意力"关系的内部工作方式

图1输入的文本是:"The quick, brown fox jumps over the lazy",模型还未看到"dog"这个词(它只看到到 lazy)。

图1 内容 含义
左图 第四层橘色head 注意力分布 显示此 head 学到的语法/语义依赖
中图 第一层蓝色head 注意力分布 显示此 head 学到的语法/语义依赖
右图 中图同一个 head, 但选定"lazy"词 展示形容词-名词修饰关系
  • 每一个不同颜色小格区分不同的 attention head。

  • 线条粗细表示注意力强度(score 大→粗/深)。

  • 左侧(横轴)表示 token在看谁(query),右侧 (纵轴)是关注的目标词(key)。

    总结

    • 每个 head 学习一种"关系模式"或"依赖模式"
    • 有的 head 专注于 句法结构(如主语-动词配对);
    • 有的 head 专注于 语义一致性(如形容词-名词);
    • 有的 head 专注于 上下文衔接(如句首与句尾联系)。

2.1.1 左图(Left Figure)

第4层 橘色 attention head 注意力可视化。

例如,第 5 个 token(例如 "jumps")时,模型对 "fox" 有很高的注意力权重,就说明这个 head 认为"jumps"应该参考"fox"的信息。

2.1.2 中图(Center Figure)

第一层蓝色 attention head 的注意力可视化。

例如:

  • "fox" → "brown" 可能线条较粗,表示该 head 把"fox"的意义与"brown"联系起来。
  • "lazy" → "the" 可能线条较细或无连接。

2.1.3 右图(Right Figure)

与中图相同的层 / head,但固定选中了 token "lazy"。

展示该 head 在处理"lazy"这个词时,注意力主要集中在什么地方。

可以观察到,"lazy"这个词会强烈地指向 "the"(定冠词),表明模型学会了 形容词-名词短语(adjective phrase) 的语法结构规律。

即"形容词通常修饰紧随其后的名词"。

不同层的 heads 学到不同层次的信息:

  • 底层 head 更多是局部依赖(如词法、短距离语法);
  • 高层 head 更多是全局语义(如句意、上下文衔接)。
  • 每个 head 形成了特定的功能化角色(functional specialization);

2.2 图2 BERT 的 Attention Head View

输入:Sentence A: "The cat sat on the mat." ;Sentence B: "The cat lay on the rug."

BERT 的encoder-only 可以同时看前后文(双向 attention),处理句子对任务。

部分 内容 说明
左图 第0层蓝色 head 表现 句内 attention pattern:比如"cat"→"the",或"sat"→"cat",代表句法结构内部关系。
中图 第十层蓝色head 表现 句间 attention pattern:部分词(如"cat")在 Sentence A 与 Sentence B 中建立语义对齐关系,表示模型识别出两个句子的语义相似性。
右图 相同的层/head,但开启 "Sentence A → Sentence B filter" 只显示 Sentence A 中词对 Sentence B 中词的注意力连接,清晰地看到跨句对齐关系(例如"cat"↔"cat","mat"↔"rug")。

总结

  • Head 的"独立性":各 head 参数独立,因此能学习互补模式(句法、词汇、对齐、语义等)。
  • 功能特化:有的 head 学到 punctuation、named entity、subject-verb pair 等特定语言规律。
对比项 GPT-2 (Fig. 1) BERT (Fig. 2)
架构 Decoder-only Encoder-only
Attention方向 单向(仅看前文) 双向(看前后文)
输入 单句文本 句对输入
Head功能 顺序预测、局部依赖 句内关系、句间语义对齐
可视化过滤 可按词过滤 可按词或句对过滤

2.3 图3 词汇模式-lexical pattern

"Lexical" 在语言学中指与具体单词(word forms)及其用法相关的语言现象。

不同于 "syntactic pattern(句法模式)" 那种抽象的结构规则(如主谓宾顺序),

lexical pattern 关注:

  • 词与词之间的具体搭配;
  • 某类词(如介词、缩略词、专有名词)的行为规律;
  • 词形或词汇层面的相似性。

Transformer 的注意力机制不只是机械地关注相邻词,而是能自动学习到:

  • 某些词是列表的一部分;
  • 某些词有语义配对;
  • 某些符号(如括号、引号)标记结构边界。

Figure 3 通过选取第 3、8、10 层的注意力头,展示了 GPT-2 如何在不同网络深度逐步从局部词汇依附 → 结构化列表关系 → 语义映射。

这些层级差异正是"lexical patterns"跨层演化的体现,也说明 Transformer 内部具备某种语言结构的自组织分化。

具体层数/Head的注意力如下:

  • 空注意力

右图中,常看到许多线指向句子第一个 token。 即模型在没有强注意力目标时,会默认分配一点权重给起始 token(即"空注意力")。

因此,指向第一个词的注意力常被视为 "null attention",不代表真实语言依赖。

  • 总结
层号 模式类型 说明 所处语言层次
左图 Layer 8 List items pattern(列表项模式) 模型在中层学会识别文本中带有序列结构的规律(如分号或编号项),表明这一层的 head 能抓到"局部语法+格式"特征。 中层结构级特征
中图 Layer 3 Prepositions(介词模式) 第 3 层相对较浅,注意力集中于局部词组(介词→宾语),属于典型的词类依附关系。 低层词汇句法特征
右图 Layer 10 Acronyms(缩略词模式) 第 10 层较高,模型注意力跨越较大范围,将"NASA"与"National Aeronautics and Space Administration"等词关联,代表了语义层或命名层级的映射。 高层语义特征

2.4 图4 指代消解 (coreference resolution)

在第五层, 指代消解 对 she和he在性别,名字,职业的注意力

2.5 图5 概览层与头的分布

输入 The quick, brown fox jumps over the lazy

这里包括0-5层的layers和heads(还有6-11的layers与heads)

  • 行(rows) → 不同的 Transformer 层(layer)
  • 列(columns) → 每层中的不同 注意力头(head)
  • 每个格子(thumbnail) → 一个小型的注意力模式图,显示该 head 的总体"形状"或"倾向"
  • 初始层(Layer 0--2)
    主要是 位置驱动(position-based)模式
    • Layer 0, Head 1:注意力集中在同一个 token(自我注意 self token)
    • Layer 2, Head 2:每个词主要关注前一个词(previous token)

这说明潜层的注意力更偏向 句法结构与序列依赖(syntax/position patterns),

例如语言的顺序规则(如"形容词→名词"、"主语→谓语")。

  • 中层(Layer 3-5)

    模式更多样化、语义化(虽然部分层在图中未展示),attention heads 开始关注:

    • 主谓搭配(subject--verb)
    • 语义相似词
    • 段落主语、上下文主干等更高级语义关系
      这些往往对应模型理解上下文与语义一致性的能力。
  • 现象提示:

    1. 某些注意力头可能是在特定语境下才激活(例如需要特定语义结构时)。
    2. 当输入文本没有触发该语义模式时,head 就"闲置",其注意力退化成"全指向第一个 token"。

因此作者提出,或许模型可以显式设计一个 "null token" 或 "padding attention sink",专门接收这种"空注意力(null attention)"。

这样做的潜在好处:

  • 提高模型可解释性(区分真实语义关注 vs 空关注)
  • 结构更清晰(减少混淆第一个词与空注意力)
    不过这是个可解释性优化的启示,不一定带来性能收益。

2.6 图6 神经元(Neuron View )

这是Transformer 中"Query--Key--Dot Product--Softmax"的全过程。

GPT-2 的多头注意力机制参数如下:

参数 含义 维度(GPT-2 small) 备注
( d_{\text{model}} ) Transformer 层的隐藏维度 768 每个 token 的向量表示长度
( h ) 注意力头数量 12 多头并行计算
( d_k = d_v ) 每个 head 的维度 64 ( 768 / 12 = 64 )

在每一层的 self-attention 中:

  • Query, Key, Value 都是 [sequence_len,64](针对单个 head)
  • 多个 head 拼接后回到 [sequence_len,768]

Neuron View 展示第8层第6Head 的 q/k/v(每个 64 维),在一个 attention head 内部的细节。

选中一个 token (这里是最后一个标点)的 Query (64) → 与每个 token 的 Key (64) 逐元素相乘 → 求点积 → Softmax 得到注意力分布:

蓝=正值,橙=负值;代表该 token 的"关注特征"方向 |

  • 数据视角
阶段 张量维度 说明
输入嵌入 ( X ) [8, 768] 每个词是一个 768 维向量
线性映射到 Q, K, V [8, 12, 64] 每个 head 拿到自己的一份 64 维表示
选中一个 head [8, 64] 只看单个 head
Query = 当前 token [64] 选中的 token
Key = 所有 token [8, 64] 所有 token 的 keys
q · kᵗ → scores [8] 每个 token 的注意力打分
Softmax(scores) [8] 归一化权重
加权求和 ( \sum \alpha_i v_i ) [64] 输出该 head 的结果向量
  • 计算视角
视图列 数学表达式 维度 含义
① Query q ( q_i = x_i W_Q ) [64] 当前选中 token(例如 ",")的 query 向量
② Key k ( k_j = x_j W_K ) [64] per token 序列中每个 token 的 key 向量
③ q ⊙ k element-wise product [64] q 与 k 的逐元素乘积(每个 neuron 的匹配贡献)
④ q·k ( \sum_{m=1}^{64} q_m k_m ) scalar per token q ⊙ k 的求和,得到未缩放打分
⑤ Softmax ( \text{softmax}\big(\frac{q·k}{\sqrt{64}}\big) ) [sequence_len] 归一化注意力权重(最终各 token 被关注程度-总注意力打分)
⑥ (隐含的) Value v ( v_j = x_j W_V ) [64] per token 注意力加权后用于生成输出的值向量(在图中未展示)

2.7 图7 距离与注意力

图7中蓝色箭头指出一些神经元的注意力值(以last token 为例):

规律如下:

  • 离last token 越远,q⊙k 的值越低;在可视化中表现为:颜色逐渐变深橙或浅蓝;说明这个头编码了"距离衰减"的机制。

  • 所有的 query 向量几乎一样(除了第一个 token)。说明这个头的注意力对 输入文本内容(词义)几乎不敏感。

  • 这个头的计算分布值,体现出其不关心单词意义,它对各个token的注意力值仅关注其相对位置。

Ref

相关推荐
兔兔爱学习兔兔爱学习9 小时前
浏览器端实时语音采集 + WebSocket 传输 + 后端 Whisper + GPT 翻译 + 实时字幕返回
gpt·websocket·whisper
长颈鹿仙女10 小时前
发送 Prompt 指令:请用一句话总结文本内容
python·深度学习·大模型
文火冰糖的硅基工坊10 小时前
[人工智能-大模型-117]:模型层 - 用通俗易懂的语言,阐述循环神经网络的结构
人工智能·rnn·深度学习
盼小辉丶11 小时前
Double DQN(DDQN)详解与实现
深度学习·keras·强化学习
Francek Chen13 小时前
【自然语言处理】预训练02:近似训练
人工智能·pytorch·深度学习·自然语言处理
碧海银沙音频科技研究院14 小时前
i2s封装成自己定义8路音频数据发送方法
arm开发·人工智能·深度学习·算法·音视频
java1234_小锋15 小时前
PyTorch2 Python深度学习 - 数据集与数据加载
开发语言·python·深度学习·pytorch2
兔兔爱学习兔兔爱学习15 小时前
一个可本地运行的实时字幕翻译 Demo(Whisper + GPT + Streamlit),可以边说边出中英文字幕
gpt·whisper
文火冰糖的硅基工坊17 小时前
[人工智能-大模型-118]:模型层 - RNN状态记忆是如何实现的?是通过带权重的神经元,还是通过张量?
人工智能·rnn·深度学习