把 Transformer 底层原理讲透:从输入到输出,一文看懂大模型时代最核心的基础架构
很多人知道 Transformer 很重要也知道今天的 GPT、BERT、各类大模型都绕不开它但一旦继续往下问“Transformer 到底是怎么工作的Q、K、V 是什么为什么它能取代 RNN” 很多文章就开始堆公式、堆术语把人越讲越晕。这篇文章不走“纯论文复述”的路线而是从工程视角出发用尽量通俗的话把 Transformer 从外到内拆开先讲它为什么出现再讲它如何接收输入、如何计算注意力、如何通过编码器和解码器完成理解与生成最后再讲它为什么成为大模型时代最核心的底座。如果你是刚接触大模型的开发者或者你已经听过很多次 Transformer但总觉得“懂了一点又没完全懂”那这篇文章就是为你准备的。1. Transformer 为什么会出现在 Transformer 之前自然语言处理里最主流的模型是 RNN、LSTM、GRU 这一类“按时间顺序一个词一个词处理”的结构。它们的思路并不难理解第 1 个词算完再算第 2 个词第 2 个词算完再算第 3 个词。这样做的好处是模型天然带有时序感但问题也非常明显。第一计算过程天然串行。后面的步骤要等前面的步骤算完难以充分发挥 GPU 的并行能力。第二长距离依赖不容易学。一个词和很远位置的词之间如果有关联信息需要一层层往后传路径长、容易衰减。第三模型越大、序列越长训练速度越容易成为瓶颈。Transformer 的核心突破在于它不再要求模型“按时间一步一步往前走”而是让序列中每个位置都可以直接去看其他位置并决定谁更值得关注。换句话说它把“按顺序传播信息”变成了“按关系聚合信息”。这正是 Transformer 改变游戏规则的地方。2. 先看全貌Transformer 的整体工作流理解 Transformer 最好的方式不是上来就盯着公式而是先看整体流程。你可以把它想成一条生产线文本先被切成 Token再被转成向量然后加入位置信息编码器负责理解整段输入解码器负责基于已有内容一步一步往后生成。只要你先把这条主线装进脑子里后面再看 Self-Attention、QKV、多头注意力、Mask就不会觉得这些概念是碎的。图 1 里最关键的认知点有三个第一Encoder 和 Decoder 的职责不同第二进入模型的不是文字本身而是“带位置的向量”第三输出不是一下子整句蹦出来而是一个 Token 一个 Token 往后生成。3. 输入是怎么进入 Transformer 的神经网络不能直接处理“字词”这种符号它只能计算数字。因此Transformer 的第一步一定是把文本转换成数字表示。但这里并不是简单把词变成一个整数就结束了而是要经历“Token → Token ID → Embedding → Position → 最终输入向量”这一整套流程。3.1 Token先把文本切成可处理的最小单元例如“我 爱 学习 AI”这句话可以被切成 4 个 Token。不同模型的分词方式可能不同有的按字切有的按词切还有的按子词切。无论如何Token 都是模型真正接触输入的起点。3.2 Token ID把 Token 映射成编号每个 Token 在词表里都有一个固定编号。这个编号本身并不携带语义它更像一个“索引键”帮助模型从嵌入矩阵里把对应的向量取出来。3.3 Embedding把编号变成有语义的向量Embedding 的本质是把离散的词映射成稠密向量。语义相近的词在向量空间里通常也会更接近。对于神经网络来说这一步非常关键因为后续所有注意力计算、线性变换都是在这些向量上完成的。3.4 位置编码补上顺序信息Transformer 最大的一个特点是它不像 RNN 那样天然按时间前进。所以如果只给它 Embedding它只知道“有哪些词”却不知道“谁在前、谁在后”。这时就必须通过位置编码把顺序信息显式加进去。很多人第一次学到这里都会突然明白原来 Transformer 不是“没有顺序”而是“顺序不是靠结构天然带来的而是靠位置编码补进去的”。这也是为什么文章里经常会强调一句话Transformer 没有 RNN 的天然时序感所以必须显式注入位置信息。4. Transformer 最关键的地方Self-Attention 自注意力如果说 Embedding 和位置编码是在给 Transformer“准备原材料”那 Self-Attention 就是在做最核心的“关系建模”。它解决的问题是当前词在更新自己的表示时到底应该参考哪些词参考多少。举个经典例子The animal didn’t cross the street because it was too tired. 当模型处理 it 这个词时它需要判断 it 指的是 animal还是 street。自注意力就是干这件事的它让当前词主动去看整句中其他词并为这些词分配不同的关注权重。4.1 自注意力到底在做什么一句人话概括每个词在更新自己时都会动态参考整句里的其他词。谁和我更相关我就多看谁谁和我关系不大我就少看谁。4.2 Q、K、V 到底是什么Q、K、V 不是三种神秘物质而是同一个输入向量经过三套不同线性变换后得到的三份表示。QQuery我现在想找什么信息。KKey我身上有哪些可以被匹配的特征。VValue如果你关注我我真正提供什么内容。如果你把它类比成搜索系统那就很好理解Q 像搜索词K 像标签V 像正文内容。先用搜索词和标签匹配判断谁更相关再把相关对象的正文信息按权重汇总起来。所以自注意力的价值不在于“看见了所有词”这么简单而在于它可以让每个词根据自己的需要动态决定参考谁。这种“按需聚合上下文”的能力是 Transformer 能理解复杂语义关系的核心原因。5. Self-Attention 具体是怎么计算出来的当我们说“一个词更关注另一个词”时背后其实是一整套可计算的流程。虽然论文里会写成矩阵形式但把它拆成步骤后并不难懂。步骤 1输入先映射成 Q、K、V。步骤 2当前词的 Query 和所有词的 Key 做相似度计算。步骤 3得到一组分数后先做缩放再做 Softmax。步骤 4Softmax 后得到一组注意力权重。步骤 5再用这些权重去对所有 Value 做加权求和。步骤 6得到当前词新的上下文表示。这就是经典的 Scaled Dot-Product Attention也就是“缩放点积注意力”。这里最容易忽视的一点是“缩放”。为什么要除以 √d_k原因很简单向量维度越大点积值就越容易变得很大如果数值过大Softmax 会变得很陡梯度就可能不稳定。缩放的作用就是把这个问题压一压让训练更平滑。6. 为什么还要多头注意力一个头不够吗很多人第一次接触到“多头注意力”时会困惑既然注意力已经能算相关度了为什么还要分成多个头答案是单头只能从一个角度看问题而语言关系往往是多维的。有的头更容易关注主谓关系。有的头更容易关注指代关系。有的头更容易关注局部位置关系。有的头更容易关注更抽象的语义联系。多头注意力的核心思想就是让模型在不同的表示子空间里从多个角度并行观察同一句话。每个头都独立做一遍注意力计算最后把这些结果拼接起来再做一次线性映射形成最终输出。所以多头注意力不是单纯“多算几次”而是让模型同时捕捉不同类型的语言关系。你完全可以把它理解成“多位分析师同时看同一份材料最后合并意见”。7. 一个 Transformer Block 里面到底有什么Transformer 不是只有 Attention。真正的一个标准 Block内部一般包含注意力、前馈网络、残差连接、LayerNorm 等一整套结构。7.1 Encoder Block偏“理解”一个 Encoder Block 通常包括多头自注意力 → Add LayerNorm → 前馈网络 FFN → Add LayerNorm。Encoder 的特点是它可以看到整段输入因此更擅长做“全局理解”。7.2 Decoder Block偏“生成”Decoder Block 看起来和 Encoder 有点像但它中间多了一层“编码器-解码器注意力”并且开头的自注意力是带 Mask 的。Decoder 的特点是它要严格按顺序生成内容不能偷看未来词。7.3 FFN、残差连接、LayerNorm 分别做什么FFN对每个位置再做一次更深的非线性特征提炼。残差连接防止信息在深层网络中轻易丢失也更利于训练。LayerNorm让数值分布更稳定训练过程更平滑。把这张图看懂你对 Transformer 的“骨架结构”就已经建立起来了。后面不管是学 BERT还是学 GPT本质上都只是围绕这套骨架做取舍和扩展。8. Decoder 为什么必须加 Mask训练和推理有什么不同如果 Decoder 在生成第 3 个词的时候直接去看第 4 个、第 5 个词那训练就相当于作弊。因此Decoder 侧的自注意力必须加因果 Mask确保每个位置只能看到自己以及前面的位置看不到未来。8.1 训练阶段Teacher Forcing训练时目标句子是已知的因此我们通常会把“右移后的真实答案”送给 Decoder。例如目标是“我 爱 机器 学习”那么输入给 Decoder 的往往是“bos 我 爱 机器”。这使得模型可以一次并行计算多个位置因此训练速度更快。8.2 推理阶段自回归生成推理时就完全不同了。模型一开始只有 bos先生成第一个词再把这个词接回去作为下一步输入然后再生成第二个词如此反复。也就是说推理必须一个 Token 一个 Token 往外生成。这也是为什么你看到大模型生成文字时内容总是一点点往外蹦。不是模型故意“慢吞吞”而是它本来就是按照“猜一个、接回去、再猜下一个”的方式工作的。9. Transformer 为什么比 RNN / LSTM 更适合大模型时代经过前面的拆解你已经能够理解 Transformer 的优势不是“因为它新”而是因为它在计算方式上更适合现代硬件也更适合被扩展到超大规模。并行能力更强同一层多个 Token 可以一起进入注意力计算。更容易捕捉长距离依赖任意位置之间可以直接交互。更适合 GPU核心计算高度矩阵化更容易利用现代算力。更容易扩展到超大模型这是大模型时代最现实的工程优势。很多人会说 Attention 的复杂度是 O(n²)那它为什么还是赢了关键就在于虽然复杂度不低但它高度并行而 RNN 虽然单步结构简单却很难并行。真正落到工程实践上Transformer 更能吃到 GPU 和大规模训练带来的红利。10. 从底层骨架往上看BERT、GPT 和原始 Transformer 有什么区别学到这里再去看不同模型家族会轻松很多因为你会发现它们差异很大但地基其实相通。Encoder-only代表是 BERT更偏“理解型任务”例如分类、匹配、抽取、检索。Decoder-only代表是 GPT更偏“生成型任务”例如对话、续写、写作、代码生成。Encoder-Decoder代表是原始 Transformer更适合“输入一段、输出一段”的映射任务如翻译、摘要、生成式问答。所以你可以简单记BERT 更擅长读GPT 更擅长写原始 Transformer 更像“看一段、写一段”的通用序列到序列架构。11. 学 Transformer 时最容易混淆的几个点误区 1注意力越大就代表“理解越深”。更准确的说法是注意力权重表示在当前计算里参考某位置的程度。误区 2Q、K、V 是人为定义好的语义标签。其实它们是可学习的线性投影结果。误区 3Transformer 完全没有顺序概念。实际上它有顺序概念只不过顺序依赖位置编码来注入。误区 4大模型就是 Transformer。更严谨的说法是今天很多主流大模型以 Transformer 为核心骨架但在训练方式、微调方式、推理优化上还叠加了大量工程能力。12. 总结你到底该怎么一句话讲清 Transformer如果面试官、同事或者读者问你“Transformer 到底是什么”你可以这样回答Transformer 是一种基于注意力机制的神经网络架构。它先把文本转换成带位置信息的向量再让每个词通过自注意力动态关注其他词通过多头注意力、前馈网络、残差连接和归一化不断更新表示如果是生成任务解码器还会通过 Mask 保证只能基于已知内容逐步往后生成。最后再用最通俗的话收一下全文Embedding把文字变成机器可计算的语义向量。位置编码告诉模型谁在前、谁在后。Self-Attention让每个词在更新自己时动态参考其他词。Q / K / V分别负责提问、匹配、取值。Multi-Head让模型从多个角度同时理解一句话。FFN进一步做特征提炼。Residual LayerNorm让深层训练更稳。Mask保证生成时不能偷看未来。Encoder / Decoder一个偏理解一个偏生成。说到底Transformer 真正厉害的地方不是某一个公式多漂亮而是它把“全局关系建模”和“现代硬件友好型计算”这两件事做到了统一。这才是它能撑起大模型时代的根本原因。