下一词预测(Next-token Prediction)深度解析:从 N-gram 到 GPT 的唯一目标函数

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

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 证明这个目标的损失可以随规模平滑下降,且下降本身就换来通用能力。

九个模块的逻辑链:

  1. 定义与数学形式:链式法则如何把一个序列概率拆成一串条件概率;softmax 参数化长什么样;为什么"训练并行、推理串行"是同一个目标的两幅面孔。
  2. 损失函数:最大似然估计为什么恰好等于最小化交叉熵;困惑度 PPL=eL\mathrm{PPL}=e^{\mathcal{L}}PPL=eL 的信息论含义(有效候选数);softmax-交叉熵的梯度为什么是 p−yp-yp−y——和逻辑回归的残差同构。
  3. 技术谱系:每一代模型到底改进了什么;Penn Treebank 词级 PPL 从 141 走到 58,再在子词口径跌进个位数的完整账。
  4. 训练机制:teacher forcing 为什么能让训练一次前向算完所有位置;标签平移的 off-by-one 为什么是从零实现的第一大 bug;exposure bias 是什么、怎么缓解。
  5. 解码策略:temperature / top-k / top-p 统一为"重加权 → 截断 → 重归一化"三步;beam search 的退化与 nucleus sampling 的解药。
  6. 为什么有效:压缩即智能的信息论论证;scaling law 的预言能力;in-context learning 作为隐式贝叶斯推断;以及诚实的边界——NTP 学不到什么。
  7. 工程实现:numpy 字符级 bigram 从零训练(含 MLE 闭式解与梯度下降两种解法);PyTorch 最小训练循环;词表大小如何进入 softmax 账单。
  8. 评估与局限:PPL 的正确算法;PPL 低 ≠ 模型好(三个脱节案例);文本退化的机理。
  9. 误区与 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∏T​P(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′∈V​ezt,v′​ezt,v​​

取对数得到训练直接使用的形式:

log⁡Pθ(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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reset2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值