# 01 · Transformer 原理与整体结构 > 学习笔记 01/05 · by 小小叶 🍃 --- ## 一、Transformer 到底解决了什么问题? 在它之前,处理序列(句子、时间序列)主流是 **RNN / LSTM**——一个字一个字**顺序**读,像你逐字读句子。 ### RNN 的两个致命伤 1. **不能并行**:必须读完第 1 个才能读第 2 个 → 训练慢 2. **长距离遗忘**:句子很长时,开头信息传到结尾就稀释没了(梯度消失) ### Transformer 的破局点(2017《Attention is All You Need》) > 干脆不要顺序读了,**一次性看到所有位置,让每个位置自己决定该"关注"谁。** 这就引出核心——**注意力机制(Attention)**。 --- ## 二、整体结构:Encoder + Decoder Transformer 用于"中译英"翻译时的整体结构: ``` 输入(我有一只猫) → [Encoder × 6] → 编码信息矩阵 C │ 输出( I have...) → [Decoder × 6] ← C → Softmax → 预测下一个词 ``` - **Encoder(编码器)**:由 6 个相同的 block 堆叠,负责"读懂"输入 - **Decoder(解码器)**:由 6 个相同的 block 堆叠,负责"生成"输出 - 每个 Encoder block 输出的矩阵维度与输入**完全一致**(方便堆叠) ### 工作流程三步走 1. **第一步**:把输入每个词转成表示向量 X = 词Embedding + 位置Embedding 2. **第二步**:X 经过 6 个 Encoder block → 得到编码信息矩阵 **C** 3. **第三步**:C 送入 Decoder,Decoder 根据已翻译的词 1~i,预测第 i+1 个词 (翻译时用 **Mask** 遮住 i+1 之后的词,防止偷看) --- ## 三、一个 Encoder Block 里有什么? ``` 输入 X │ ▼ ┌──────────────────────┐ │ Multi-Head Attention │ ← 核心:多头自注意力 └──────────────────────┘ │ ▼ ┌──────────────────────┐ │ Add & Norm │ ← 残差连接 + 层归一化 └──────────────────────┘ │ ▼ ┌──────────────────────┐ │ Feed Forward │ ← 两层全连接(ReLU) └──────────────────────┘ │ ▼ ┌──────────────────────┐ │ Add & Norm │ └──────────────────────┘ │ ▼ 输出(维度同 X) ``` ### Add & Norm 详解 - **Add(残差连接)**:`X + SubLayer(X)`,借鉴 ResNet,防止深层网络退化,让网络只关注"差异部分" - **Norm(Layer Normalization)**:把每层神经元输入归一化成均值方差一致,加快收敛 ### Feed Forward - 就是一个两层全连接:`Linear → ReLU → Linear` - 输入输出维度一致 --- ## 四、一个 Decoder Block 的区别 Decoder block 与 Encoder 相似,但有 **3 个关键区别**: 1. **包含两个 Multi-Head Attention 层** 2. **第一个**用了 **Masked** 操作(遮住未来的词,保证自回归) 3. **第二个**的 K、V 来自 **Encoder 的编码矩阵 C**,Q 来自上一个 Decoder block 的输出 → 这样 Decoder 每一步都能利用 Encoder 的全部信息 4. 最后接 **Softmax** 预测下一个词的概率 --- ## 五、本节小结 | 概念 | 一句话 | |---|---| | Transformer | 靠注意力一次看全局、可并行的序列模型 | | Encoder | 读懂输入,输出编码矩阵 C | | Decoder | 基于 C 自回归生成输出 | | Add & Norm | 残差防退化 + 归一化加速收敛 | | Feed Forward | 两层全连接做非线性变换 | > 📌 下一篇 `02_直观理解_加权平均.md`:把注意力机制的灵魂——"加权平均"讲透。