AI · AI基础
大语言模型(LLM)是怎么工作的?
简短回答
大语言模型是一种神经网络,训练目标是根据前面所有的 token(文本的小片段)预测下一个 token。回答你时,它先把提示词切成 token,给每个可能的下一个 token 打分,选出一个接在文本后面,然后不断重复,直到停止。再经过指令和人类反馈的训练,这个预测器才变成好用的助手。
一句话版本:非常会猜下一个词
LLM 只做一件事,并且反复地做:看已有的文字,估计下一个片段是各种可能内容的概率,然后选出一个接上去,再看一遍。一段300字的回答,就是几百次这样的小步骤。
这听起来太简单,不像能写出文章、代码和译文。力量来自规模:模型有数十亿个参数(训练中不断调整的数字),训练用的文本量极大。要在这么多文本上把下一个词猜准,它就必须掌握语法、事实、推理的套路和代码的结构。
ChatGPT、Claude、Gemini、DeepSeek、Qwen 这类对话助手,都是围绕 LLM 做的产品。产品在外面加了聊天界面、隐藏的系统提示词、安全规则,往往还有联网搜索之类的工具,但核心仍是下一个 token 的预测。
你的一句话,是怎样一步步变成回答的
以提示词 The capital of France is 为例,模型是这样处理的:
- 分词(tokenize):文本被切成 token。用一种常见的分词器,这句话会变成五个 token:The、capital、of、France、is(多数还带着前面的空格)。
- 嵌入(embed):每个 token 被换成一长串数字,即嵌入向量,把它放进一个语义相近的词彼此靠近的空间里。
- 注意力(attend):嵌入向量依次经过几十层 Transformer。每一层里,注意力步骤让每个 token 回看前面的 token,把相关的信息拉进来。
- 打分(score):最后一层给词表中的每个 token 打分,词表往往有10万个以上的条目,分数再转换成概率。
- 采样(sample):按这些概率和采样设置选出一个 token。
- 重复:选中的 token 被接到文本后面,整个过程为下一个 token 再跑一遍,直到模型输出停止 token 或达到长度上限。
下一个 token 的概率大致如下,数字仅作示意,并非来自真实模型:
| 候选的下一个 token | 示意概率 | 说明 |
|---|---|---|
| Paris | 0.92 | 预期的答案 |
| a | 0.03 | 可能接成 a city of …… |
| the | 0.02 | 可能接成 the city of …… |
| located | 0.01 | 语法没问题,但不常见 |
| Lyon | 0.001 | 是错的,但并非不可能被采样到 |
从这张表可以得出两点。第一,模型不是在数据库里查条目,而是在生成最可能的续写。第二,错误的 token 永远有一定的概率,这是模型有时会说出错误内容的原因之一。
注意力:模型如何追踪语义
注意力是 Transformer 架构的核心思想,于2017年提出。对每个 token,模型会计算在构建它的含义时,应该给前面每个 token 多大的权重。
看这句话:The trophy did not fit in the suitcase because it was too big. 要理解 it 指什么,模型必须把它和 trophy(奖杯)而不是 suitcase(行李箱)联系起来。把 big 换成 small,it 就指行李箱了。注意力让模型能根据周围的词做出这种关联,并且通过多层逐步完善。
因为注意力要把每个 token 和前面的 token 比较,文本一长,计算量就增长得很快。这就是每个模型都有上下文窗口(context window)的原因,即它一次最多能处理的 token 数。
LLM 如何训练:三个阶段
原始的下一个 token 预测器还不是好用的助手。你问它一个问题,它可能接着再问几个问题,因为这样的文字在互联网上也很常见。现代助手要经过多个阶段的训练。
| 阶段 | 训练数据 | 模型学到什么 | 结果 |
|---|---|---|---|
| 预训练 | 海量的公开文本和代码 | 语言、事实、规律、推理方式 | 能续写任何文字的基础模型 |
| 指令微调 | 人工写好的示例提示词和优质回答 | 遵循指令的格式 | 会回答问题而不是胡乱续写的模型 |
| 偏好调优(如 RLHF) | 由人或模型对多个回答排序 | 人们更喜欢哪类回答:有帮助、诚实、安全 | 风格一致、懂得拒绝的助手 |
InstructGPT 的研究表明,经过这样训练的较小模型,比只做过预训练的大得多的模型更受用户欢迎。就目前而言,许多模型还会接受额外训练,学会先一步步推演再作答,在产品里常表现为思考或推理模式。
训练在发布前一次完成,成本极高。你和模型聊天时,它的参数不会改变,也不会在当下从你的对话中学习,不过服务商若政策允许,可能会用对话来训练后续版本。
会改变回答的采样设置
同一条提示词可能得到不同的回答,因为模型是按概率采样的。如果你使用 API,可以控制采样方式。具体的取值范围和默认值因服务商而异。
| 设置 | 作用 | 何时调整 |
|---|---|---|
temperature | 值低时,最高概率的选项更容易被选中;值高时概率被抹平,回答更多样 | 信息提取和写代码调低,头脑风暴调高 |
top_p | 只从概率之和达到 p 的最小 token 集合中采样 | 通常调它或 temperature 其中一个,不要两个都调 |
max_tokens | 限制输出的长度 | 回答被截断在半句时,把它调大 |
| 停止序列 | 出现该文本时就结束生成 | 结构化输出、模板 |
| 系统提示词 | 放在对话之前的隐藏指令 | 一次性设定角色、语气、格式和规则 |
temperature 调低,回答会更一致,但不会更真实。如果最可能的续写本身就是错的,低 temperature 只会让模型每次都错。
LLM 做不到的事
记住背后的机制,许多让人意外的失败就说得通了:
- 它们看不到字母。模型看到的是 token,所以像 strawberry 这样的词可能被拆成 st、raw、berry 三块。数字母或倒写单词因此很难。
- 它们自己不会记住过去的对话。应用里的记忆功能,是把笔记存下来再插进提示词里实现的。
- 它们不知道近期发生的事,除非应用把搜索结果或文档放进上下文。
- 它们不会核对事实。下一个 token 预测里没有哪一步把输出和现实对比,所以流畅的文字也可能是错的。
- 它们不会运行代码,也做不了精确的算术,除非调用工具。纯文字的长乘法很容易出错。
好的产品会用工具补上这些缺口:计算器、代码运行器、联网搜索,或检索你自己的文档。知道缺口在哪里,你就知道什么时候该要求用工具,什么时候该自己核对答案。
从原理推出的实用技巧
- 把材料放进提示词。想问关于某份文档的问题,就把相关部分贴进去。模型对看得见的文字,推理效果远好于凭训练时模糊的记忆。
- 对输出要具体。说明格式、长度、读者和语言。模型会用最典型的选择去填补空白。
- 难题让它分步骤作答。写出中间步骤,等于在模型下结论之前给了它更多 token 去处理。
- 换任务就开新对话。旧的、无关的消息仍留在上下文里,可能把回答带偏。
- 核实人名、数字、引文和链接。这些细节最容易被编造。
常见问题
大语言模型真的理解自己说的话吗?
它们会建立丰富的内部语义表示,因而在很多情况下能够回答、翻译和推理。但它们没有亲身经历,也没有目标,还会在人觉得显而易见的简单任务上出错,所以这算不算理解,至今仍有争论。
为什么AI对同一个问题会给出不同的回答?
模型是从概率分布中采样下一个 token 的,回答前段的一点随机选择,会让后面的措辞走向不同。调低 temperature 能让回答更可复现。
GPT 是什么的缩写?
GPT 是 Generative Pre-trained Transformer 的缩写,即生成式预训练 Transformer:一种在大量文本上预训练、用来生成文字的 Transformer 模型。
大语言模型会联网吗?
模型本身不会联网,它只知道截至某个日期的训练数据。有些应用会加上联网搜索工具,把结果贴进上下文,所以才能提到最近发生的事。
LLM 里的参数是什么?
参数是网络内部、由训练不断调整的数字之一。模型有数十亿个参数,合起来编码了它学到的东西。参数越多能容纳的规律越多,但运行成本也越高。