编码器是 Transformer 架构中负责理解输入序列的核心部分它的输出为解码器提供了丰富的语义表示。下面我将从设计目标开始深入解析编码器的每个组成部分。一、编码器的设计目标编码器的根本任务是将输入的序列如一个句子转换为一系列富含语义的向量表示这些表示要能够捕捉词语之间的上下文关系和全局依赖。打个比方如果说输入句子是我爱你编码器的工作就是理解我是动作的发出者爱是动作本身你是动作的接受者这三个词之间的紧密关系二、编码器的整体架构Transformer 的编码器不是单个模块而是由N 个完全相同的层堆叠而成原论文中 N6。这种堆叠设计让模型可以逐层提取越来越抽象的特征。每个编码器层都包含两个主要子层多头自注意力机制Multi-Head Self-Attention前馈神经网络Feed-Forward Network每个子层都配备了残差连接和层归一化。三、编码器核心组件详解1. 输入嵌入Input Embedding作用将离散的单词转换为连续的向量表示原理每个单词对应一个可训练的向量例如love被映射为 512 维的向量 [0.1, -0.3, 0.8, ...]特点相似的单词在向量空间中的距离更近2. 位置编码Positional Encoding为什么需要自注意力机制本身不考虑词序如果打乱句子顺序注意力计算结果完全一样原理使用正弦和余弦函数生成位置向量与词嵌入相加PE(pos, 2i) sin(pos/10000^(2i/d_model)) PE(pos, 2i1) cos(pos/10000^(2i/d_model))优势能够捕捉相对位置关系且可以外推到比训练时更长的序列3. 多头自注意力机制核心中的核心3.1 什么是自注意力Self-Attention自注意力允许序列中的每个位置关注序列中的所有位置包括自己。通俗理解想象你在阅读一句话每读到一个词你都会回顾整个句子思考当前词和其他词的关系。例如读到它时你会想它指的是什么。计算过程三要素QueryQ当前词的问题询问其他词与我的关系KeyK其他词的标签用来回答查询ValueV其他词的内容最终要提取的信息计算公式Attention(Q, K, V) softmax(QK^T / √d_k) V计算步骤Q 与所有 K 点乘得到注意力分数除以 √d_k 缩放防止梯度消失softmax 归一化得到注意力权重用权重对 V 加权求和3.2 多头机制Multi-Head为什么需要多个头单一注意力可能只关注一种关系但语言关系复杂多样。工作原理将 Q、K、V 分别线性投影到 h 个不同的子空间在每个子空间独立计算注意力将 h 个结果拼接再线性变换回原维度实际意义头1关注语法关系主谓宾头2关注指代关系代词指向的名词头3关注修饰关系形容词修饰的名词...4. 残差连接Residual Connection公式输出 输入 子层(输入)作用解决深层网络的梯度消失问题让信息可以绕过子层直接传递使得训练深度网络成为可能5. 层归一化Layer Normalization作用对每个样本的所有特征进行归一化公式LayerNorm(x) γ * (x - μ) / √(σ^2 ε) β好处加速训练收敛稳定训练过程对 batch size 不敏感6. 前馈神经网络FFN结构两层全连接网络 ReLU 激活FFN(x) max(0, xW1 b1)W2 b2维度变化512 → 2048 → 512先升维再降维作用引入非线性变换增强模型的表达能力对每个位置独立应用Position-wise四、数据流动编码器单层处理过程以输入序列 [我, 爱, 你] 为例输入向量每个词获得 512 维向量嵌入位置编码多头自注意力爱关注我主谓关系权重 0.6爱关注你动宾关系权重 0.3爱关注自己权重 0.1输出融合了上下文信息的爱的表示残差连接层归一化输出 LayerNorm(输入 注意力输出)前馈网络对每个位置进行非线性变换残差连接层归一化输出 LayerNorm(上一步输入 FFN输出)输出得到这一层增强后的序列表示经过 6 层这样的处理最终的编码器输出包含了整个句子的深层语义信息。五、编码器的关键特性总结特性作用优势自注意力捕捉全局依赖任意距离的词都能直接交互多头机制关注不同关系表达能力更强残差连接信息直通训练深层网络层归一化稳定分布加速收敛前馈网络非线性变换增强表达位置编码引入顺序保留词序信息六、编码器总结框图下面这张 Mermaid 框图清晰地展示了编码器的数据流动和组件关系框图解读输入阶段单词嵌入 位置编码 → 带位置信息的向量编码器层重复 N 次第一步多头自注意力捕捉词间关系残连接差保留原始信息防止梯度消失层归一化稳定数据分布第二步前馈网络增强表达能力再次残差连接层归一化输出阶段得到深度语义表示每个编码器层都遵循注意力 → 残差/归一化 → 前馈 → 残差/归一化的模式通过堆叠多层来逐步构建对输入序列的深入理解。