从零开始的Transformer(1): 架构拆解

在如今的深度学习领域,Transformer架构已经称得上是经典模型了。从最初的NLP自然语言处理到后来推广到计算机视觉领域,ChatGPT等一系列基于Transformer模型的产品,对世界带来翻天覆地的变化改变世界的充分说明了它的强大实力与重要作用。 作为深度学习领域的初学者,我想简单介绍这一经典架构的同时,用案例编码来学习模型的实际应用,为后续工作打打基础。 值得一提的,本文中给出的案例大部分还是来自NLP领域。 Transformer 架构简介 语言模型 正如前文所说,Transformer最开始解决的问题是自然语言处理。Transformer 模型本质上都是预训练语言模型,在大量生语料上进行训练。我们可以看到两类常见的任务: 基于句子前$n$个词来预测下一个词。 因为输出依赖于过去和当前的输入,该任务被称为因果语言建模(causal language modeling)。 在气象预测领域,也常常见到这个因果(Causual)的概念。 我们在训练模型预测未来天气时,预测的结果同样依赖于过去的输入,而不能受未来时间天气的影响,这样的预测符合现实逻辑的。 基于上下文(周围的词语)来预测句子中被遮盖掉的词语(masked word)。 这类任务称为遮盖语言建模(masked language modeling)。 训练这类模型不需要人工标注数据,它们可以对训练过的语言产生统计意义上的理解。但如果直接拿来完成特定任务,效果往往不好。 迁移学习 前面提到的预训练相当于是从头开始训练模型:所有模型的权重都被随机初始化,并在没有先验知识的情况下开始训练。显而易见的,这个过程不仅需要海量的训练数据,时间经济成本都非常高。 因此,大部分情况下,我们将别人预训练好的模型权重通过 迁移学习 应用到自己的模型中,使用自己的任务语料对模型进行“二次训练“,通过微调参数使模型适用于新任务。 例如,我们可以选择一个在大规模英文语料上预训练好的模型,使用 arXiv 语料进行微调,以生成一个面向学术/研究领域的模型。 在绝大部分情况下,我们都应该尝试找到一个尽可能接近我们任务的预训练模型,然后微调它。 这一点在气象领域同样适用。我曾经看到过一个研究([2601.20342] StormDiT: A generative AI model bridges the 2-6 hour ‘gray zone’ in precipitation nowcasting),它就使用了视频生成模型Cosmos-Predict2.5,然后再用气象数据训练它,最终得到气象领域的预测模型。 Transformer 结构 一个常见的Transformer架构示例图如下所示: 看着很复杂哦,首先简化一下: 一个标准的 Transformer 模型主要由两个模块构成: Encoder(编码器):负责理解输入文本,为每个输入构造对应的语义表示(语义特征)。 Decoder(解码器):负责生成输出,使用Encoder输出的语义表示结合其他输入来生成目标序列。 让我们详细看看两部分的内部结构: 编码器 编码器由 N 层相同的模块堆叠而成,每层包括两个子层: 多头自注意力机制(Multi-Head Self-Attention):计算输入序列中每个词与其他词的相关性。 前馈神经网络(Feed-Forward Neural Network):对每个词进行独立的非线性变换 每个子层后面都接有残差连接(Residual Connection)和层归一化(Layer Normalization) ...

February 15, 2026 · ClarkFlyBee