ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

LLM那些事 · 拓展:深入LLM的基石——Transformer到底是什么

LLM那些事 · 拓展:深入LLM的基石——Transformer到底是什么 你今天对话的每一个大模型——不管管它叫 ChatGPT、Claude、Gemini 还是 DeepSeek——骨架都是同一台机器。这台机器 2017 年在一篇论文里被提出九年过去了外面名字换了一轮又一轮里面的核心架构几乎没变过。这台机器叫 Transformer我们一起来看看它到底是什么。它出现之前传话游戏的困境Transformer 出现之前处理语言序列的主流方法是 RNN循环神经网络。它的做法像传话游戏第一个人读完一句话把自己的理解压缩成一个小结传给下一个人下一个人结合新词更新小结再往下传。这套做法有两个致命缺陷。第一个是慢。传话必须一个接一个来第 50 个词得等前面 49 个词全传完才能开始处理。GPU 明明能同时算很多事却被这种串行结构逼得只能排队干活。第二个是长距离信息会走样。传话游戏你玩过——几十个人排一排第一个人说句悄悄话传到队尾往往面目全非。RNN 干的就是这件事每一步压缩都丢一点细节传到第 100 个词时前面第 5 个词提到的主语早被稀释得认不出来。这也是早期 RNN 模型处理长句子时表现很差的根本原因。需求很清楚让所有位置的计算能同时进行让每个词能直接看到全文而不是只看前面传过来的压缩小结。2017 年Google 团队的论文Attention Is All You NeedVaswani et al.给出了答案——不传话了让所有词同时看到彼此用一种叫「注意力」的机制当场算谁该关注谁。这就是 Transformer。这个设计框架到今天仍是所有主流大语言模型的底座。整机鸟瞰一句话进来一个概率出去拆之前先看全貌。Transformer 是一条文字加工流水线。一句话进来经过分词、变向量、标座位号、穿过几十层处理块每块含注意力和 FFN 两个组件最后输出下一个词的概率分布。我把它压成三阶段编码——把人类语言变成模型能处理的数字embedding 位置编码处理——几十层相同的处理块逐层深化理解注意力 FFN 残差 归一化输出——把理解翻译成词表上的概率分布完成接龙后面每一节就是给这三个阶段逐个装零件。第一步把字变成数计算机不认识「猫」这个符号。它需要一套翻译词典把每个词映射到一组数字坐标上。这就是 embedding 层——一本翻译词典。它翻的不是中文到英文而是人类语言到模型能处理的数字坐标。「猫」这个词经过 embedding变成一组比如 512 个或 4096 个数字组成的向量比如[0.12, -0.34, 0.78, ...]。关键洞察语义相近的词坐标也靠得近。「猫」和「喵星人」的向量距离小「猫」和「汽车」的向量距离大。模型不靠查字典判断两个词是不是同义它看向量之间的距离就够了。这种映射不是人规定的是训练阶段自动学出来的。模型看了海量文本发现「猫」和「喵星人」总出现在相似的上下文里就把它们的坐标安排得近。2013 年 Mikolov 等人的 word2vec 首次大规模验证了这个思路——用词的分布位置来编码语义。Transformer 沿用了同一个思路只是把维度从当年的几百扩到了几千。原始 Transformer 论文里 embedding 维度是 512Llama 3 8B 的隐藏层维度是 409670B 版本到了 8192截至 2026-08。维度越高每个词能携带的语义信息越丰富。一句话embedding 层 翻译词典把人类的词翻译成模型的坐标。座位号位置编码翻译词典有一个致命缺陷——它不知道词序。对 embedding 来说「猫追狗」和「狗追猫」给出来的向量集合一模一样因为包含的词一样。可这两句意思完全反着。词序信息必须额外注入。做法是给每个词绑一个「座位号」——位置编码positional encoding。就像剧场里每个座位必须有编号否则同时开口你分不清谁坐哪排。位置编码让模型知道同一个「猫」出现在第 1 个位置和第 5 个位置不是一回事。原始 Transformer 用的是一套正弦、余弦函数算出来的固定编码表每个位置对应一组事先算好的数模型按位置查表。这种做法简单但编码值是写死的不能外推到训练时没见过的更长位置。RoPE旋转位置编码Rotary Position EmbeddingSu et al. 2021逐步解决了这个问题。它的核心思路很巧妙不直接加一个位置向量而是在算注意力时把查询向量和键向量按各自的位置旋转——位置越靠后转的角度越大。两个旋转后的向量做点积时结果天然带着「这两个词隔了多远」的相对距离信息。这个方案同时统一了绝对位置和相对距离到 2026 年已经是开源模型的默认选项。Llama、Mistral、Qwen、DeepSeek——叫得上名字的模型默认全是 RoPE。Llama 3 把基础频率调到了 500000让模型在更长的文本上也能保持良好的位置感知这个参数在系列文章《Transformer 与注意力——聚光灯扫过每一个字》里也提到过。从正弦位置表到旋转编码演进的方向始终在解决同一个问题怎么让模型把座位号用得更好。核心部件注意力Transformer 的灵魂在注意力机制。它让每个词都能「看到」全文其他词并当场判断谁对自己最重要。如果把这个词比作一盏聚光灯注意力就是这盏灯扫过全文每一个字——给每个词打出一个关注度分数相关的词分数高无关的词分数低。然后它按分数加权混合所有词的信息形成这个词的「新理解」。注意「该看谁」这个判断是当场算的不是预设的。同一个「他」在「小李发愁」的语境里指向小李在「小王走进来」的语境里指向小王。模型通过计算得出指向关系不是硬编码。计算过程需要三个角色配合我压成一句话Q 问、K 招牌、V 内容。QQuery这个词想知道什么。比如一个代词它的 Q 大概是「我指谁」。KKey全文每个词举着的招牌——「我是一个人名」「我是动作」。负责让别人一眼认出它能回答什么问题。VValue每个词真正要传达的信息——它是个人、在发愁、是对话的另一方。计算过程Q 和所有 K 逐一匹配对得上的分数高分数经过 softmax 变成权重按权重加权求和所有 V——这就是这个词重新理解自己后的新信息。一句话收束注意力分数就是三个向量的匹配——谁和谁对上眼谁就被重视。多头几束灯各管一面一束聚光灯不够。你读一句话时同时在关注好几件事代词指谁、主谓什么关系、情感是正向还是负向。一束灯顾了代词就顾不了情感。所以 Transformer 用多头注意力multi-head attention并排放几束灯每束各管一个侧面。每个「头」有自己的 Q/K/V 参数各算各的关注度。有的头管指代有的头管语法有的头管语义倾向。最后把每束灯的结果拼成一份更完整的理解。像几个同事同时读一份报告一个盯数字、一个盯逻辑、一个盯措辞散会各自报一条拼起来就是全局。2017 年原始 Transformer 用了 8 个注意力头。GPT-3175B2020 年发布把这个数字扩到了 96 个。多头不是炫技是一个角度不够看得多角度的工程化。另一半FFN——每层自带的知识仓库先卖个关子注意力只负责看清词与词之间的关系。而模型真正「知道」的东西存在另一个部件里。每层处理块里有两个核心组件注意力和 FFN全连接前馈网络。注意力负责看清关系FFN 负责提供知识。FFN 的本质是一个知识仓库。它里面装着训练时学到的语言规律和事实——「下雨」和「湿」经常一起出现、HTML 的全称是什么、Python 的创始人叫 Guido。当注意力判断出「他」指向「小李」之后FFN 把「小李在发愁」这个信息更新成更丰富的理解。从结构上看FFN 是一个两层全连接网络中间夹一个激活函数。原始 Transformer 用的是 ReLU现代模型几乎全换成了 SwiGLU——它在普通激活函数基础上加了一道门控让网络能更精细地控制哪些信息通过。还有一个值得知道的事实FFN 占了模型参数的大头。每个词都经过同一个 FFN参数共享而 FFN 自身的参数量大约是注意力部分的两倍。模型的「知识」主要就存在 FFN 的权重里。现在兑现那个关子注意力管「看清」FFN 管「想明白」。两者分工明确缺一不可。残差连接与层归一原稿不覆盖 整理桌面没有残差连接Residual ConnectionTransformer 根本训不到几十层。深层网络的经典问题是梯度消失误差信号从最后一层反向传播越传越小到底层时几乎更新不了参数。残差连接的做法极其简单——每个处理块的输入不经过中间层直接加到输出上。打个比方你在改一份稿子不是直接在原稿上覆盖而是在旁边加批注和修改建议。最后你拿到的是「原稿 修改」的叠加。即使中间层改砸了原始信息还在——原稿不覆盖。数学上这个跳跃连接给梯度提供了一条高速公路误差信号可以直接跳过中间层传回去不必经过层层衰减。正因为如此几十层甚至上百层的网络才真正可训。但光有残差还不够。几十层叠下来残差不断累加数值会越来越大层与层之间的数值范围差异会让训练不稳定。层归一化Layer Normalization在每步之后把数值拉回到可比较的范围。像整理桌面每做完一步把桌面上的东西归拢到标准范围内让下一步有一张干净的桌面开始。残差保护原始信息不被覆盖层归一保证每步的数据范围可控。两者配合是 Transformer 能堆几十上百层的工程根基。原始 Transformer 用的是 LayerNorm。现代模型大多换成了 RMSNorm——一种更简单的版本只按均方根缩放省去了计算均值的步骤效果相当但更快从 2023 年起几乎所有新开源模型都采用了它。为什么堆几十层从语法到语义原始 Transformer 6 层GPT-3 有 96 层Llama 3 8B 有 32 层、70B 有 80 层。为什么需要这么多层答案每多一层理解就深一层。底层的注意力抓的是表面的语法关系——谁挨着谁、标点在哪。中层开始抓句法结构——主语在哪、从句到哪结束。高层抓的是整体语义和推理关系——这段话在讲什么道理、前后逻辑是否一致。每多一层它提取的信息就更抽象一层。这种分层不是人为规定的是训练过程中自然涌现的。研究人员观察不同层的注意力模式发现确实存在这种从表面到深层的递进。这也解释了为什么更大的模型更多层、更宽通常在复杂任务上表现更好——更多层意味着更精细的抽象能力。层数也不是越多越好。模型的总能力由深度层数、宽度每层参数量和训练数据量三者共同决定。但在同等条件下更深的模型在推理类任务上确实更强。出口下一个词的概率分布流水线的最后一站Transformer 的输出不是文字而是一个概率分布——下一个词在词表里每个词的可能性。模型处理完所有输入 token 后取最后一层最后一个位置的输出向量经过一个线性变换加 softmax映射成词表上每个词的概率。比如输入「今天天气」模型可能输出「真」15%、「很」12%、「不」8%……然后通过某种采样策略temperature 等参数控制从中选出一个词。选出来的词拼到输入后面再预测下下一个词——这就是自回归的接龙循环本系列第一篇《LLM 是什么——它不是查资料是在接龙》讲过这个核心机制。输出层本质上就是一个分类器把模型内部的高维理解映射回人类可读懂的词表概率。这个概率分布就是模型的全部输出——它只会接龙其他一切能力都是接龙接得足够好之后涌现出来的。技术深挖2026 年的主流变体可跳过如果前面的通俗部分让你建立了整机直觉这一节可以深入一些。每个变体按「解决什么问题 怎么解决 关键洞察」拆。GQA / MQAKV cache 太贵标准自注意力里每个头有独立的 Q、K、V。但生成时每个新 token 只需要自己的 Q前面所有 token 的 K、V 都要缓存在显存里KV cache。GPT-3 级别每个 token 的 KV cache 约占 4.5MB 显存128K 窗口光缓存约 570GB。解法让多个查询头共享 K、V。MQAMulti-Query Attention是所有头共享一组最激进。GQAGrouped-Query Attention是折中查询头分组组内共享。Llama 2、Llama 3 都采用 GQA保持多头的表达力同时把缓存成本压到原来的几分之一。MLA压缩 KV 到极限MLAMulti-head Latent Attention来自 DeepSeek-V22024思路不同于 GQA 的共享头数——它把 KV 本身做低秩压缩。所有头的 K/V 被投影成一个小得多的潜在向量用的时候再展开。KV cache 降到 MHA 的约 5-13%效果反而略好。TransMLA2025arXiv:2502.07864给出了从现有 GQA 模型低成本迁移到 MLA 的路径。MLRAMulti-head Low-Rank Attention2025-2026声称在 MLA 基础上再提速约 2.8 倍。从 MHA 到 GQA 到 MLA这条线讲的是同一笔经济账怎么让 KV cache 更小、推理更快。MoE专家门诊稀疏激活MoEMixture of Experts解决的是另一个维度的问题参数多但推理贵。模型的参数越多知识容量越大。但每个 token 都过全部参数计算量太大。MoE 的做法把 FFN 层换成多个「专家」子网络每个 token 只由一个路由器router选出少数几个专家通常 2 个来处理。总参数可以很大每个 token 的计算量只相当于激活的那部分。Llama 4 Maverick2025是典型总参数 400B每个 token 只激活 17B。DeepSeek-V2/V3 也是 MoE 架构的代表。用一句话概括 MoE 的精髓模型有一屋子专家每个问题只请两三位最对口的出场其他专家坐着休息。参数规模按一屋子算推理成本按两三位算。RMSNorm 与 SwiGLU零件升级RMSNorm 是 LayerNorm 的简化版省去均值计算效果相当但更快。从 LLaMA2023开始成为开源模型标配。SwiGLU 是一个门控激活函数Shazeer, 2020比 ReLU/GELU 有更好的梯度流和表达能力。PaLM2022率先大规模使用之后几乎全部新模型跟进。这两个改动小但收益稳定属于「换了就回不去」的零件升级。为什么 decoder-only 胜出原始 Transformer 是 encoder-decoder 结构encoder 看全文提取信息decoder 生成翻译。但到 2026 年几乎所有大型生成模型都是 decoder-only——GPT 系列、Llama、Claude、Gemini。原因至少有三条。训练目标单一decoder-only 只需要一个目标——预测下一个词直接在原始文本上训练不用构造输入输出对互联网文本取之不尽。生态飞轮causal attention 的计算更简洁所有推理优化KV cache、FlashAttention、各种量化方案都围绕 decoder-only 做工具链越完善优势越大。通用性被验证encoder-decoder 在特定翻译任务上或有优势但在通用生成任务上2025 年一篇直接对比论文arXiv:2510.26622的结论是 decoder-only 在计算最优前沿上几乎全面领先。不是 decoder-only 更聪明是它的训练效率和工程生态让它在大规模场景里全面胜出。结论这台机器为什么是基石Transformer 成为基石不是靠某一个灵光一现的设计是靠一整套分工明确、互相咬合的体系。注意力负责关系FFN 负责知识残差保护信息归一化稳定训练。这套分工在 2017 年就被确立了后面九年所有的改进——RMSNorm 换 LayerNorm、SwiGLU 换 ReLU、GQA/MLA 换 MHA、MoE 换密集 FFN——都是在同一张蓝图上换更好的零件。蓝图本身没有被推翻过。理解了这台机器后面很多问题就有了根上下文窗口为什么有限、幻觉为什么是原理决定的而非 bug、大模型为什么这么贵、能力上限在哪里——答案都藏在今天讲的每个零件里。下一篇我想拆的是这台机器吃什么数据。为什么数据质量比数据量重要得多以及数据配比怎么影响模型的性格。关注别错过。
返回列表