ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

LLM底层机制全解析:从Transformer与Attention到思维链和RLHF

LLM底层机制全解析:从Transformer与Attention到思维链和RLHF

LLM 这个词这两年几乎成了技术圈的通用货币,不管你是做后端的、做数据的、还是做产品的,开会时要是嘴里蹦不出几个相关词汇,都不好意思说自己在跟进前沿。但真到动手环节,很多人会卡在同一个地方:概念听了一堆,Transformer、Attention、思维链、RLHF 这些词都能念出来,可它们之间到底是什么关系,为什么一个模型能"读懂"人话,为什么有的模型答得又稳又准、有的张口就胡说,这些问题始终没打通。我打算用几篇的篇幅把 LLM 从底层到应用完整捋一遍,这是第一篇,重点放在骨架层面——把 Transformer 和 Attention 这套机制讲透,顺带把思维链、RLHF 这些上层概念挂到正确的位置上。适合刚入门想建立体系认知的朋友,也适合已经会调 API 但想搞清楚"里面到底发生了什么"的开发者。

1. 先把 LLM 的边界划清楚,别一上来就啃公式

1.1 LLM 到底是个什么东西

先把最容易混淆的一点说清楚:LLM 不是知识库,不是搜索引擎,也不是逻辑推理机。它的本质是一个基于海量文本训练出来的概率模型,做的事情用一句话概括就是——给定前面的文字,预测下一个最可能出现的词。就这么简单,但简单到极致之后,量变引发了质变。

你可以把它想象成一个读了几乎整个互联网文字的人,他记不住每句话的原文,但对"什么词后面通常跟什么词"形成了极强的直觉。你问他"今天天气真",他下意识接"好"或者"不错";你给他一段代码写到一半,他能顺着补全。这种能力叫自回归生成,是 LLM 最底层的运行方式。

理解这一点非常关键,因为它直接解释了很多现象。比如为什么模型会"一本正经地胡说八道"——因为它只是在预测"最像答案的文字",而不是在核对事实。再比如为什么同一个问题问两遍答案可能不一样——因为生成过程带有随机采样。这些后面都会展开。

1.2 为什么不能跳过基础直接学应用

我见过太多人一上来就学怎么调 API、怎么写提示词、怎么搭 RAG,短期确实能出活,但一旦遇到模型不按预期工作,就完全不知道从哪下手。比如模型输出格式老是跑偏,你只会反复改提示词,改到怀疑人生;但如果你知道它是逐词预测的、知道上下文窗口是怎么被消耗的,你就能从根上判断问题出在提示设计、上下文长度还是采样参数。

基础不是用来炫技的,是用来定位问题的。这一篇讲的东西,后面每一篇都会反复用到。所以哪怕你觉得 Attention 的公式看着头疼,也建议先把直觉建立起来,公式可以慢慢啃。

1.3 本篇要打通的知识地图

我把这一篇要覆盖的内容先摆出来,方便你建立预期:

  • Transformer 架构:LLM 的物理载体,理解它的输入输出和分层结构
  • Attention 机制:Transformer 的心脏,也是"理解上下文"的关键
  • 从 Transformer 到 LLM:预训练、微调、对齐这几个阶段各自在干什么
  • 思维链与 RLHF:上层能力的来源,以及它们和底层机制的关系

这几块拼起来,你脑子里就有了一张完整的地图,后面学任何具体技术,都知道它挂在地图的哪个位置。

2. Transformer 为什么能取代循环网络成为主流

2.1 在 Transformer 之前,大家是怎么处理文本的

要理解 Transformer 的价值,得先知道它替代了什么。在它出现之前,处理序列数据的主流是 RNN(循环神经网络)和它的改进版 LSTM、GRU。这类模型的工作方式是串行的:一个词一个词地读,读完第一个词把状态传给第二个词,再传给第三个,像接力棒一样往下传。

这个方式有个致命问题:长距离依赖会衰减。句子短的时候还好,一旦句子长到几十上百个词,前面信息传到后面就剩不下多少了。你可以想象传话游戏,传的人越多,原话变形越严重。而且串行意味着没法并行计算,训练一个长序列要等前一个算完才能算下一个,速度上不去。

2.2 并行化带来的根本性改变

Transformer 的核心突破就是把串行改成了并行。它一次性把整个句子的所有词都喂进去,让每个词同时和所有其他词"打招呼",直接建立联系。这样一来,不管两个词隔多远,它们之间的关联都是一步到位的,不存在衰减问题;同时所有计算可以并行,GPU 的算力被彻底释放。

这个改变带来的直接后果就是模型可以做得非常大。RNN 时代想堆到几十亿参数几乎不可能,训练慢到无法接受;Transformer 让千亿、万亿参数成为现实,而规模恰恰是 LLM 能力涌现的关键。所以说 Transformer 不是一个普通的架构改进,它是整个大模型时代的入场券。

2.3 一个容易被忽略的代价

天下没有免费的午餐。Transformer 换来了并行和长距离建模能力,代价是计算复杂度随序列长度平方增长。因为每个词都要和所有词算关联,序列长度翻倍,计算量翻四倍。这就是为什么上下文窗口那么贵、为什么长文本处理是个专门的研究方向、为什么会有 Flash Attention 这类优化技术出现——它们都在想办法缓解这个平方级的开销。

提示:理解"平方复杂度"这个代价,你就能明白为什么模型厂商在宣传上下文长度时那么谨慎,也能理解为什么处理超长文档时成本和延迟会陡增。

3. Attention 机制:让模型知道该看哪里

3.1 用查字典的类比理解 Q、K、V

Attention 是 Transformer 里最核心也最容易被讲晕的部分。我用一个查字典的类比帮你建立直觉。

假设你要理解句子里的某个词,比如"苹果"在"我吃了一个苹果"里。你会怎么判断它的含义?你会去看句子里其他词,看哪些词和它关系密切。"吃"和"苹果"关系强,"我"也有关系,而如果句子里还有个"手机",那"苹果"可能指品牌。这个"判断哪些词该重点关注"的过程,就是 Attention。

具体实现上,每个词会被映射成三个向量:

  • Query(查询):我想找什么,代表当前词的"提问"
  • Key(键):我是什么,代表每个词的"标签"
  • Value(值):我的实际内容,代表每个词携带的信息

计算时,用当前词的 Query 去和所有词的 Key 做匹配,匹配度高的就多分配注意力,然后按这个权重把对应的 Value 加权求和。说白了就是:根据相关性,从所有词里挑出该看的,按重要程度加权汇总。

3.2 自注意力与多头注意力

上面说的是自注意力(Self-Attention),也就是句子自己和自己算注意力。这是编码器里的标准操作。但光有一种"看法"不够,因为语言里的关系是多维的——有语法关系、有语义关系、有指代关系。所以 Transformer 用了多头注意力(Multi-Head Attention),同时跑好几组独立的 Q、K、V,每组关注不同的关系模式,最后把结果拼起来。

打个比方,单头注意力像一个只看语法的分析员,多头注意力则是一整个团队,有人盯语法、有人盯语义、有人盯指代,最后开会汇总。这也是为什么模型能同时处理好几种语言现象的原因。

3.3 位置编码:并行化丢掉的东西得补回来

并行处理有个副作用:模型不知道词的顺序了。因为所有词是一起进去的,"我打你"和"你打我"在它眼里词都一样,只是排列不同。这显然不行。

解决办法是位置编码(Positional Encoding),给每个词额外加一个表示它位置的向量,让模型知道谁在前谁在后。早期用的是正弦余弦函数生成固定编码,后来演化出了可学习的位置编码、相对位置编码、旋转位置编码(RoPE)等多种方案。现在主流大模型基本都用 RoPE 或其变体,因为它对长序列的外推能力更好。

注意:位置编码看着是个小细节,但它直接决定了模型能处理多长的文本、以及超出训练长度后表现会不会崩。选型时这是个不能忽略的点。

4. 从原始 Transformer 到今天的 LLM,中间发生了什么

4.1 编码器-解码器结构的分化

原始 Transformer 是编码器-解码器结构,专门为机器翻译设计的:编码器读原文,解码器生成译文。但后来的发展出现了分化。

一条路是只保留编码器,代表是 BERT。这类模型擅长理解任务,比如分类、抽取、判断,因为它能同时看到左右两边的上下文。另一条路是只保留解码器,代表是 GPT 系列。这类模型擅长生成任务,因为它只能看到左边的上下文,天然适合"预测下一个词"。今天大家说的 LLM,绝大多数走的是解码器-only这条路。

为什么生成任务选了只保留解码器?因为生成是逐词往外蹦的,每一步只能依赖已经生成的内容,不能偷看未来。解码器-only 的结构天然符合这个约束,训练目标和推理方式完全一致,非常干净。

4.2 预训练:海量文本里学"语言的规律"

预训练阶段做的事情,就是拿海量文本让模型反复做"预测下一个词"的练习。数据量动辄几万亿 token,模型在这个过程中学到了语法、事实、推理模式、代码逻辑等等。这个阶段极其烧钱,需要成千上万张加速卡跑几个月,所以只有少数机构玩得起。

预训练出来的模型叫基座模型(Base Model)。它能力很强,但有个问题:它只会"续写",不会"对话"。你问它一个问题,它可能接着给你编出更多问题,因为它学的是文本的统计规律,不是"回答问题"这个行为。

4.3 微调与对齐:把基座模型变成能用的助手

要让基座模型变成能对话的助手,需要后续几个阶段:

  • 监督微调(SFT):用大量"问题-答案"对继续训练,教模型"被问到时应该回答"这个模式
  • 奖励建模:训练一个模型来判断回答的好坏,本质是学人类的偏好
  • 强化学习对齐(RLHF):用奖励模型作为信号,通过强化学习让模型的输出更符合人类期望

这三步走完,基座模型才变成我们日常用的对话助手。RLHF 是其中最关键也最复杂的一环,它解决的是"模型有能力但输出不受控"的问题——比如让它更诚实、更安全、更符合指令。

4.4 各阶段能力对照

阶段输入学到的东西典型表现
预训练海量无标注文本语言规律、世界知识会续写,不会对话
监督微调问答对对话模式、指令遵循能对话,但质量不稳
奖励建模人类偏好对比判断回答好坏给回答打分
RLHF奖励信号对齐人类偏好输出更稳、更安全

这张表建议记牢,后面聊任何模型能力来源时,你都能对号入座。

5. 思维链和 RLHF 到底改变了什么

5.1 思维链:让模型"把过程写出来"

**思维链(Chain-of-Thought)**这个概念刚出来时挺反直觉的:为什么让模型多写几步推理过程,答案准确率就上去了?

原因还是回到自回归生成。模型是逐词预测的,每一步能用的"计算量"是固定的。如果直接让它输出答案,它得在一步之内完成所有推理,容易出错。但如果让它先把中间步骤写出来,这些步骤就变成了后续生成的上下文,相当于把推理过程外化成了可见的中间结果,每一步都基于前面已经写下的内容,出错概率大幅降低。

这就像做数学题,心算容易错,写草稿纸就稳得多。思维链本质上是给模型提供了"草稿纸"。现在很多推理型模型会把这一步内化成训练目标,让模型自动学会先想再答。

5.2 RLHF 与思维链的关系

这两个概念经常被混在一起,其实它们解决的是不同层面的问题。思维链解决的是推理能力问题,让模型算得更准;RLHF 解决的是行为对齐问题,让模型输出更符合人类期望。一个偏能力,一个偏行为。

不过它们也有交集。比如现在一些推理模型会用强化学习来优化推理过程本身,奖励那些"想得对、答得准"的路径,这算是把两者结合起来了。理解这个区分,你就能明白为什么有的模型"很聪明但不听话",有的"很听话但不够聪明"——它们优化的目标不一样。

5.3 这些上层能力依赖的底层机制

不管是思维链还是 RLHF,它们能起作用的前提都是 Transformer + Attention 这套底层机制足够强。思维链依赖的是模型对长上下文的建模能力,这直接来自 Attention;RLHF 依赖的是模型有足够的参数容量去吸收偏好信号,这来自 Transformer 的可扩展性。所以底层没打通,上层的东西都是空中楼阁。

6. 学完这一篇,下一步该往哪走

6.1 几个值得动手的小实验

光看概念容易飘,建议动手做几件事把认知落地:

  • 找一个开源的小型 Transformer 实现,跑一遍前向传播,打印出 Attention 权重,看看模型到底在"关注"哪些词
  • 用现成的模型接口,对比同一个问题在"直接回答"和"要求分步推理"两种情况下的输出差异,直观感受思维链的作用
  • 手动构造一个超出上下文窗口的输入,观察模型的表现变化,理解位置编码和窗口限制的实际影响

这几个实验都不需要多强的算力,但能帮你把抽象概念和具体现象对应起来。

6.2 常见的学习误区

我踩过也见过别人踩的坑,列几个:

  • 一上来就啃论文公式:Attention 的矩阵运算推导可以后面再看,先建立直觉更重要
  • 把 LLM 当数据库:它不存储事实,只是概率生成,指望它准确回忆细节会失望
  • 忽略数据质量:模型能力上限由数据和规模共同决定,光调架构不改数据收益有限
  • 混淆训练阶段:搞不清预训练、微调、对齐各自的作用,就没法判断一个模型的能力边界

6.3 后续篇章的预告方向

这一篇把骨架搭起来了,后面我会分别深入几个方向:Attention 的具体变体和优化(包括 Flash Attention 这类工程技巧)、预训练和对齐的实操细节、以及怎么把这些底层认知用到实际的提示工程和系统设计里。每一篇都会尽量把"为什么"讲透,而不是只给结论。

我个人在实际带人和做项目的过程中发现,那些能走得更远的人,往往不是最早学会调 API 的,而是愿意花时间把底层机制搞明白的。因为工具会变、框架会换,但对"模型到底在干什么"的理解是能迁移的。这一篇如果只能记住一句话,我希望是:LLM 的本质是逐词预测,所有上层能力都是在这个基础上长出来的。抓住这条主线,后面学什么都不容易迷路。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进