大语言模型原理详解:从“猜下一个词”到涌现智能

作者:问题终结者2026.11.04 05:38浏览量:0

简介:本文系统拆解大语言模型(LLM)的核心工作原理:从分词与词向量如何把语言变成数字,到注意力机制如何捕捉上下文关联,再到Transformer架构、预训练与对齐训练的完整链路,最终解释“预测下一个词”这一朴素目标为何能涌现出翻译、推理、写代码等综合能力,帮助读者建立完整清晰的认知框架。

一、反直觉的起点:LLM本质上只做一件事

许多初学者以为大模型内部藏着某种“理解语言”的神秘机制,实际情况要朴素得多:LLM的核心任务只有一个——给定前面的文本,预测下一个token的概率分布。

用数学语言描述,模型建模的是条件概率:

P(xt | x_1, x_2, …, x{t-1})

即已知前 t-1 个token,计算第 t 个token的概率。生成一整段话,就是把这个过程循环执行:每生成一个词,把它拼回输入,再预测下一个词,直到产出结束符。

这个目标看似简单,却有两个关键特性:

  • 无需人工标注:互联网上任何一段自然文本都能自动构造成训练样本(前文是输入,紧随其后的词是标签),训练数据规模几乎不受限制;
  • 目标倒逼能力:要把“下一个词”猜准,模型被迫学会语法、事实知识、上下文逻辑甚至推理模式——因为预测“他的职业是医_”,你得先理解前文在讲什么。

能力的种子,就埋在这个朴素的训练目标里。

二、第一步:把文字变成数字——分词与Embedding

2.1 分词

模型不认识汉字和英文单词,只认识数字。因此第一步是分词:把原始文本切成一串token(可能是字、词、子词或符号),并映射为整数编号。现代大模型普遍采用基于统计合并的子词切分算法(如BPE这类通用算法),在“字符太碎”与“整词表太大”之间取得平衡:高频词保持完整,低频词拆成子词,未见过的词也能退化到字符级处理,保证任何输入都可编码。

概念示意:“大模型 改变 软件开发” → [1024, 358, 2718]

2.2 词向量

token编号只是“身份证号”,本身不含语义。Embedding层维护一张可学习的查找表,把每个编号映射为一个高维向量。可以把它理解为:每个词在模型的“语义空间”里有一组坐标,语义相近的词坐标彼此接近,“猫”与“狗”的距离远小于“猫”与“微积分”的距离。

  1. # 概念示意(非真实接口)
  2. token_ids = [1024, 358, 2718] # 分词结果
  3. x = embedding_table[token_ids] # 形状 [seq_len, d_model]

这些向量会随训练不断调整,最终携带丰富的语义与语法信息,成为整个网络的输入基础。

三、核心引擎:注意力机制,让模型学会“回头看”

3.1 问题:一词多义与长距离依赖

“苹果发布了新手机”和“我吃了一个苹果”里的“苹果”含义不同;“它把书放回书架,然后锁上了门”里的“它”指代谁,必须回看前文。如何让模型在处理每个词时动态吸收上下文信息?答案是注意力。

3.2 Q、K、V:一次可训练的“查询—检索—汇总”

注意力可以类比句子内部的检索系统。每个token的向量经过三个不同的线性变换,生成三种角色:

  • Query(查询):当前词“我想找什么”;
  • Key(键):每个词对外公示的“内容标签”;
  • Value(值):每个词真正携带的信息本体。

当前词拿自己的Query与所有位置的Key逐一计算相似度得分,得分经softmax归一化为一组总和为1的权重,再用这组权重对所有Value加权求和。结果就是:相关性强的历史信息被大量吸收,无关信息被压低为背景噪声。

经典公式:

Attention(Q, K, V) = softmax(QK^T / √d_k) · V

其中除以√d_k并非装饰:当key维度较大时,点积的数值方差会随之放大,导致softmax输出趋于“one-hot”、梯度几乎消失;缩放把分数拉回合理区间,保证训练稳定。

  1. import numpy as np
  2. def softmax(x, axis=-1):
  3. e = np.exp(x - x.max(axis=axis, keepdims=True))
  4. return e / e.sum(axis=axis, keepdims=True)
  5. def attention(Q, K, V):
  6. d_k = Q.shape[-1]
  7. scores = Q @ K.transpose(0, 2, 1) / np.sqrt(d_k) # 相关性打分
  8. weights = softmax(scores) # 归一化为权重
  9. return weights @ V # 加权汇总信息

3.3 掩码:只准看过去,不准偷看未来

由于训练目标是“预测下一个词”,必须禁止当前词关注它后面的内容,否则模型直接“抄答案”。实现上通过因果掩码把未来位置的注意力分数置为负无穷,softmax后权重为零。这正是自回归生成得以成立的关键前提。

四、从注意力到Transformer:堆叠出深度理解

单一注意力层能力有限,完整的大模型由数十到上百层结构相同的模块堆叠而成,每个模块通常包含:

  1. 多头注意力:把向量切分到多个子空间并行计算注意力,不同“头”各自关注不同模式——有的追踪指代关系,有的捕捉语法搭配,有的负责长距离语义关联,最后拼接融合;
  2. 前馈网络(FFN):逐位置的两层全连接变换,参数量占模型大头,普遍认为承担了事实知识的存储;
  3. 残差连接与归一化:保障深层网络梯度畅通、训练稳定;
  4. 位置编码:注意力本身对词序不敏感(打乱顺序结果不变),需要额外注入位置信息,模型才能区分“猫追狗”与“狗追猫”。

随着层数加深,表示的抽象层次逐级提升:浅层偏向词法与局部语法,中层开始组合短语级语义,深层则形成面向预测任务的全局表征。“理解”并非某个开关,而是这种层级化特征组合的整体效果。

五、模型是怎么炼成的:预训练、微调与对齐

5.1 预训练

在海量清洗后的文本语料(网页、书籍、代码等)上执行“预测下一个词”,以交叉熵为损失、通过梯度下降更新全部参数。这一阶段消耗绝大部分算力,通常需要大量加速卡进行数周级别的并行训练,模型由此获得语言能力与世界知识。

5.2 指令微调

预训练后的模型只会“续写”,未必“听话”。用人工整理的“指令—回答”数据继续训练,让模型学会把输入理解为需要完成的任务,而不是简单地接话。

5.3 偏好对齐

进一步通过基于人类反馈的强化学习或直接偏好优化等业界通用方法,让模型输出更有用、更诚实、更安全。经过这三个阶段,一个“补全机器”才蜕变为日常对话中的助手形态。

5.4 推理生成

实际使用时,模型自回归地逐token生成:输出概率分布后按策略采样(如温度系数调节随机性、top-p截断候选集),并配合KV缓存等技术避免重复计算历史Key/Value,提升解码效率。这些均属于通用的解码策略与工程优化手段。

六、涌现:规模堆出来的综合能力

当参数、数据与算力跨过某个门槛后,仅靠“猜下一个词”训练出的模型,会表现出未被显式训练过的能力:

  • 上下文学习:不更新参数,仅凭提示词中的几个示例就能完成新任务;
  • 思维链推理:在提示中要求“一步步思考”,复杂问题的正确率显著提升;
  • 跨任务泛化:翻译、摘要、代码生成、多轮对话等能力在同一模型上同时出现。

业界常用缩放定律描述这种规律:在合理配置下,模型损失随参数、数据与算力的增加呈现可预测的下降趋势。涌现可以理解为:当“下一词预测”的准确度足够高,为达成它而内部学到的中间能力(语法、知识、逻辑)开始“溢出”为可观察的通用技能。

七、认知边界:它仍然不是“懂”

保持清醒同样重要:

  • 幻觉:模型优化的是“像下一个词”,而不是“真”,在知识盲区可能生成流畅但错误的内容;
  • 缺乏真实校验:它从文本统计规律中学习世界,没有与物理世界的直接交互验证;
  • 上下文有限:注意力计算量随序列长度增长,超长上下文带来成本与效率挑战;
  • 知识时效性:训练数据存在截止时间,新知识常需借助检索增强生成(RAG,一种结合外部知识库检索与生成的通用技术方案)等手段补充。

结语

回顾全文,LLM的原理链条可以压缩成一句话:把语言切成token并映射为向量,用多层注意力网络在每个位置动态聚合上下文信息,以“预测下一个词”为目标在海量文本上训练,再经指令微调与偏好对齐塑造成可用的助手;当规模足够大时,综合能力随之涌现。对开发者而言,理解这条主线比记住任何名词都更有价值——它决定了你如何设计提示词、如何评估模型输出,以及如何判断哪些业务场景适合交给大模型、哪些仍需传统工程方案兜底。