从零开始的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

混淆矩阵与 AUC:理解T/F/P/N分类评估指标

最近参与的医学场景的项目中,模型的评价指标之一是AUC。 要讲清楚这个指标,需要首先了解一个评价模型的经典工具:混淆矩阵。 混淆矩阵 —— 模型能不能“明辨是非” 基础定义 我们训练AI模型,一个典型的任务是去预测一个事情是否会发生。 那医学场景举个例子: 我们给模型输入过去手术的数据,让它学习其中的特征。 我们的目的是希望训练后的模型在接受一段时间的手术数据输入后,给出未来一定时间内发生某类异常事件的可能性。 那么如何评价这个模型做的好不好呢?简单来说,需要记录预测结果与实际情况是否一致。我们定义: 预测结果 预测为正例(Positive, P) 预测为负例(Negative, N) 实际情况 实际为正例 实际为负例 对于这四种情况排列组合,我们就会得到一个模型的混淆矩阵(Confusion Matrix): 预测为正例 P 预测为负例 N 实际为正例 TP(True Positive) FN(False Negative) 实际为负例 FP(False Positive) TN(True Negative) 对于矩阵的四个象限,其含义分别为: 缩写 含义 场景 TP 预测为正,实际为正 ✅ 正确识别阳性(如:有异常事件有警报) TN 预测为负,实际为负 ✅ 正确识别阴性(如:无异常事件无警报) FP 预测为正,实际为负 ❌ 误报(如:无异常事件有警报) FN 预测为负,实际为正 ❌ 漏报(如:有异常事件无警报) 这里我经常搞糊涂,Positive和Negative分别对应的是预测的情况。预测为正例,指预测内容为事件发生,在混淆矩阵中标记为P,反之为N。 但与预测情况相对的,实际情况为正例,并不意味着对应情况记作T。 事实上,当实际情况与预测内容相匹配时,才会记为T;反之即为F。 也就是说,T 和 F 并不是标记实际情况中事件是否发生,而是表示实际情况与预测内容是否一致。 由混淆矩阵派生的关键指标 在实践中,混淆矩阵中的TP、FN、FP、TN通常是记录测试模型时,符合对应情况的测试样本数量。 比如说我们训练好了模型,测试时我们输入了1000个样本,结果分别为: 400个样本被预测为会发生异常事件 其中150个样本真的发生了异常事件,250个样本没有发生异常事件 600个样本被预测为不发生异常事件 其中50个样本真的发生了异常事件,550个样本没有发生异常事件 此时,这个模型的混淆矩阵可以记为: ...

February 4, 2026 · ClarkFlyBee