SOTA Sync
全部文章
模型进展2026-08-30

LLM 到底是怎么工作的

从 Token 预测、训练、Softmax 到 Temperature,拆开 LLM 生成文字、产生随机性与幻觉的机械过程。

LLM 看起来会对话、写代码、解释概念,甚至像是在推理。但在最底层,它反复做的只有一件事:根据已经出现的 Token,计算下一个 Token 的概率分布。

复杂能力并不是由另一套神秘引擎产生的。它们来自同一个简单操作在海量数据和巨大参数规模上的重复。

#一台 Next-token Prediction Machine

模型接收的不是完整句子,而是一串 Token。Token 可以是一个词、词的一部分、标点或其他文本片段。

当输入是 “The quick brown fox” 时,模型不会直接认定下一个词是 “jumps”。它会对整个词表生成一组概率:例如 “jumps” 可能是 42%,“sat” 是 12%,“leaped” 是 8%,其余概率分配给词表中的其他 Token。

系统从这组分布中选出一个 Token,把它追加到已有序列,再用更长的新序列预测下一步。这个过程持续到遇到停止条件。

这就是自回归生成。模型每次都在回答同一个问题:给定此前看到的一切,下一个 Token 最可能是什么?

#训练改变的是概率分布

训练时,模型读取大量文本,并不断预测序列中的下一个 Token。预测错误后,误差信号通过反向传播回到网络,轻微调整数十亿个内部参数,也就是模型的 Weights。

一次调整几乎没有意义。经过数万亿次更新后,Weights 会形成一套对语言统计规律的压缩表示。模型逐渐学到:

  • “The Eiffel Tower is located in” 后面经常出现 “Paris”;
  • Python 函数定义通常以 def 开头;
  • “To be or not to” 几乎总会接上 “be”。

模型并不是在数据库里保存每一条训练样本,然后在回答时把原句找出来。它内化的是模式:什么内容经常共同出现,哪些延续在特定 Context 下更合理。

这种统计压缩解释了泛化能力。模型能处理训练中没有原样出现过的输入,因为它不是机械检索句子,而是在已学到的分布上生成新的延续。

#Logits 如何变成概率

模型在输出概率之前,先为词表里的每个 Token 生成一个原始分数,称为 Logit。Logit 可以是任意实数,本身还不是概率。

Softmax 会把这组分数转换成总和为 1 的概率分布。它先对每个 Logit 做指数运算,放大分数之间的差异,再用所有结果的总和完成归一化。

假设一个简化词表只有四个候选项:

TokenLogitSoftmax 后的概率
jumps8.390.7%
leaped6.09.1%
sat2.10.18%
sleeps-1.50.004%

模型最终交给采样器的就是这组分布。Temperature、Top-k 和 Nucleus Sampling 等参数,作用的对象都在这里。

#Temperature 不是“创意按钮”

Temperature 经常被描述成随机性或创造力旋钮,但它实际做的事情更具体:在 Softmax 之前,用一个温度值去除 Logits。

当 Temperature 等于 1 时,分布保持不变。

当 Temperature 小于 1 时,Logit 之间的差距被放大,概率分布变得更尖锐。高概率候选进一步占据优势,输出更接近确定性。

当 Temperature 大于 1 时,差距被压缩,分布变得平坦。原本可能性很低的 Token 获得更多机会,结果更加多样,也更容易走向不连贯。

在前面的例子里,把 Temperature 从 1 降到 0.5,会让 “jumps” 从 90.7% 上升到约 99%;提高到 2,则会降到约 67.5%,同时把更多概率让给其他候选。

关键点是:Temperature 不会改变模型知道什么,也不会增加推理能力。 它改变的是从概率分布的哪个区域进行采样。低温更偏向模型最有把握的延续,高温更愿意探索分布尾部——那里既有新颖表达,也有错误和噪声。

#为什么相同输入会得到不同答案

只要多个延续都合理,模型就会从分布中采样。相同 Prompt 运行多次,措辞乃至实质内容都可能发生变化。

这不是偶发 Bug,而是训练方式的直接结果。训练数据包含人类语言的巨大变化:同一件事可以有成千上万种表达。模型学习了这种变化,生成时也会把它表现出来。

概率性给生产系统带来三个直接后果:

  1. 不能假设相同 Prompt 永远返回相同结构,严格解析必须处理变化。
  2. 多次调用可能互相矛盾,需要一致性时应降低 Temperature,并增加验证逻辑。
  3. 一次回答正确,不等于这个 Prompt 稳定可靠。必须重复测试,才能看清错误分布。

#模型不会在写作前完成整篇计划

基础生成过程是从左到右、逐个 Token 进行的。已经输出的 Token 不能回头修改,后续内容只能继续以已有输出为条件。

这解释了为什么 Chain-of-thought 能改善复杂任务的表现。让模型先生成中间推理,相当于先把一块 Scratch Space 写进 Context。之后的 Token 会受到这些推理 Token 的影响,正确答案因而获得更高概率。

同一个机制也解释了幻觉。当 Prompt 强烈暗示这里应该出现一个作者、数字或网址时,模型会生成一个在语境中很像真的延续。训练分布学习的是“什么文本看起来合理”,并没有为每个 Token 附带事实校验器。

合理与真实不是同一件事。

#“模型知道”意味着什么

说模型“知道”某个事实,通常意味着这条信息在训练语料里反复以相近 Context 出现,让 Weights 对相关表达形成了很强的先验。

它不是一张可精确查询的事实表,而是对海量 Token 共现关系的有损压缩。高频、一致的信息往往表现稳定;低频、冲突或训练数据不足的领域更容易生成似是而非的细节。

因此,LLM 适合加速常识范围内的表达、整理与推导。遇到精确数字、引用、近期事件或罕见知识时,它提供的是一个需要验证的候选答案,而不是数据库查询结果。

理解这一点,才真正理解了 LLM 的能力边界:它能从语言分布中生成极其有用的结果,但“最像正确答案”从来不自动等于“事实正确”。