从样本窗口、右移标签、因果 mask、teacher forcing、logits、cross entropy、perplexity 到自回归生成循环,理解语言模型到底被训练成了什么
| 环节 | 它是什么 | 最关键的直觉 | 容易误解 |
|---|---|---|---|
| 样本文本 | 文档、代码、对话、网页、书籍、合成数据等序列 | 模型学习的是训练分布中的条件延续模式 | 以为模型逐条保存了答案 |
| Tokenizer | 把文本变成 token id 序列 | 训练目标发生在 token 坐标上,不是自然词坐标上 | 把“下一个词”粗略等同于“下一个 token” |
| 输入窗口 | 给模型看的前缀序列 | 每个位置都用前面 token 预测后一个 token | 以为一个样本只产生一个训练目标 |
| 右移标签 | labels 通常是 input ids 向左错一位后的目标 | 当前位置 hidden state 要预测真实的下一个 token | input 和 label 对齐错会让 loss 失真 |
| 因果 mask | 禁止当前位置 attention 到未来 token | 训练时虽然整段都在 GPU 里,但每个位置不能偷看答案 | 以为 teacher forcing 就是允许看未来 |
| Cross Entropy | 惩罚真实下一个 token 概率太低 | 模型被推向更高的真实 token logprob | 以为 loss 低就等于事实正确或会推理 |
Next token prediction 不是让模型背一整段答案,而是在每个位置用“已允许看到的前缀”去提高真实下一个 token 的概率。
| 位置 | 输入 token | 该位置允许看到 | 训练标签 | 训练含义 |
|---|---|---|---|---|
| 0 | 我 | 我 | 喜欢 | 看到“我”后预测“喜欢” |
| 1 | 喜欢 | 我 喜欢 | 学习 | 看到“我 喜欢”后预测“学习” |
| 2 | 学习 | 我 喜欢 学习 | AI | 看到前缀后预测主题 token |
| 3 | AI | 我 喜欢 学习 AI | 。 | 预测句子结束或后续延展 |
训练时常把同一段 token 同时作为输入和标签来源,只是标签整体向左错一位:输入位置 t 的目标是原序列位置 t+1。padding、prompt-only 区域、非 assistant 区域或不想训练的 token 会被 mask 掉,不参与 loss。
Teacher forcing 不是作弊,也不是让模型训练时看未来。它只是用真实前缀作为下一步预测条件;因果 mask 仍然保证每个位置看不到目标 token 本身和更后面的 token。
| 问题 | 机制 | 和 QKV 的关系 | 排查信号 |
|---|---|---|---|
| 为什么不能看未来 | attention score 在未来位置被 mask 成不可选 | Q/K 算出匹配分后,mask 在 softmax 前生效 | 训练 loss 异常低、生成异常好,怀疑 label leakage |
| 为什么能并行训练 | 每个位置的预测目标不同,但同一 forward 可一次算完 | 每层 attention 都遵守下三角可见性 | 检查 attention mask shape、padding mask 和 position ids |
| padding 怎么处理 | padding token 通常不参与 loss,也不应被有效 attention | padding mask 与 causal mask 共同决定可见区域 | ignore_index、attention_mask、packed sequence 边界 |
| 多轮对话怎么处理 | SFT 常只让 assistant token 计入 loss | user / system 仍可作为上下文,但不一定作为训练目标 | assistant-only loss、chat template、special token 对齐 |
QKV / Multi-Head Attention 解释“谁看谁、看多少、拿什么信息”;本页解释“为什么训练时每个位置只允许看过去,并用这个前缀预测下一个 token”。两者合起来,才是 decoder-only LLM 的训练核心。
| 概念 | 回答的问题 | 和 next token prediction 的关系 | 不能代表什么 |
|---|---|---|---|
| Logits | 每个候选 token 的原始分数是多少 | 每个位置输出一个 vocab 维度的分数向量 | 单个 logit 不是稳定置信度 |
| Softmax / Logprob | 真实 token 在模型分布下概率多大 | 目标 token logprob 越高,loss 越低 | 不是外部世界事实概率 |
| Cross Entropy | 模型分布离训练标签有多远 | 语言模型最常见的训练 loss | 不直接衡量指令遵循、安全或工具成功 |
| Negative Log Likelihood | 真实序列在模型下有多“不像” | 可按 token 累加成序列损失 | 不同长度序列需要归一化比较 |
| Perplexity | 模型对数据平均有多困惑 | 常用于语言建模和数据分布比较 | 不能替代任务评测和事实性评测 |
Perplexity 下降通常说明模型更会拟合某个文本分布;但一个低 perplexity 模型仍可能幻觉、拒答边界差、工具参数错或业务任务失败。
| 它能解释 | 原因 | 它解释不了 | 需要接哪一层 |
|---|---|---|---|
| 为什么模型能续写、翻译、补全代码 | 这些都可表现为条件分布下的合理后续 token | 为什么一定事实正确 | 能力边界 / 幻觉、RAG、工具校验 |
| 为什么 prompt 改几个字会变 | 条件前缀改变,下一 token 分布跟着改变 | 为什么遵循组织策略 | 指令层级、安全护栏 |
| 为什么长生成会积累错误 | 生成时后续条件包含模型自己的输出 | 为什么能做长期规划 | 推理模型、搜索规划、Agent |
| 为什么数据分布会影响能力 | 训练目标直接拟合数据里的条件模式 | 为什么模型符合人类偏好 | 后训练 / 对齐机制 |
| 为什么 logits 和解码参数重要 | 最终输出来自 token 分布的逐步选择 | 为什么产品可上线 | Eval、LLMOps、发布闸门、人工审核 |
| 症状 | 可能原因 | 先查什么 | 继续下钻 |
|---|---|---|---|
| 训练 loss 下降,但自由生成跑题 | teacher forcing 下的真实前缀训练,与生成时自回归条件不同 | 生成样本、解码参数、长答案错误累积 | 解码 / 采样 |
| loss 异常低,评测异常高 | label leakage、未来 token 可见、评测污染 | causal mask、label shift、数据去重、benchmark 泄漏 | 预训练数据污染 |
| 训练 loss 不下降 | labels 对齐错、ignore_index 错、tokenizer / vocab 不匹配 | input_ids / labels 打印、特殊 token、padding mask | 优化器 / Loss |
| SFT 后只会模板化回答 | assistant-only loss、模板数据比例或重复样本过强 | 数据多样性、格式标签、训练轮数、eval 切片 | 微调 / 对齐 |
| 低 perplexity 但事实差 | 文本分布拟合好,不代表知识可验证 | 事实样本、引用、RAG 证据、不可回答测试 | 模型评测 / Eval |
| 证据节点 | 必须记录的字段 | 用来排查什么 |
|---|---|---|
| 样本对齐 | sample_id、input_ids_hash、label_ids_hash、shift_rule、ignore_index | labels 是否右移正确,是否把未来 token 泄漏给模型? |
| Loss 覆盖 | loss_mask_hash、assistant_only_flag、masked_token_ratio、special_token_policy | 模型到底在学用户文本、助手回答、工具格式还是无意义 padding? |
| 目标切片 | bucket_name、bucket_loss、token_type、language / domain、sequence_length | 总 loss 下降时,哪些语言、领域、长度或格式切片没有学好? |
| 训练 / 推理差异 | teacher_forcing_context、generation_config_id、exposure_bias_case_id | 训练时条件很干净,生成时自回归错误为什么会滚雪球? |
| 评测连接 | perplexity_snapshot、eval_case_id、contamination_flag、trace_id | 低 perplexity 是真实能力,还是数据泄漏、模板记忆或评测污染? |
如果优化器页解释模型怎样被更新,Logits 页解释每一步怎样打分,解码页解释怎样选择输出,那么本页解释训练目标如何把“文本序列”变成“每个位置预测下一个 token”的监督信号。它是理解预训练、SFT、perplexity、幻觉、长生成退化和结构化输出稳定性的中间齿轮。