一、Transformer核心架构由哪些模块组成?
Transformer的编码器-解码器结构是其核心设计,编码器负责输入序列的特征提取,解码器生成目标序列。每个编码器层包含多头自注意力(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Network)两个子层,解码器在此基础上增加了编码器-解码器注意力(Encoder-Decoder Attention)。
以编码器层为例,输入序列首先经过自注意力层计算序列中各位置的关联权重,再通过残差连接(Residual Connection)与层归一化(Layer Normalization)稳定训练过程,最后通过前馈网络(两层全连接层)进行非线性变换。例如,输入序列”I love NLP”的每个词向量会通过自注意力层与其他词产生交互,模型从而捕捉到”love”与”NLP”的语义关联。
二、自注意力机制如何计算权重?
自注意力机制的核心是计算查询(Query)、键(Key)、值(Value)三者间的相似度。以单头注意力为例,输入序列的词向量首先通过线性变换生成Q、K、V矩阵,然后计算注意力分数:
[ \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V ]
其中(d_k)为键向量的维度,缩放因子(\sqrt{d_k})用于避免点积结果过大导致梯度消失。多头注意力则将Q、K、V拆分为多个子空间,并行计算注意力后拼接结果,增强模型对不同语义特征的捕捉能力。例如,在翻译任务中,多头注意力可同时关注语法结构与词汇语义。
三、位置编码为何必要?如何实现?
由于自注意力机制本身不具备序列顺序感知能力,位置编码通过注入位置信息解决这一问题。原始Transformer采用正弦/余弦函数生成位置编码:
[ PE(pos, 2i) = \sin(pos/10000^{2i/d{model}}) ]
[ PE(pos, 2i+1) = \cos(pos/10000^{2i/d{model}}) ]
其中(pos)为位置序号,(i)为维度索引,(d{model})为词向量维度。这种编码方式允许模型通过相对位置推理(如(PE{pos+k})可表示为(PE_{pos})的线性变换)学习序列顺序。实际应用中,也可通过可学习的位置嵌入替代固定编码。
四、残差连接与层归一化的作用是什么?
残差连接通过(F(x)+x)的结构缓解深层网络的梯度消失问题,使模型能够训练数百层结构。例如,在12层编码器的Transformer中,每一层的输出都会与输入相加,确保梯度可直接反向传播到浅层。层归一化则对每个样本的特征维度进行标准化(均值0、方差1),加速收敛并减少对初始化参数的敏感度。代码实现如下:
class LayerNorm(nn.Module):def __init__(self, features, eps=1e-6):super().__init__()self.gamma = nn.Parameter(torch.ones(features))self.beta = nn.Parameter(torch.zeros(features))self.eps = epsdef forward(self, x):mean = x.mean(-1, keepdim=True)std = x.std(-1, keepdim=True)return self.gamma * (x - mean) / (std + self.eps) + self.beta
五、解码器如何实现自回归生成?
解码器采用自回归(Auto-Regressive)方式逐步生成序列,每一步的输入为已生成的序列。为防止模型看到未来信息,解码器的自注意力层会屏蔽后续位置(通过掩码矩阵将非法位置的注意力分数设为负无穷)。例如,生成”Hello world”时,生成”world”时仅允许关注”Hello”及其之前的内容。此外,编码器-解码器注意力允许解码器利用编码器的全局信息,实现源语言与目标语言的对齐。
六、模型训练的关键技巧有哪些?
训练Transformer需注意以下要点:
- 学习率调度:采用带暖身的线性衰减策略(如前10%步数线性增长学习率,后续按余弦衰减),避免初期震荡。
- 标签平滑:将真实标签的0/1编码替换为0.9/0.1,防止模型对正确标签过度自信。
- 混合精度训练:使用FP16与FP32混合计算,减少显存占用并加速训练。
- 梯度累积:当批量大小受限时,通过多次前向传播累积梯度再更新参数,模拟大批量效果。
七、如何优化模型推理效率?
推理阶段可通过以下方法加速:
- KV缓存:解码时缓存已生成的键值对,避免重复计算自注意力。
- 量化:将模型参数从FP32转为INT8,减少计算量(需校准防止精度损失)。
- 并行解码:采用Speculative Decoding等技术在单步生成多个候选词,减少解码步数。例如,百度智能云的大模型服务通过优化内核实现毫秒级响应。
八、Transformer的局限性及改进方向?
当前Transformer存在两大问题:
- 长序列处理:自注意力的时间复杂度为(O(n^2)),难以处理超长文本。改进方案包括稀疏注意力(如局部窗口、全局token)、线性注意力(通过核函数近似矩阵乘法)。
- 外部知识融合:纯注意力机制缺乏显式知识注入能力。可通过检索增强生成(RAG)或知识图谱嵌入扩展模型能力。例如,百度ERNIE系列模型通过实体级知识增强提升语义理解。
总结与建议
理解Transformer需掌握其”分而治之”的设计哲学:通过自注意力实现动态特征交互,借助残差与归一化稳定训练,利用位置编码补充顺序信息。实际应用中,建议从预训练模型(如BERT、GPT)的微调入手,逐步探索架构修改(如替换注意力类型、调整层数)。对于工业级部署,可参考百度智能云等平台提供的模型压缩工具链,平衡精度与效率。