大语言模型完整指南¶
适用人群:希望系统理解大语言模型原理、训练机制与工程应用的开发者、学生和研究者 前置要求:了解深度学习基础概念,理解 Transformer 架构的基本工作方式 最后更新:2026-07-20
1. 大语言模型是什么:语言建模的终极形态¶
1.1 一个意外的发现¶
理解大语言模型(Large Language Model,LLM)最好的起点,是理解它的训练任务有多朴素:预测序列中的下一个词。给定"今天天气很好,我决定出去",预测下一个词是"散"、"跑"、"玩"还是别的什么。就是这么一个看起来简单到有些无聊的任务,当它在足够大的模型、足够多的数据上被反复训练时,催生出了令整个科技界震惊的能力——不只是完形填空,而是写代码、解数学题、进行多轮对话、总结文章、翻译语言、甚至表现出某种形式的推理能力。
这个发现在技术上的意义是:语言理解能力并不需要通过专门设计的任务来习得,而是语言预测这一任务的自然副产品。要可靠地预测"水的沸点大约是"后面的词,模型需要储存物理常识。要预测"因此,由三段论可以推出"后面的词,模型需要理解逻辑推理。要预测一个生动故事的下一句,模型需要理解人物动机和叙事结构。换句话说,所有这些知识和能力,都被压缩进了一个统一的语言预测任务里。
1.2 "大"体现在哪里¶
"大"这个字在大语言模型中有三层含义,缺一不可。第一层是参数量大:现代 LLM 的参数量从数十亿(GPT-2 的 1.5B)到数千亿(GPT-3 的 175B)再到万亿量级,参数是神经网络的"记忆单元",参数越多,能存储的知识和能拟合的模式就越丰富。第二层是训练数据大:LLM 通常在数百 GB 到数十 TB 量级的文本上训练,涵盖网页、书籍、代码、论文、对话,几乎涵盖了人类书面知识的相当大比例。第三层是计算量大:训练一个顶级 LLM 需要数千块 GPU 运行数周,耗电量可能相当于一座小城市几天的用电量,算力门槛极高。
三者缺一不可——有大模型没有大数据,模型会过拟合;有大数据没有大模型,模型容量不足以记住和使用这些信息;有大模型和大数据没有大算力,你根本训不起来。
1.3 LLM 与之前 NLP 模型的本质区别¶
在 LLM 之前,NLP(自然语言处理)领域的主流方式是为每种任务分别训练专用模型——机器翻译用一个模型,情感分析用另一个,命名实体识别再用一个。每个模型都需要该任务的专门标注数据,每次上线新能力都要重新训练。
LLM 打破了这个范式。一个预训练好的大模型,不需要针对每个任务专门训练,只需要给出任务描述(即"提示"),模型就能完成翻译、写作、问答、代码生成……这被称为通用性,是 LLM 区别于之前所有 NLP 模型的最根本特征。一个模型,千种能力,这不仅是工程上的便利,更代表着一种全新的 AI 开发范式——不再是"为任务设计模型",而是"为通用能力建立基础,然后按需引导"。
2. Tokenization:文字如何变成数字¶
神经网络只能处理数字,而人类书写的是文字。Tokenization(分词)是这两个世界之间的桥梁,它把连续的文本切分成一个个离散的单元(Token),再把每个 Token 映射到一个整数 ID,供模型处理。
最朴素的想法是以单词为单位切分,但这有严重的缺陷。英语有数十万个单词,中文汉字常用的有数千个,加上各种人名、地名、专业术语、网络用语、代码关键字,词表规模会爆炸。更麻烦的是,训练数据中没见过的词(Out-of-Vocabulary,OOV)模型完全不认识。
现代 LLM 普遍采用子词(Subword)分词策略,核心思想是在"字符"和"整词"之间找到平衡点。常见的 BPE(字节对编码,Byte Pair Encoding)算法从字符出发,统计训练语料中相邻字符对的出现频率,不断把高频字符对合并成一个新的子词单元,反复迭代,直到词表达到预定大小(通常是 3 万到 10 万左右)。最终词表中既有高频的完整单词(如 "the"、"is")、也有词根和词缀(如 "ing"、"un")、还有单个字符作为兜底。对于中文,BPE 通常在字符级别(每个汉字是一个初始单元)或字节级别操作。
一个实际的例子可以帮助建立直觉:"reinforcement" 可能被切分为 ["re", "in", "force", "ment"];"ChatGPT" 可能是 ["Chat", "G", "PT"];一段 Python 代码中的缩进可能变成多个空格 Token。Tokenization 的效率对模型性能有直接影响:同样的文字,如果 Token 数量更少,模型处理的序列更短,能在有限上下文窗口内容纳更多信息,生成效率也更高。不同语言的 Token 效率差异显著——用英文词汇训练的 BPE 词表对英文文本效率很高,但同样的词表处理中文、日文、阿拉伯文等时,可能需要多倍的 Token 数量来表达同等内容,这就是为什么多语言 LLM 通常需要专门优化多语言词表的原因。
3. 词嵌入与语义空间:词义的几何表达¶
在 Tokenization 把文字切分成 Token 后,每个 Token 被映射到一个整数 ID,但 ID 本身没有任何语义信息——ID 为 1 和 ID 为 2 的 Token 在数学上同等"接近",与它们实际含义上的关系毫无关联。神经网络需要一种方式来表示"国王"和"女王"在语义上比"国王"和"苹果"更接近。
词嵌入(Word Embedding) 解决了这个问题。每个 Token 被映射到一个高维连续向量(通常几百到几千维),这些向量是可学习的参数,在训练过程中根据语言规律不断调整。经过充分训练后,语义相近的词汇,其嵌入向量在空间中也相互靠近;语义无关的词汇,向量距离较远。
更神奇的是,这个向量空间可以做语义运算。最著名的例子是:向量("国王")- 向量("男性")+ 向量("女性")≈ 向量("女王")。性别这个语义维度在向量空间中被编码为一个方向,王权和平民之间的差异被编码为另一个方向,不同的语义关系对应不同的几何方向。这说明 LLM 并非简单地"记住"词汇,而是在某种程度上理解了词汇之间的关系结构。
在现代 Transformer 架构中,词嵌入只是输入表示的起点。模型还会叠加位置编码(Positional Encoding)来注入词的顺序信息,然后经过多层 Transformer 的计算,同一个词在不同上下文中会得到完全不同的内部表示——"银行"在"我去银行取钱"和"河岸边的银行"中,经过注意力机制整合上下文后,其内部表示会呈现出不同的方向,反映出不同的语义。这种上下文感知的表示是 Transformer 相比早期静态词嵌入的核心进步。
4. Transformer 回顾:LLM 的结构基础¶
几乎所有现代 LLM 都基于 Transformer 架构,或者更准确地说,基于 Transformer 的解码器(Decoder) 部分。理解 LLM 需要对 Transformer 的工作方式有基本的把握,这里专注于 LLM 特定的结构特征。
LLM 采用的是自回归生成方式:从左到右一个 Token 一个 Token 地生成,每次生成都把之前所有已生成的 Token 作为输入上下文。为了保证模型在训练时不"作弊"(偷看未来的词来预测当前词),注意力机制使用因果掩码(Causal Mask),确保每个位置只能看到自己和之前的位置,不能看到未来。这个设计让训练和推理行为保持一致。
Transformer 解码器由若干结构相同的层堆叠而成,每层包含两个主要子模块:多头自注意力和前馈网络,每个子模块前后各有一个层归一化和残差连接。随着网络加深,每层逐渐提炼更抽象的表示——浅层关注语法和词汇模式,中层整合句子语义,深层处理段落逻辑和任务推理。最后一层的输出经过一个线性投影和 Softmax,给出词表中每个 Token 作为"下一个词"的概率分布。
不同规模的 LLM 在 Transformer 架构上有诸多变体。旋转位置编码(RoPE) 是目前最流行的位置编码方式,它把位置信息通过旋转矩阵的方式直接编码进注意力的 Q 和 K 向量中,不仅表达了绝对位置,还天然地表达了相对位置,并且对超出训练长度的位置有更好的外推能力。分组查询注意力(Grouped Query Attention,GQA) 则通过让多个查询头共享同一组键和值头,在不明显损失性能的情况下大幅减少推理时的内存占用,是 LLaMA 2/3 等开源模型广泛采用的效率改进。
5. 语言建模目标:从预测下一词到理解世界¶
LLM 的预训练任务叫做自回归语言建模(Autoregressive Language Modeling),目标是最大化训练语料中每个 Token 在给定前文的条件下出现的概率。从数学上看,这等价于最小化预测分布与真实分布之间的交叉熵损失。但理解这个目标的深层含义,比理解它的数学形式更重要。
要想在这个任务上表现得好,模型必须"理解"语言在各个层面的规律:从语音形态(什么样的字母组合在语言中自然出现)、句法结构(主谓宾的正确搭配)、语义关联(哪些概念经常共现)、到世界知识(历史事件、科学原理、社会规律)、乃至推理逻辑(如果 A 则 B 的因果关系)。所有这些信息都隐含在文本的统计规律中,而语言预测任务强迫模型把它们全部内化。
这引出了一个哲学意味很强的问题:语言预测等价于理解语言吗?一方面,在足够大规模的训练之后,模型确实表现出了令人难以置信的语义理解和推理能力。另一方面,模型学到的毕竟是统计关联,而不是真正的"理解"——它并没有对物理世界有直接的感知,也没有真正的意图和理解,只是对人类书面知识的统计压缩。这个争论在学术界和工业界都持续进行着,而且短期内不会有定论。
BERT 采用了一种不同的训练目标:掩码语言建模(Masked Language Modeling,MLM)。它随机遮住文本中 15% 的词,让模型预测被遮住的词,而不是预测下一词。这使得 BERT 可以同时利用左右两侧的上下文,理解能力更强,但无法直接用于生成。BERT 家族擅长理解类任务(分类、问答、信息抽取),GPT 家族擅长生成类任务,两者长期并驾齐驱,直到 GPT-3 的规模效应让生成式路线全面占据主导。
6. 预训练数据:规模、质量与数据工程¶
预训练数据的质量和构成,对最终模型的能力有着决定性的影响,但这个话题在 LLM 相关的讨论中远没有得到它应有的重视。模型能力的天花板,在数据阶段就已经确定——"数据是新的石油"这句话,在 LLM 时代获得了前所未有的字面意义。
典型的 LLM 预训练语料是多源混合的。网页文本(CommonCrawl 是最大的来源,包含数十 TB 从互联网爬取的网页内容)提供了语言的多样性和大量的事实知识;书籍数据(Books3、Gutenberg 等)提供了长文本的语言风格和叙事能力;代码数据(GitHub 等)不只是赋予了代码生成能力,研究发现代码训练还能显著提升模型在结构化推理任务上的表现,因为代码本身就是严格逻辑的书面表达;学术论文、维基百科、问答网站等高质量来源提供了可靠的知识密度。
但不是爬来的数据都能用。原始网络数据充斥着大量的噪声:HTML 标签残留、乱码、低质量的广告内容、重复的模板文本、有害内容……数据清洗和过滤是一项庞大的工程,包括语言检测(过滤非目标语言)、质量过滤(用启发式规则或分类器筛掉低质量内容)、去重(相同或高度相似的内容大量存在,重复训练会产生记忆效应而非泛化)、以及有害内容过滤。
数据配比(Data Mixture)是预训练中不那么显眼却极其重要的超参数。不同来源的数据按什么比例混合,会显著影响模型的各项能力。代码比例太低,代码能力弱;数学文本比例太低,数学推理能力弱;如果一种语言的数据量远小于英语,该语言的能力就会明显落后。数据配比背后的理论理解至今并不完整,很大程度上还是经验摸索的艺术。
数据重复是一个值得特别关注的问题。大规模预训练中,优质数据可能被多次复用(即对同样的数据训练多个 epoch),而不优质的数据则只用一次。研究发现,对高质量数据适度重复训练,效果往往好于增加等量的低质量数据,这改变了"数据越多越好"的朴素认知,引出了数据质量与数量的精细权衡。
7. 规模定律:参数越多一定越好吗¶
规模定律(Scaling Laws) 是近年来 LLM 领域最重要的经验规律之一。Kaplan 等人在 2020 年的研究发现,在计算量固定的情况下,模型性能(以预测损失衡量)与参数量、数据量、训练计算量之间存在幂律关系——把其中任何一个因素增大十倍,模型性能都会以可预测的方式提升。更重要的是,这个规律在相当宽广的规模范围内都成立,且没有观察到明显的饱和趋势。
这个发现的实践意义是巨大的:它告诉我们,可以在小模型上做实验来预测大模型的性能,不需要每次都烧掉天文数字的算力来验证假设。它还揭示了一个反直觉的事实——在固定的计算预算下,更聪明的做法往往不是训练一个尽可能大的模型直到收敛,而是把计算量分配给"适中大小的模型 + 更多数据的训练"。
2022 年 DeepMind 的研究进一步推进了这个认识。Chinchilla 定律指出,此前大多数 LLM 都是在"参数过多、数据不足"的配置下训练的,模型参数量的增长没有被充分的数据训练量所匹配。按照 Chinchilla 的建议,参数量翻倍,对应的训练 token 数也应该翻倍,才能达到最优的计算效率。这直接催生了一批"小而精"的模型——用相对较小的参数量、在超大量数据上充分训练,最终在同等计算成本下取得更好的性能。LLaMA 系列开源模型正是遵循这一理念设计的典型代表。
但规模定律并非放之四海而皆准的绝对真理。它描述的是特定训练目标(语言预测损失)下的平均表现,而特定任务的能力可能并不线性跟随平均损失。一些能力表现出非线性涌现——在某个规模以下几乎不存在,超过某个阈值后突然出现,这与规模定律的平滑预测不符,是目前研究中的一个活跃争议点。
8. 预训练的工程挑战:如何训练千亿参数模型¶
训练一个千亿参数量级的 LLM,面临的工程挑战是常规深度学习的数量级放大。单张 GPU 的显存(通常 40-80GB)远远装不下完整的模型参数,遑论中间激活值和优化器状态。这迫使研究团队发展出了一套成熟的分布式训练体系。
数据并行(Data Parallelism) 是最基础的并行方式:把训练数据分成多份,每个 GPU 持有完整的模型副本但只处理一部分数据,周期性地同步梯度。这在模型能放进单卡显存时有效,但对于超大模型本身就装不进去的情况,需要更激进的方案。
张量并行(Tensor Parallelism) 把单个矩阵运算切分到多个 GPU 上并行执行——一个大矩阵乘法被切分成若干小矩阵乘法,每个 GPU 负责其中一部分,然后合并结果。这允许模型的单层计算分布在多卡上,解决了单层参数过大的问题。流水线并行(Pipeline Parallelism) 则把网络的不同层分配到不同的 GPU 上,像工厂流水线一样,不同批次的数据同时在不同的层上处理,以减少 GPU 的空闲等待。
混合精度训练(Mixed Precision Training) 是另一个关键技术。使用 16 位浮点数(FP16 或 BF16)代替 32 位存储和计算,内存占用减半,计算吞吐量翻倍,而性能损失可以通过保留 32 位的主参数副本来弥补。梯度检查点(Gradient Checkpointing) 在前向传播时不保存所有中间激活,而是在反向传播时重新计算,以更多计算换更少内存。
大规模训练还面临稳定性问题。数千 GPU 的集群中,硬件故障是常态——一块 GPU 故障、一根网线抖动,都可能导致整个训练崩溃。完善的检查点保存策略(定期保存模型状态,故障后从最近的检查点恢复)和故障检测与自动恢复机制是必不可少的工程基础设施。此外,训练过程中偶尔出现的损失突然飙升(Loss Spike)是大规模训练的顽疾,通常由特定批次的数据异常或梯度数值问题引起,需要检测到后回退到之前的检查点再跳过问题数据继续训练。
9. 从语言模型到对话助手:对齐的必要性¶
一个完成预训练的语言模型,在技术上是一台极其复杂的"文本续写机器"。给它任何文本片段,它会生成统计上合理的延续。但这台机器并不天然地是"有用的助手"。
设想你问它"如何制作炸弹",预训练模型可能会根据训练数据中存在的相关内容直接续写出详细的制作步骤——它没有拒绝的动机,因为它只知道"预测合理的下一词",不知道什么应该说、什么不应该说。设想你要它总结一篇文章,它可能续写出更多类似这篇文章风格的内容,而不是提炼关键信息——因为预训练时没有"这是总结任务"的信号。设想它在回答问题时,可能信口开河地编造不存在的事实,因为流畅的语言表达和事实准确性是两件不同的事。
对齐(Alignment) 这个概念正是针对这些问题的。对齐的目标是让模型的行为与人类的真实意图和价值观保持一致:有用(helpful)——能准确理解和完成用户的任务;诚实(honest)——不编造信息,对不确定的事情保持诚实;无害(harmless)——拒绝生成有害、违法、歧视性的内容。OpenAI 把这三个目标简称为 HHH(Helpful, Honest, Harmless),这成为了整个大模型时代对齐研究的核心框架。
对齐问题的深层难度在于:你很难把"有用、诚实、无害"写成一个机器可以直接优化的数学目标函数——这些是人类价值判断的范畴,充满了情境依赖性和主观性。一个"有用"的回答可能在某些情境下是"有害"的。一个"诚实"承认不确定性的回答可能在另一些情境下显得"无用"。对齐研究的很大一部分工作,就是探索如何把这些模糊的人类价值观转化成模型训练可以利用的信号。
10. 指令微调:教模型理解任务格式¶
指令微调(Instruction Fine-Tuning,IFT) 是对齐训练的第一步,也是让预训练语言模型转变为"能理解任务指令"的关键工序。
预训练模型对各种文本风格都有泛化能力,但并不知道"当用户以指令形式提问时,应该直接给出有帮助的答案,而不是续写一段看起来像指令的文本"。指令微调用大量的(指令,回应)对来训练模型,让它建立起"当看到任务描述式的输入时,应该给出对应输出"的条件反射。
好的指令微调数据集需要覆盖广泛的任务类型(问答、总结、翻译、写作、代码、分析……),以及多样的指令表达方式(同一任务的很多种不同问法),这样模型才能真正泛化到新的、训练时没见过的任务形式,而不只是"模板匹配"。
一个有趣的发现来自 FLAN(Fine-tuned LAnguage Net)等早期指令微调工作:当训练任务覆盖足够多样的类型时,模型在完全没有见过的新任务上也表现出色。这说明指令微调不只是在教模型记住特定任务,而是在建立一种更通用的"理解人类意图并生成相应回应"的元能力。
数据质量对指令微调的影响远比数量重要。后来的研究(如 LIMA、AlpaGaca 等)发现,仅用 1000 条精心挑选的高质量指令数据,就能取得与使用数万条普通质量数据相当的效果。这被称为"Less is More"现象——少而精的示范,比多而杂的数据更能有效地教会模型遵循指令的基本格式和风格。
11. RLHF 与 DPO:用人类偏好塑造行为¶
指令微调教会了模型"理解任务格式",但还不足以让模型始终生成人类真正喜欢的高质量回应。模型在技术上能完成任务,但回应可能过于冗长、语气不够自然、或者在回答敏感问题时边界感不强。基于人类反馈的强化学习(RLHF) 是进一步塑造模型行为的主要技术路线。
RLHF 的流程已经在上一章(强化学习部分)有过介绍,这里从 LLM 的角度深入一些细节。奖励模型的训练数据来源于人类标注——让训练有素的标注员对同一个问题的多个模型回答进行排序,而不是给出绝对打分。排序比打分更容易做到一致(人们对"哪个更好"的判断比对"这个好到几分"的判断更稳定),收集到的偏好对被用来训练一个可以预测人类偏好的奖励模型。
RLHF 的效果令人信服——InstructGPT 的论文展示了一个参数量只有 GPT-3 一百分之一的指令微调+RLHF 模型,在人类评估者眼中的质量反而高于原始的 GPT-3。这个发现非常深刻:与其无限堆砌参数,不如用更少的参数更好地对齐人类偏好,模型在用户实际体验上会更有价值。
RLHF 的技术实现相当复杂,需要维护多个模型(策略模型、奖励模型、参考模型),PPO 训练本身也很不稳定,超参数极其敏感,复现难度很高。直接偏好优化(Direct Preference Optimization,DPO) 是 2023 年提出的简化方案,它从数学上证明了 RLHF 的优化目标可以被等价地转化为一个只需要语言模型本身的监督学习问题,完全绕过了显式的奖励模型和强化学习训练。DPO 的优化目标直接最大化人类偏好回应相对于被拒绝回应的概率比值,实现更简单、训练更稳定,在很多任务上效果与 RLHF 相当。这使得对齐训练从大公司的专属能力,变成了开源社区也能轻松实施的标准流程。
12. 高效微调:LoRA 与参数高效方法¶
全参数微调(Full Fine-Tuning)在大模型时代面临严峻的现实障碍:更新一个 70B 参数的模型的所有参数,不仅需要巨大的 GPU 显存,还需要为每个下游任务单独保存一份完整的模型副本,存储成本爆炸。参数高效微调(Parameter-Efficient Fine-Tuning,PEFT) 方法通过只训练一小部分参数,实现了近乎全量微调的效果,却只消耗极少的额外计算资源。
LoRA(Low-Rank Adaptation,低秩适配) 是目前最流行的 PEFT 方法,原理优雅而直观。它的核心假设是:对预训练权重矩阵的更新量,在本质上是低秩的——虽然权重矩阵本身可能是几千×几千的高维矩阵,但微调过程中真正重要的权重变化,可以用两个小得多的矩阵的乘积来近似(低秩分解)。因此,LoRA 在原始权重矩阵旁边并行地添加两个小矩阵(A 和 B,其乘积就是低秩的权重更新),微调时只训练这两个小矩阵,原始权重完全冻结。
LoRA 的参数效率极高——通常只需要原始参数量的 0.1% 到 1% 就能取得和全量微调相近的效果。更重要的是,微调完成后,低秩更新矩阵可以直接合并进原始权重(A×B 加到原始权重上),推理时完全不增加计算开销,不需要修改任何推理基础设施。对于需要服务多个客户各自定制模型的平台,可以共享一份基础权重,只加载对应客户的小体积 LoRA 权重,大幅降低多租户部署的成本。
QLoRA 是 LoRA 的进一步工程升级,把基础模型量化到 4 位精度存储(大幅减少显存占用),同时用 16 位精度训练 LoRA 的适配矩阵。这使得在单张 24GB 消费级 GPU 上,微调一个 65B 参数的大模型成为可能,让个人研究者和小团队也能参与大模型的定制化开发。
13. 涌现能力:规模带来的惊喜与争议¶
涌现能力(Emergent Abilities) 是 LLM 领域最引人入胜也最有争议的话题之一。它指的是某些能力在小模型上几乎不存在,但当模型规模超过某个临界点后,能力会突然出现并迅速提升,而不是随规模平滑线性增长。
谷歌在 2022 年发表的论文记录了数十种这样的涌现能力:多步算术推理、多语言问答、模拟计算机程序执行、常识推理……这些能力在小模型上失败率接近随机猜测,但在超过某个规模阈值后突然表现出远超随机的水平。这个现象让很多研究者感到震惊和好奇——它暗示着模型在某个临界规模实现了某种质变,而不只是量变。
但近期的批评性研究为这个叙事泼了一盆冷水。Schaeffer 等人指出,很多"涌现"实际上是评估指标选择的产物。如果用连续的、细粒度的指标来衡量(比如对数概率而不是答题正确率),很多"涌现"能力其实是平滑线性增长的,只是在某个阈值上恰好跨过了离散评估指标的及格线,才看起来"突然出现"。换句话说,涌现可能是测量方式的假象,而不是真实的相变。
这个争论尚未有定论,但它提醒我们:对 LLM 能力的评估方式,深刻影响着我们对 LLM 本质的理解。用什么指标、在什么任务上评估,不只是技术细节,而是认识论问题。
14. 上下文学习:无需训练的即时适应¶
上下文学习(In-Context Learning,ICL) 是 GPT-3 带给世界的惊喜之一。只需在 prompt 中放几个示例(few-shot),大模型就能推断出任务的模式,并把它应用到新的输入上——完全不需要更新任何模型参数。这个能力在小模型上很微弱,但随着模型规模增大,效果越来越显著。
为什么上下文学习能奏效?这至今是一个部分开放的问题。一种流行的解释是:大模型在预训练时见过大量各种形式的任务描述和示例,学会了"从给定的输入-输出模式中推断规律,并应用到新输入"这种元能力。Prompt 中的示例相当于激活了模型预训练时学到的相关功能。
上下文学习有几个有趣的性质。示例的标签准确性对效果的影响有限——研究发现,即使示例中的标签是随机的错误标签,模型的上下文学习效果也只是略有下降,而不是崩溃。这说明模型从示例中学到的主要是任务的格式和输入-输出的结构,而不只是具体的映射关系。但示例的选择和顺序影响显著——相关性高的示例、以及某些特定的排列顺序,会带来更好的效果,这给系统设计带来了额外的优化空间(如何动态地为每个查询选择最相关的示例)。
15. 思维链:让模型一步步推理¶
思维链(Chain-of-Thought,CoT) 提示方法是 2022 年提出的一个简单但效果惊人的技术。它的核心思想是:在给模型的示例中,不只展示问题和最终答案,而是展示完整的推理过程("先计算 A,再根据 A 计算 B,因此答案是 C"),让模型在生成答案时也先生成中间推理步骤,再得出最终结论。
效果之显著让研究者感到意外。对于需要多步推理的数学题、逻辑题、常识推理题,思维链提示可以把模型的正确率提升数倍,效果在规模越大的模型上越明显。零样本思维链(Zero-Shot CoT) 更简单——只需在 prompt 末尾加上"让我们一步一步来思考"(Let's think step by step)这句话,无需示例,大模型就会自发地进行步骤化推理。
为什么思维链有效?一个直观的解释是:语言模型的计算发生在 Token 序列的生成过程中,生成每个 Token 对应的计算量是有限的。对于需要多步推理的复杂问题,如果强迫模型从问题直接跳到答案,等于要求在一步内完成所有推理,超出了单次前向传播的计算能力。思维链通过生成中间步骤,把复杂推理分解成多个计算步骤,每一步的难度降低,整体推理的准确性因此提升。这个解释也从另一个角度说明了为什么给模型"更多想的空间"(更多生成 Token)通常会带来更好的结果。
近期,测试时扩展(Test-Time Scaling) 的思路把这个方向推向了更前沿。与其训练时投入更多算力,不如推理时允许模型"想更久"——生成多条候选推理链、让模型自我验证和纠错、进行树状的推理探索。OpenAI o1 系列模型就是这一方向的代表,它在推理时会进行大量内部的"思考"过程,在数学、代码和复杂逻辑推理上取得了远超传统自回归生成的效果。
16. 幻觉问题:模型为什么会一本正经地胡说¶
幻觉(Hallucination) 是 LLM 最广为人知的缺陷——模型有时会以极度自信的语气生成完全错误的信息:编造不存在的论文、引用虚假的统计数据、描述从未发生的历史事件,而且语言流畅,毫无迟疑。
幻觉的根源可以从训练目标理解。语言模型的训练目标是生成流畅、连贯、语法正确的文本,不是保证事实准确。模型学会了"如何写出听起来合理的内容",但这和"确保内容是真实的"是两件事。当模型不知道某个问题的答案时,它没有说"我不知道"的内在动机,只有生成流畅续写的驱动力,于是它会生成一个听起来合理但实际上是捏造的"答案"。
幻觉还有一个更深层的来源:模型对自己内部知识的"置信度"是隐式的,并不能精确地知道"我在训练数据中看到过这个事实多少次",因此无法可靠地区分自己确定知道的信息和不确定的猜测。RLHF 在一定程度上缓解了幻觉——通过奖励诚实承认不确定性的回应、惩罚编造内容,让模型学到"在不确定时说不确定"的行为模式——但无法从根本上消除它。
从工程角度缓解幻觉,目前最主要的方法是检索增强生成(RAG),在生成前先从可靠的知识库中检索相关信息,让模型基于检索结果作答而不是纯粹依赖参数记忆,把知识与生成解耦。另一个方向是让模型学会引用来源——生成的每个声明都附上支撑它的文档引用,用户可以自行核实,同时训练过程也以引用准确性作为目标。
17. 提示工程:与模型高效沟通的艺术¶
提示工程(Prompt Engineering) 是在不修改模型参数的前提下,通过精心设计输入文本来充分发挥模型潜力的实践。它既是一门技艺,也是一门需要理解模型工作方式的工程学科。
提示质量对输出质量的影响有时远超直觉。同样是问一个问题,清晰描述任务目标和约束条件的提示,与模糊笼统的提示,可能带来天差地别的回答。理解提示工程,本质上是理解如何让模型的统计注意力聚焦在你真正关心的方向上。
一些被广泛验证有效的提示技巧值得深入理解。明确角色与背景——在提示开头设定模型的角色("你是一位资深软件架构师")和任务背景,能激活模型中与该角色相关的知识和行为模式。提供期望格式——明确说明希望输出的格式("用 JSON 格式"、"分三步描述"),减少模型的猜测,直接引导输出结构。分解复杂任务——对于需要多步推理的问题,比起"一步到位",把问题拆解成若干更小的子问题,依次让模型处理,往往能得到更可靠的结果。少样本示例——当任务形式不太常见时,在提示中给出 2-5 个输入-输出示例,能显著提高模型理解任务意图的准确性。
系统提示(System Prompt) 是对话系统中一个特殊的提示位置,在用户消息之前,用于设定模型的整体行为框架:角色设定、回应风格、安全边界、应用场景约束……良好设计的系统提示是构建稳定 LLM 应用的基础。不同的应用场景(客服机器人、代码助手、写作辅助工具)需要截然不同的系统提示策略。
18. RAG:检索增强生成解决知识局限¶
LLM 有两个根本性的知识局限:一是知识截止日期,训练数据有时间边界,无法了解训练后发生的新事件;二是知识容量有限,再大的模型也无法把世界上所有信息都压缩进参数,特别是长尾知识(专业领域的深度知识、企业私有文档、实时数据)往往在训练数据中覆盖不足。
检索增强生成(Retrieval-Augmented Generation,RAG) 是解决这两个局限最成熟的工程方案。它的核心思路是给模型装上"外部记忆":在生成答案之前,先从一个知识库(可以是企业文档、实时数据库、网页、专业资料库)中检索与用户问题相关的内容,把检索结果和用户问题一起喂给模型,模型基于这些检索到的上下文来生成答案。
RAG 的技术架构通常分为两个阶段。索引阶段:把知识库中的文档切分成合适大小的片段,用嵌入模型(Embedding Model)把每个片段转化为密集向量,存入向量数据库。检索生成阶段:用户提问来了,先用相同的嵌入模型把问题转化为向量,在向量数据库中做相似性搜索,找出最相关的若干文档片段,把这些片段拼入提示中,最后让 LLM 基于这些上下文生成回答。
RAG 的效果好坏在很大程度上取决于检索质量——如果检索到的文档片段与问题不相关,或者关键信息恰好不在检索结果中,模型再强也无从发挥。混合检索(稠密向量检索与关键词稀疏检索的结合)、重排序(Reranking)(用专门的重排模型对候选文档片段进一步精选)、以及查询改写(把用户的模糊问法转化为更适合检索的查询形式)是提升 RAG 效果的常见工程手段。
19. LLM 的推理优化:让模型跑得更快更省¶
LLM 的推理(Inference,即用训练好的模型生成文本)有其特殊的计算特征,与训练阶段完全不同,面临独特的优化挑战。
LLM 的自回归生成是逐 Token 串行进行的,每生成一个 Token 都需要做一次完整的前向传播,速度上限很低。为了避免重复计算之前位置的注意力键值,系统会缓存历史 Token 的 Key 和 Value 张量,称为 KV Cache。KV Cache 的大小与序列长度成正比,长上下文场景下 KV Cache 会占用大量显存,是推理阶段内存管理的核心挑战。
量化(Quantization) 是推理优化的最主要技术。把模型权重从 16 位浮点数压缩到 8 位整数(INT8)甚至 4 位整数(INT4),模型体积缩小一半到四分之一,加载速度更快,推理吞吐量提升,精度损失通常在可接受范围内。GPTQ、AWQ 等后训练量化方法已经非常成熟,让在消费级硬件上运行 70B 级别的模型成为现实。
推测解码(Speculative Decoding) 是近年来流行的推理加速技术。它的想法是:主模型(大)每步只做一次前向传播,代价很高;但我们可以先用一个小模型(草稿模型)连续生成几个 Token 作为"草稿",再用主模型一次性验证这些草稿是否正确,接受正确的部分,拒绝不正确的部分。当草稿模型的预测与主模型高度一致时(对于常见的文本序列往往如此),这等于主模型用一次前向传播完成了多个 Token 的生成,整体吞吐量可以提升 2-3 倍。
20. 多模态大模型:从语言走向统一感知¶
语言是人类知识表达的主要载体,但人类对世界的感知不只有语言——我们还用眼睛看、用耳朵听、用手触摸。多模态大模型(Multimodal LLM) 的目标,是把视觉、语音、视频等多种感知模态整合进统一的模型框架,实现跨模态的理解和生成。
视觉语言模型(Vision-Language Model)是当前最成熟的多模态方向。GPT-4V、Gemini、Claude 3、LLaVA 等都是代表作。它们的一般架构是:用一个预训练的视觉编码器(通常是 ViT,Vision Transformer)把图像转化为一系列视觉 Token,再通过一个投影层把视觉 Token 对齐到语言 Token 的语义空间,最后和文字 Token 一起输入到语言模型中处理。用户可以同时提供图像和文字输入,模型能够理解图像内容、回答关于图像的问题、分析图表、阅读图片中的文字、甚至根据描述生成图像(结合图像生成模型)。
这种统一框架的威力远超简单的功能叠加。视觉和语言信息在模型内部可以相互增强:文字上下文帮助消解视觉的歧义,视觉信息帮助模型理解文字的指代。一个医生描述症状的文本,结合对应的医学影像,能让模型提供比单独处理任一模态更准确的分析。
多模态的未来方向正在向视频和语音延伸。视频理解涉及时序动态,比静态图像复杂得多;语音输入输出让人机交互更加自然;有人甚至在探索把物理传感器数据(机器人的触觉、力矩反馈)也纳入统一模型,让模型真正具备"身体感知"。多模态可能是通往更强通用智能的重要路径——毕竟真实世界本来就是多模态的,把所有感知整合进同一个学习框架,比各模态分别学习、再拼凑结果,在理论上更接近理解世界的本质。
21. AI Agent:从对话到自主行动¶
LLM 的对话能力让它成为出色的交互界面,但更激进的应用方向是把 LLM 作为核心"大脑",构建能够自主规划并执行多步任务的 AI Agent(智能代理)。
一个 AI Agent 不只是回答问题,而是能根据高层次的目标自行分解子任务、调用工具、处理工具返回的结果、根据反馈调整计划,直到目标完成。一个 Agent 收到"帮我研究竞争对手并整理成报告"这个任务,它可能自主地执行:搜索竞争对手官网、提取关键信息、搜索行业报告、分析数据、撰写结构化报告……这整个过程中它不断地思考下一步、调用工具、处理结果,而不只是给出一段文字回答。
工具调用(Function Calling / Tool Use) 是 Agent 能力的基础设施。现代 LLM 被训练成能够识别何时需要调用外部工具(搜索引擎、计算器、代码执行器、数据库查询、API 调用),并生成结构化的工具调用请求,工具执行后把结果返回给模型继续处理。工具极大地扩展了 LLM 的能力边界——让不擅长精确计算的模型可以调用计算器保证精度,让知识有截止日期的模型可以随时检索最新信息,让只会生成文本的模型可以通过 API 操控外部系统。
ReAct(Reasoning + Acting) 是 Agent 框架中影响力最大的思路之一,它让 LLM 交替进行推理(Thought)和行动(Action):先思考当前状态和下一步应该做什么,再执行相应行动,观察结果,再继续思考……这种"思考-行动-观察"的循环让模型能够处理需要动态反馈的长程任务,而不是一次性生成固定答案。
多 Agent 系统是更前沿的方向:让多个 LLM 实例分工合作,有的负责规划、有的负责执行、有的负责验证,就像一个由 AI 组成的虚拟团队协作完成复杂项目。这类系统目前在可靠性上仍然面临很大挑战,错误会在 Agent 之间传播和放大,但它代表着 LLM 从"工具"走向"自主系统"的重要探索方向。
22. LLM 的局限与未来方向¶
22.1 当前根本性局限¶
诚实地面对 LLM 的局限,是正确使用它的前提。幻觉是最广为人知的问题,前面已有详述。推理能力的天花板是另一个深层局限:LLM 在简单推理上表现出色,但在需要严格逻辑、精确数值计算、形式化证明的场景,仍然频繁出错。思维链和测试时扩展缓解了这个问题,但没有根本解决——模型本质上是在用统计模式模拟推理,而不是在执行确定性的逻辑运算。
上下文窗口限制虽然随着技术发展不断扩大(从早期的 4K 到现在的 100K 甚至更长),但"长上下文中的关键信息提取"仍然是难题。研究发现,LLM 处理长文档时,更擅长利用开头和结尾的内容,中间部分的信息利用率显著下降,这个现象被称为"迷失在中间(Lost in the Middle)"。
知识更新困难是参数化知识存储的固有代价。一旦训练完成,模型的参数知识就是固化的快照。更新知识需要重新训练或微调,代价高昂。RAG 提供了外部知识的动态注入,但与参数知识的深度整合仍是开放问题。
可解释性是最深层的挑战。LLM 的决策过程对人类来说几乎是黑箱,即使注意力权重可视化,也难以说清楚模型为什么做出了某个判断。在医疗、法律、金融等高风险决策场景,这是系统性的障碍。机械可解释性(Mechanistic Interpretability) 是一个试图从电路层面理解神经网络内部计算的研究方向,已经在理解模型如何存储和检索特定事实上取得了初步进展,但离真正透明还有很远。
22.2 几个活跃的前沿方向¶
测试时扩展与慢思考(Slow Thinking) 是目前最热门的方向。让模型在推理阶段进行更多内部"思考",生成和验证中间推理链,相当于给模型更多"CPU 时间"来处理复杂问题。OpenAI o1/o3、DeepSeek R1 等模型代表了这条路线的最新进展,在数学和代码等推理密集型任务上取得了显著突破。
更长的上下文与更好的记忆机制是另一个方向。超长上下文(1M token 以上)让模型能够处理整本书、整个代码库,但高效利用长上下文的架构和训练方法仍在探索中。外部记忆系统(把 LLM 与向量数据库、知识图谱紧密集成)提供了另一种增强记忆的路径。
多模态统一正在快速推进,从文字+图像扩展到视频、语音、代码、结构化数据的统一处理,最终目标是建立一个能够像人类一样自然处理多元信息输入的通用模型。
AI 安全与对齐随着模型能力的提升,变得越来越重要。超级对齐(Superalignment)关注如何确保比人类更强大的 AI 系统仍然受人类价值观约束,这是目前仍缺乏可靠技术路线的开放问题。可解释性研究、对抗性测试、宪法 AI(Constitutional AI)等都是当前对齐研究的活跃分支。
LLM 正处于技术发展的快速期,今天的局限可能在明天就有突破性进展,但基本的认知框架——它是什么,它如何工作,它的能力边界在哪里——能够帮助你在这个快速变化的领域里做出持续有效的判断。
23. 核心公式速查¶
23.1 自回归语言建模¶
自回归模型把序列联合概率分解为逐 Token 条件概率:
训练通常最小化负对数似然,也就是 Token 级交叉熵:
困惑度定义为:
困惑度只能在相同分词器、数据集和预处理口径下比较,较低困惑度也不自动等于事实性或任务能力更强。
23.2 Transformer 注意力¶
\(M\) 是掩码。因果语言模型使用上三角掩码,确保位置 \(t\) 不能看到未来 Token。标准全注意力对序列长度 \(T\) 的计算和注意力矩阵内存复杂度通常为 \(O(T^2)\),这是长上下文成本高的重要原因。
23.3 LoRA 低秩更新¶
LoRA 冻结原权重 \(W_0\),只学习低秩增量:
若 \(W_0\in\mathbb{R}^{d\times k}\),则 \(B\in\mathbb{R}^{d\times r}\)、\(A\in\mathbb{R}^{r\times k}\),且 \(r\ll\min(d,k)\)。可训练参数由 \(dk\) 降为 \(r(d+k)\)。
23.4 偏好优化与检索¶
DPO 用偏好回答 \(y_w\) 和拒绝回答 \(y_l\) 直接优化策略相对参考模型的概率优势,其核心损失可写为:
向量检索常使用余弦相似度:
相似度高只表示嵌入空间中的语义接近,不保证文档真实、及时或足以回答问题,因此 RAG 仍需来源过滤、重排、引用和答案验证。
24. 延伸阅读¶
系统课程¶
- Andrej Karpathy「从零构建 GPT」系列:最受欢迎的 LLM 入门视频,手把手从零实现一个微型 GPT,能帮助深刻理解 Transformer 和语言建模的每个细节
- DeepLearning.AI LLM 系列短课程:吴恩达与各 LLM 领域公司合作的一系列实践课程,覆盖提示工程、RAG、微调、Agent 等各个应用方向,每门课程 1-2 小时,实战导向
- 斯坦福 CS324: Large Language Models:斯坦福开设的 LLM 专题课程,涵盖能力、危害、理论基础等多个维度
重要论文¶
- Attention Is All You Need(2017,Google):Transformer 架构的奠基之作,所有 LLM 的结构基础
- GPT-3(2020,OpenAI):规模定律与上下文学习能力的系统展示,开启了大模型时代
- InstructGPT(2022,OpenAI):RLHF 对齐的里程碑工作,GPT-3 → ChatGPT 转变的技术基础
- LLaMA(2023,Meta):高质量开源模型,Chinchilla 定律驱动的充分训练范式,催生了庞大的开源生态
- LoRA(2021,微软):参数高效微调的标准方法,让定制化大模型变得平民化
- Chain-of-Thought Prompting(2022,Google):思维链提示的开创性工作,大幅提升了 LLM 的推理能力
综述¶
- Lilian Weng 的 LLM 博客系列:OpenAI 研究员对 LLM 各专题(对齐、提示、Agent 等)深入浅出的综述,图文并茂,兼顾理论与工程
- Jay Alammar 的图解 Transformer 系列:用精美的可视化图解释 Transformer 内部工作机制,从词嵌入到注意力到 GPT-2,是入门必读的视觉化教程
- State of GPT(Andrej Karpathy):Karpathy 在微软 Build 大会的演讲,系统介绍 LLM 的训练流程(预训练→SFT→RLHF)以及使用最佳实践
资源¶
- 《大规模语言模型:从理论到实践》:国内团队编写的中文 LLM 教材,覆盖预训练、对齐、应用等各章节,内容质量较高
- Hugging Face 中文文档:最主流的 LLM 工程工具库的官方文档,包含大量教程和模型 Hub
本文档持续维护更新。如有错误或建议,欢迎提交 Issue 或 PR。