🧩 Transformer 核心组件
从零手写实现 · 30 章完整目录
✨ 注意力机制 🧠 手写代码 📐 从零搭建
📘
01Transformer总览
从RNN到Transformer的演进 · 核心思想(注意力机制) · 整体架构图 · 应用场景概览
02环境与工具准备
Python环境配置 · PyTorch安装 · Jupyter Notebook设置 · 项目结构规划
03文本预处理基础
分词(Tokenizer) · 构建词表(Vocabulary) · 将文本转为ID序列
04词嵌入 Word Embedding
从One-hot到Embedding · PyTorch nn.Embedding实现 · 可训练参数的含义
05位置编码 Positional Encoding
为什么需要位置信息 · Sinusoidal位置编码公式推导 · 代码实现与可视化
06自注意力机制原理
Query, Key, Value的概念 · 注意力分数计算 (Scaled Dot-Product) · Softmax归一化
07自注意力手写实现
从零实现注意力分数矩阵 · 加权求和 · 验证与PyTorch原生API对比
08多头注意力原理
为什么需要多头 · 头的拆分与合并 · 参数量分析
09多头注意力手写实现
多头拆分逻辑 · 并行计算实现 · 与单头注意力的效果对比
10掩码注意力 Masked Attention
Padding Mask(填充掩码) · Sequence Mask(因果掩码) · 在Decoder中的应用
11掩码注意力手写实现
生成上三角掩码矩阵 · 将掩码应用到Softmax之前 · 处理负无穷的技巧
12残差连接 & 层归一化
为什么需要残差连接 · LayerNorm与BatchNorm的区别 · 代码实现
13前馈神经网络 FFN
FFN的结构(线性层+激活函数+线性层) · ReLU与GELU · 代码实现
14Encoder层组装
将Attention, FFN, 残差连接, LayerNorm组合成一个完整的Encoder Layer
15Encoder 实现
堆叠多个Encoder Layer · 参数初始化策略 · 前向传播逻辑
16Decoder层组装
Masked Multi-Head Attention · Cross-Attention · FFN · 残差连接与LayerNorm
17Cross-Attention 详解
Query来自Decoder · Key和Value来自Encoder · 信息交互的桥梁
18Decoder 实现
堆叠多个Decoder Layer · 处理Encoder输出的Key/Value · 自回归生成逻辑
19输出层与损失函数
线性投影层 · Softmax与概率分布 · 交叉熵损失函数 (Cross-Entropy Loss)
20完整Transformer组装
将Encoder, Decoder, 输出层组合成完整Transformer类 · 前向传播流程梳理
21训练数据准备
构建平行语料库(中-英翻译示例) · DataLoader与批处理 · 动态Padding
22训练循环实现
优化器选择 (Adam) · 学习率调度 (Noam Scheduler) · 梯度裁剪 (Gradient Clipping)
23推理与解码策略
贪心解码 (Greedy) · 束搜索 (Beam Search) 原理 · 温度参数 (Temperature) 采样
24束搜索手写实现
维护候选序列 · 评分函数(对数概率) · 终止条件与最终选择
25模型评估指标
困惑度 (Perplexity) · BLEU分数原理 · 简单实现BLEU计算
26模型保存与加载
torch.save与torch.load · 保存最佳模型 · 断点续训
27可视化注意力权重
提取注意力矩阵 · Matplotlib/Heatmap绘制注意力图 · 分析模型关注点
28模型优化与调试
常见训练问题(梯度消失/爆炸、过拟合) · 调试技巧 · 超参数调优建议
29扩展与变体介绍
Transformer-XL (长序列) · BERT (双向编码器) · GPT (自回归解码器) · ViT (视觉Transformer)
30项目总结与展望
回顾手写Transformer完整流程 · 未来学习路径(大模型、多模态) · 推荐资源与论文