0 · 导读:一个目标函数的七十年
下一词预测(next-token prediction,NTP;也叫自回归语言建模、causal language modeling)是自回归语言模型的训练目标,也是 GPT 系列从 2018 年至今唯一的预训练目标。一句话定义:
给定前文 x1,…,xtx_1,\dots,x_tx1,…,xt,预测下一个 token xt+1x_{t+1}xt+1 在整个词表上的概率分布;训练 = 让模型给语料中真实出现的下一个 token 打高分(最小化交叉熵);推理 = 反复从模型输出的分布里采样,把采到的 token 拼回输入,再预测下一个。
它的技术史可以压缩成一条主线:1948 年 Shannon 给出交叉熵;1980 年代 n-gram 用计数实现它;2003 年 Bengio 用前馈网络取代计数;2010 年 RNN 把上下文压进隐状态;2017 年 Transformer 让上下文既无界又并行;2018 年 GPT 把它确立为"唯一目标 + 无监督预训练";2020 年后 scaling law 证明这个目标的损失可以随规模平滑下降,且下降本身就换来通用能力。
九个模块的逻辑链:
- 定义与数学形式:链式法则如何把一个序列概率拆成一串条件概率;softmax 参数化长什么样;为什么"训练并行、推理串行"是同一个目标的两幅面孔。
- 损失函数:最大似然估计为什么恰好等于最小化交叉熵;困惑度 PPL=eL\mathrm{PPL}=e^{\mathcal{L}}PPL=eL 的信息论含义(有效候选数);softmax-交叉熵的梯度为什么是 p−yp-yp−y——和逻辑回归的残差同构。
- 技术谱系:每一代模型到底改进了什么;Penn Treebank 词级 PPL 从 141 走到 58,再在子词口径跌进个位数的完整账。
- 训练机制:teacher forcing 为什么能让训练一次前向算完所有位置;标签平移的 off-by-one 为什么是从零实现的第一大 bug;exposure bias 是什么、怎么缓解。
- 解码策略:temperature / top-k / top-p 统一为"重加权 → 截断 → 重归一化"三步;beam search 的退化与 nucleus sampling 的解药。
- 为什么有效:压缩即智能的信息论论证;scaling law 的预言能力;in-context learning 作为隐式贝叶斯推断;以及诚实的边界——NTP 学不到什么。
- 工程实现:numpy 字符级 bigram 从零训练(含 MLE 闭式解与梯度下降两种解法);PyTorch 最小训练循环;词表大小如何进入 softmax 账单。
- 评估与局限:PPL 的正确算法;PPL 低 ≠ 模型好(三个脱节案例);文本退化的机理。
- 误区与 P0 清单:七条常见误区;七条可执行的验收清单。
相关篇章(本系列):neural-networks-deep-dive(softmax 与前馈网络)、nn-training-deep-dive(交叉熵与反向传播)、logistic-regression-deep-dive(p−yp-yp−y 残差与凸性)、rnn-deep-dive(BPTT 与循环网络)、llm-deep-dive(BPE / 注意力 / KV cache / RLHF)、bert-pretraining-deep-dive(双向掩码目标与 NTP 的对比)。
1 · 定义与数学形式
1.1 一句话定义与四个要素
| 要素 | 内容 | 反例 |
|---|---|---|
| 自回归分解 | 序列概率按链式法则拆成一串条件概率 | 不用链式法则的模型(如自编码器) |
| 单向可见 | 预测 xt+1x_{t+1}xt+1 只能用 x≤tx_{\le t}x≤t | 双向掩码 LM(BERT)能"偷看"后文 |
| 分布输出 | 输出是词表 V\mathcal{V}V 上的概率分布,不是单个词 | 分类头输出单个类别 |
| 统一目标 | 训练、评估(PPL)、推理(采样)共用同一个分布 | 训练用 CE、评估用 accuracy 的两段式 |
注意术语:token ≠ 词。现代模型输出的是子词(subword)级别的分布,词表大小 VVV 从 3 万到 25 万不等(详见 llm-deep-dive Q2)。"下一词预测"是历史叫法,下文 token 与词混用时指同一个东西——分布的下一个条目。
1.2 链式法则分解
任意离散序列的联合概率,按概率链式法则可以精确拆成条件概率之积——这个恒等式没有任何近似,它是全部自回归建模的地基:
P(x1,…,xT) = ∏t=1TP (xt∣x1,…,xt−1)P(x_1,\dots,x_T) \;=\; \prod_{t=1}^{T} P\!\left(x_t \mid x_1,\dots,x_{t-1}\right)P(x1,…,xT)=t=1∏TP(xt∣x1,…,xt−1)
NTP 要做的就是给右边每一个因子一个参数化模型 PθP_\thetaPθ。两个直接后果:
- 训练信号免费:不需要任何人工标注,语料本身就是监督信号(“输入 = 前文,标签 = 下一个 token”),这是"自监督"的全部含义;
- 上下文天然变长:第 ttt 个因子的条件包含全部前文,模型自己决定"看多远"——从 n-gram 的固定窗口到 Transformer 的有效无界。
1.3 参数化:从分布到 logits
模型主体 fθf_\thetafθ 把前文映射成一个 VVV 维向量(logits),softmax 把它变成分布:
zt=fθ(x1,…,xt−1)∈RV,Pθ (xt=v∣x<t)=ezt,v∑v′∈Vezt,v′z_t = f_\theta(x_1,\dots,x_{t-1}) \in \mathbb{R}^{V}, \qquad P_\theta\!\left(x_t = v \mid x_{<t}\right) = \frac{e^{z_{t,v}}}{\sum_{v' \in \mathcal{V}} e^{z_{t,v'}}}zt=fθ(x1,…,xt−1)∈RV,Pθ(xt=v∣x<t)=∑v′∈Vezt,v′ezt,v
取对数得到训练直接使用的形式:
logPθ(xt∣x<t)=zt,xt−log∑v′ezt,v′=zt,xt−logsumexp(zt)\log P_\theta(x_t \mid x_{<t}) = z_{t,x_t} - \log\sum_{v'} e^{z_{t,v'}} = z_{t,x_t} - \mathrm{logsumexp}(z_t)logPθ(xt∣x<t)=zt,xt−logv′∑ezt,v′=zt,xt−logsumexp(zt)
注意 softmax 的平移不变性:zzz 加减任何常数不改变分布——这是数值稳定性的来源(见 4.5)。fθf_\thetaf

本文系统解析下一词预测(NTP)这一自回归语言模型的核心训练目标,涵盖其数学定义、最大似然与交叉熵损失的等价性、技术演进脉络(从n-gram到Transformer)、teacher forcing与标签平移等关键训练机制、temperature/top-p等解码策略,以及PPL评估原理与局限。重点阐明NTP为何能支撑通用智能涌现,并指出其在逻辑推理、回溯修正与事实准确性上的固有盲区。
8376

被折叠的 条评论
为什么被折叠?



