Skip to content

实验 07 · 注意力机制 — 缩放点积注意力与因果遮罩验证 ​

本实验手写现代大语言模型的心脏:自注意力(Self-Attention)与 Transformer Decoder Block。验证缩放点积注意力的三大核心性质:每行权重和为 1、因果遮罩绝不泄露未来信息、多头拆分再拼接等价无损。


网页即时交互实验一:因果注意力权重矩阵 ​

在自回归解码中,第 t 个词只能关注位置 ≤t 的历史词。通过在 Softmax 前注入因果遮罩(上三角赋 −∞),未来位置权重被严格归零:

Attention(Q,K,V)=softmax(QKTdk+M)V

滑动下方的 Query 位置 滑块,实时观察注意力权重的动态重分布与因果下三角特征:

交互:因果 Attention 权重

用玩具向量演示「当前 token 该看谁」。真实模型里 Q/K/V 是学出来的。

the
32.6%
cat
33.6%
sat
33.8%

完整权重矩阵(行=query,列=key)

the
cat
sat
the
1.0
cat
0.5
0.5
sat
0.3
0.3
0.3

网页即时交互实验二:Softmax 温度退火探索 ​

Softmax 将任意未归一化 logits 转换为概率分布。温度超参数 T(Temperature)控制了分布的尖锐程度:T→0 趋向于贪婪采样(只选最大值),T>1 使分布趋向均匀平缓:

交互:Softmax + Temperature

把 logits 看成「未归一化分数」。Temperature 越高分布越平,越低越尖。

tok0
8.5%
tok1
23.2%
tok2
5.2%
tok3
63.1%
Google Pro 云端实验

实验 07 · 多头因果自注意力 Colab 实验场

⚡推荐规格:Google Pro A100 / L4 GPU

多头张量矩阵运算推荐在 Colab Pro 切换至 A100/L4 GPU 体验极速吞吐

💡 运行提示:若本仓库为 GitHub 私有仓库,首次在 Colab 打开时请在弹出的对话框中点击「Authorize with GitHub」授权读取;或直接点击「⬇️ 下载 .ipynb」并在 Colab 中选择「上传笔记本」运行。
🐍

实验 07 · 因果自注意力与掩码

手写 QK^T 点积打分、因果上三角负无穷掩码与 Softmax 归一化
↗ 独立演练台
Python 3行 1, 列 129 行 · 696 字符
运行:⌘ / Ctrl + ↵
就绪 (点击运行)
点击右上角「▶ 运行」或按 ⌘/Ctrl+Enter 在浏览器端直接执行

交互实验指南 ​

  1. 观察因果矩阵:在注意力演示中将 Query 调到中间词,检查对应行的后几列是否严格为 0?
  2. 极温极端情况:在温度演示中将 T 调到极小,观察概率是否全部集中到最大 logit 上,体会 LLM 采样中 Temperature 参数的物理本质。

本地动手实验与单元测试 ​

在网页端获得直观认识后,回到本地运行你的单头/多头 Attention 与 pre-norm Transformer Block 实现:

bash
cd <仓库根目录>
source .venv/bin/activate
export PYTHONPATH="$PWD/python"

# 运行注意力机制与 Transformer 单元测试
pytest python/tests/test_attention.py -v

下一步 ​

→ 返回第8章正文查看完整实现细节与论文映射卡
→ 进入实验 08:TinyGPT 端到端自回归训练

私有学习站 · 原理从零构建 · 勿提交个人隐私或密钥