简介:本文系统拆解大语言模型(LLM)的核心工作原理:从分词与词向量如何把语言变成数字,到注意力机制如何捕捉上下文关联,再到Transformer架构、预训练与对齐训练的完整链路,最终解释“预测下一个词”这一朴素目标为何能涌现出翻译、推理、写代码等综合能力,帮助读者建立完整清晰的认知框架。
许多初学者以为大模型内部藏着某种“理解语言”的神秘机制,实际情况要朴素得多:LLM的核心任务只有一个——给定前面的文本,预测下一个token的概率分布。
用数学语言描述,模型建模的是条件概率:
P(xt | x_1, x_2, …, x{t-1})
即已知前 t-1 个token,计算第 t 个token的概率。生成一整段话,就是把这个过程循环执行:每生成一个词,把它拼回输入,再预测下一个词,直到产出结束符。
这个目标看似简单,却有两个关键特性:
能力的种子,就埋在这个朴素的训练目标里。
模型不认识汉字和英文单词,只认识数字。因此第一步是分词:把原始文本切成一串token(可能是字、词、子词或符号),并映射为整数编号。现代大模型普遍采用基于统计合并的子词切分算法(如BPE这类通用算法),在“字符太碎”与“整词表太大”之间取得平衡:高频词保持完整,低频词拆成子词,未见过的词也能退化到字符级处理,保证任何输入都可编码。
概念示意:“大模型 改变 软件开发” → [1024, 358, 2718]
token编号只是“身份证号”,本身不含语义。Embedding层维护一张可学习的查找表,把每个编号映射为一个高维向量。可以把它理解为:每个词在模型的“语义空间”里有一组坐标,语义相近的词坐标彼此接近,“猫”与“狗”的距离远小于“猫”与“微积分”的距离。
# 概念示意(非真实接口)token_ids = [1024, 358, 2718] # 分词结果x = embedding_table[token_ids] # 形状 [seq_len, d_model]
这些向量会随训练不断调整,最终携带丰富的语义与语法信息,成为整个网络的输入基础。
“苹果发布了新手机”和“我吃了一个苹果”里的“苹果”含义不同;“它把书放回书架,然后锁上了门”里的“它”指代谁,必须回看前文。如何让模型在处理每个词时动态吸收上下文信息?答案是注意力。
注意力可以类比句子内部的检索系统。每个token的向量经过三个不同的线性变换,生成三种角色:
当前词拿自己的Query与所有位置的Key逐一计算相似度得分,得分经softmax归一化为一组总和为1的权重,再用这组权重对所有Value加权求和。结果就是:相关性强的历史信息被大量吸收,无关信息被压低为背景噪声。
经典公式:
Attention(Q, K, V) = softmax(QK^T / √d_k) · V
其中除以√d_k并非装饰:当key维度较大时,点积的数值方差会随之放大,导致softmax输出趋于“one-hot”、梯度几乎消失;缩放把分数拉回合理区间,保证训练稳定。
import numpy as npdef softmax(x, axis=-1):e = np.exp(x - x.max(axis=axis, keepdims=True))return e / e.sum(axis=axis, keepdims=True)def attention(Q, K, V):d_k = Q.shape[-1]scores = Q @ K.transpose(0, 2, 1) / np.sqrt(d_k) # 相关性打分weights = softmax(scores) # 归一化为权重return weights @ V # 加权汇总信息
由于训练目标是“预测下一个词”,必须禁止当前词关注它后面的内容,否则模型直接“抄答案”。实现上通过因果掩码把未来位置的注意力分数置为负无穷,softmax后权重为零。这正是自回归生成得以成立的关键前提。
单一注意力层能力有限,完整的大模型由数十到上百层结构相同的模块堆叠而成,每个模块通常包含:
随着层数加深,表示的抽象层次逐级提升:浅层偏向词法与局部语法,中层开始组合短语级语义,深层则形成面向预测任务的全局表征。“理解”并非某个开关,而是这种层级化特征组合的整体效果。
在海量清洗后的文本语料(网页、书籍、代码等)上执行“预测下一个词”,以交叉熵为损失、通过梯度下降更新全部参数。这一阶段消耗绝大部分算力,通常需要大量加速卡进行数周级别的并行训练,模型由此获得语言能力与世界知识。
预训练后的模型只会“续写”,未必“听话”。用人工整理的“指令—回答”数据继续训练,让模型学会把输入理解为需要完成的任务,而不是简单地接话。
进一步通过基于人类反馈的强化学习或直接偏好优化等业界通用方法,让模型输出更有用、更诚实、更安全。经过这三个阶段,一个“补全机器”才蜕变为日常对话中的助手形态。
实际使用时,模型自回归地逐token生成:输出概率分布后按策略采样(如温度系数调节随机性、top-p截断候选集),并配合KV缓存等技术避免重复计算历史Key/Value,提升解码效率。这些均属于通用的解码策略与工程优化手段。
当参数、数据与算力跨过某个门槛后,仅靠“猜下一个词”训练出的模型,会表现出未被显式训练过的能力:
业界常用缩放定律描述这种规律:在合理配置下,模型损失随参数、数据与算力的增加呈现可预测的下降趋势。涌现可以理解为:当“下一词预测”的准确度足够高,为达成它而内部学到的中间能力(语法、知识、逻辑)开始“溢出”为可观察的通用技能。
保持清醒同样重要:
回顾全文,LLM的原理链条可以压缩成一句话:把语言切成token并映射为向量,用多层注意力网络在每个位置动态聚合上下文信息,以“预测下一个词”为目标在海量文本上训练,再经指令微调与偏好对齐塑造成可用的助手;当规模足够大时,综合能力随之涌现。对开发者而言,理解这条主线比记住任何名词都更有价值——它决定了你如何设计提示词、如何评估模型输出,以及如何判断哪些业务场景适合交给大模型、哪些仍需传统工程方案兜底。