跳到主要内容

LLM 的技术演进主线

假设客服收到一句话:“我上周买的耳机已经拆封,但没有损坏,还能退吗?”

一套真正可用的 AI 客服系统,需要读懂“拆封”和“没有损坏”的关系,找到最新退货规则,查询这张订单,判断是否符合条件,最后生成回复或转交人工。今天看起来顺手的一次回答,背后叠加了多代技术。

LLM(Large Language Model,大型语言模型)可以先理解为一个“根据已有上下文,预测下一个 token”的模型。token 是模型处理文字的基本单位,可以是字、词或词的一部分。这个简单目标如何发展成问答、写代码和调用工具的能力?理解演进主线时,持续追问三个问题就够了:旧方法卡在哪里,新技术解决了什么,它又留下什么问题。

规则与词频
↓ 把文字变成可学习的表示
词向量与序列模型
↓ 根据任务动态关注上下文
Attention
↓ 支持并行计算和规模化训练
Transformer
↓ 从大规模文本中学习通用能力
通用预训练
├─ 后训练:学习指令、偏好和安全边界
├─ 检索、工具与 Agent:接入当前信息和外部行动
└─ 推理时计算:搜索更多候选并验证结果

前半段近似按时间推进。通用预训练成熟后,后三条路线开始并行发展,也经常在同一个系统中组合使用。

机器如何把文字变成可学习的表示

早期自然语言处理大量依赖词典、语法规则和人工特征。规则可以在已知场景中工作,用户换一种说法,开发者往往就要补一条规则。

n-gram 统计模型迈出了一步:它根据前面几个词,估计下一个词出现的概率。例如在“申请退”之后,“货”通常比“天气”更可能出现。这种方法能从语料中学习局部规律,可见范围很短,没见过的词组也很难借用相似表达的经验。

神经语言模型开始把词映射成可学习的数字向量,word2vec 又让词向量的训练和复用更高效。经常出现在相似语境中的词,可以得到相近的表示。BPE 子词切分则把罕见词拆成可复用的小单元,缓解固定词表覆盖不了新词的问题。

这一阶段解决了“文字怎样进入模型”。新的限制很快出现:静态词向量通常给一个词固定表示,可“苹果很甜”和“苹果发布了新产品”中的“苹果”含义不同。模型还需要根据前后文改变表示。

Attention 与 Transformer 如何利用上下文

RNN 和 LSTM 这类序列模型按顺序读取文字,像沿着句子传递一张不断更新的便签。Seq2Seq把翻译等任务统一成“读入一个序列,生成另一个序列”。句子变长后,早期细节容易在传递中被压缩;训练也要等前一个位置算完,难以充分并行。

Attention让模型生成每个位置时,都能重新查看输入,并汇总当前最相关的部分。判断退货资格时,模型可以重点参考“上周”“已拆封”和“没有损坏”,不用把整句话都挤进一个固定长度的状态。

Transformer进一步移除了 RNN 式的循环依赖,主要依靠 Self-Attention 在 token 之间传递信息。训练时,一段文字中的多个位置可以同时进入计算,更适合使用现代计算加速器扩大模型、数据与训练计算。GPT 这类生成模型还会加入因果遮罩,让每个位置只能看到当前及之前的 token,从而在训练中学习“根据前文预测下一个 token”。

Transformer 提供了可以扩展的架构,模型学到什么仍取决于训练目标、数据和计算预算。逐个任务单独训练的成本依然很高,下一步因此转向先学习通用能力,再适配具体任务。

预训练为什么造出了通用基础模型

预训练改变了能力的获得顺序:模型先从大量文本中学习语言模式,再通过微调或上下文适配具体任务。BERT通过预测被遮住的 token,推动了“预训练 + 下游适配”的广泛使用。GPT 路线持续预测下一个 token,把摘要、问答、翻译和代码生成等任务统一成文本生成。

在 GPT-3 等规模化模型中,依据当前提示临时判断任务的能力变得更加明显。GPT-3较系统地展示了不给示例或只给少量示例的上下文学习(in-context learning)。例如,在客服问题前放几组本公司的标准回复,模型就能临时沿用相似的语气和格式;这些示例不会自动写进模型参数。

规模化也逐渐有了可测量的工程规律。Scaling Laws在其研究范围内观察到,增加参数、数据和训练计算时,语言模型的测试损失呈现较可预测的下降趋势。Chinchilla进一步说明,在固定训练计算预算下,模型规模和训练数据量需要合理匹配。参数量只是其中一个变量,数据量、训练计算和推理成本也会影响最终方案。

通用预训练让一个模型可以处理多类任务,也留下两道边界。模型学习的是训练文本中的模式,流畅输出不能证明事实正确;它能模仿提示中的任务,却未必会稳定遵循用户意图。

后训练如何把续写模型变成助手

基础模型面对“请判断这张订单能否退货”时,可能继续写一段类似网页的文字,也可能编造一条看似合理的政策。用户需要的是直接回答、说明依据,并在信息不足时追问。

后训练用行为示范和偏好信号来缩小这个差距:

  • **监督微调(SFT)**提供高质量的“指令—回答”示例,教模型识别任务、遵循格式、调用工具或拒绝越界请求。
  • 偏好优化比较多个候选回答,让模型更倾向有用、清晰和安全的输出。InstructGPT展示了示范微调、人类偏好与强化学习的组合;DPO提供了更直接的偏好优化目标。

经过后训练的客服模型,更可能先索要缺失的订单号,区分“可以退货”和“需要人工确认”,并按公司的格式回复。后训练也可以强化特定任务能力,它无法自动更新过时知识,也无法保证每次回答都可靠。礼貌、自信和结构完整只说明行为更符合训练偏好,详见模型能力边界

检索、工具与 Agent 如何接入真实任务

模型参数通常不会随着商店规则和订单状态实时变化。要处理真实退货,系统需要在运行时接入外部信息。

RAG先检索相关资料,再把内容放进当次上下文。客服模型由此可以阅读当前退货政策;应用还可以保留检索文档的出处,供展示和复核。检索可能漏掉关键段落,长上下文也可能没有被有效利用;资料的选择、组织和更新方法见上下文工程

工具调用把“读取资料”扩展为“查询或行动”。模型可以生成 query_order(order_id) 这样的结构化请求,宿主程序负责校验参数、检查权限、执行查询,再把结果返回给模型。模型提出请求,不代表它已经获得执行授权。

当系统根据工具返回的结果继续选择下一步,就形成了 Agent 式的行动循环:提出行动 → 获得观察 → 更新状态 → 决定下一步。Agent 是围绕模型搭建的运行时架构,可靠性来自外部的状态管理、权限、验证、恢复和停止机制,具体见Agent 架构基础

在退货案例中,系统可以先检索政策,再查询订单,随后生成判断;涉及退款等高风险行动时,还可以要求人工确认。任何一层都可能出错:检索可能找到旧规则,工具可能返回异常数据,Agent 也可能重复执行。因此,接入更多能力时必须同步增加约束和验证。

推理时计算为什么依赖验证

有些问题很难一次答对。推理时计算(test-time compute)的思路,是给单次任务更多计算预算:展开更多中间步骤、生成多个候选、搜索不同路径,再用规则、测试或工具结果筛选。

Chain-of-Thought展示了中间步骤对多步任务的帮助,self-consistency通过多条候选路径汇总答案。后续的test-time compute 研究进一步表明,收益取决于任务、搜索策略和验证信号;单纯生成更长内容不会稳定提高质量。

训练阶段也可以利用可验证结果塑造推理行为。数学题有标准答案,部分代码任务有可执行测试,这些结果可以成为强化学习的奖励信号。DeepSeek-R1公开展示了使用规则奖励和强化学习训练推理行为的路线。训练时学会更好的搜索策略,与回答时分配更多搜索和验证预算,是两种可以组合的增强方式。

退货规则中的日期、商品状态和订单字段可以逐项核对,增加搜索与验证更可能减少遗漏。回复是否温暖、解释是否让人满意,缺少同样明确的验证标准,投入更多计算也未必更好。

这条演进主线最终可以变成一张故障排查表:

  • 误解“没有损坏”,检查基础模型能力和输入上下文。
  • 不遵循回复格式,检查提示与后训练适配。
  • 使用过时政策,检查检索来源和数据更新。
  • 读错订单状态,检查工具、参数和权威数据源。
  • 未经允许就退款,检查权限与工作流。
  • 漏掉某项条件,检查搜索过程、推理预算和验收规则。

以后看到“模型能力升级”,可以先问它改进了哪一层,又用什么评测证明改进。预训练、后训练、外部信息与行动、推理时计算解决不同问题,也需要不同的验证方法。