--- import BaseLayout from "@/layouts/BaseLayout.astro"; import LanguageModelHistoryLab from "@/components/LanguageModelHistoryLab.astro"; const toc = [ ["00", "compass", "先拿到八张账"], ["01", "prediction", "语言为什么能被预测"], ["02", "chain-rule", "整句话怎样拆成小题"], ["03", "information", "熵、损失与困惑度"], ["04", "units", "字、词、子词与字节"], ["05", "ngram", "N-gram 的天才与局限"], ["06", "smoothing", "零概率与平滑"], ["07", "kneser-ney", "Kneser–Ney 的关键转弯"], ["08", "representations", "离散类别到连续向量"], ["09", "bengio", "神经概率语言模型"], ["10", "embeddings", "Word2Vec 与静态表示"], ["11", "recurrent", "RNN:把历史带在身上"], ["12", "gradients", "为什么遥远信息会消失"], ["13", "lstm", "LSTM 的受控记忆通路"], ["14", "rnnlm", "RNNLM 的能力与系统税"], ["15", "seq2seq", "从续写到序列转导"], ["16", "attention-bridge", "Attention:按步重新读取"], ["17", "economics", "词表、评测与计算"], ["18", "modern", "K3 / DeepSeek 的当代回声"], ["19", "synthesis", "一条完整因果链"], ["↳", "papers", "33 个关键节点"], ]; const ledgers = [ { id: "UNIT", title: "预测单位", question: "一次预测什么?", path: "字母 → 词 → 子词 → 字节", trap: "Token 不是天然语言单位" }, { id: "INFO", title: "概率与信息", question: "怎样衡量猜得好?", path: "链式法则 → NLL → PPL", trap: "困惑度不等于理解力" }, { id: "CONTEXT", title: "上下文", question: "条件分布看多远?", path: "Markov → 窗口 → 状态", trap: "可访问不等于记得住" }, { id: "SPARSE", title: "稀疏性", question: "没见过怎么办?", path: "折扣 → 回退 → 插值", trap: "平滑不只是“加一”" }, { id: "REP", title: "分布式表示", question: "相似词怎样共享?", path: "类别 → 矩阵 → Embedding", trap: "静态向量不懂语境" }, { id: "MEMORY", title: "循环记忆", question: "历史怎样穿过时间?", path: "SRN → 梯度 → LSTM / GRU", trap: "门控不等于无限记忆" }, { id: "SEQ", title: "序列转导", question: "怎样条件生成另一序列?", path: "Encoder → 瓶颈 → Attention", trap: "对齐权重不等于解释" }, { id: "COST", title: "评测与成本", question: "什么路线真的跑得动?", path: "Softmax → Benchmark → 并行", trap: "只看架构会漏掉系统因果" }, ]; const eras = [ { year: "1948–1951", label: "概率语言观", detail: "Shannon 把语言视作带上下文的随机符号源,预测与信息量连在一起。" }, { year: "1953–2001", label: "计数模型", detail: "N-gram 让估计可行;Good–Turing、Katz、Kneser–Ney 修补稀疏性。" }, { year: "1990–2013", label: "分布与循环", detail: "连续表示跨相似词共享参数,RNN 用固定状态携带变长历史。" }, { year: "1997–2014", label: "受控记忆", detail: "长程梯度困难被显式化,LSTM / GRU 为状态提供门控通路。" }, { year: "2014–2015", label: "条件生成", detail: "Seq2Seq 统一变长映射,也把固定向量瓶颈暴露到台前。" }, { year: "2014–2017", label: "可微检索", detail: "Attention 让 decoder 每一步重读源序列,最终从桥梁变成主体。" }, { year: "2017 →", label: "规模化主干", detail: "Transformer 接过条件分布计算;next-token 目标仍持续到 K3 与 DeepSeek。" }, ]; const keyPapers = [ { year: 1948, title: "A Mathematical Theory of Communication", who: "Shannon", url: "https://doi.org/10.1002/j.1538-7305.1948.tb01338.x", role: "熵与随机源", tier: "主干" }, { year: 1951, title: "Prediction and Entropy of Printed English", who: "Shannon", url: "https://doi.org/10.1002/j.1538-7305.1951.tb01366.x", role: "已知前文预测下一字母", tier: "主干" }, { year: 1953, title: "The Population Frequencies of Species…", who: "Good", url: "https://doi.org/10.1093/biomet/40.3-4.237", role: "未见概率质量", tier: "主干" }, { year: 1977, title: "Perplexity—a measure of the difficulty…", who: "Jelinek et al.", url: "https://doi.org/10.1121/1.2016299", role: "困惑度术语史", tier: "地图" }, { year: 1987, title: "Estimation of Probabilities from Sparse Data…", who: "Katz", url: "https://ieeexplore.ieee.org/document/1165125", role: "折扣与回退", tier: "主干" }, { year: 1990, title: "Finding Structure in Time", who: "Elman", url: "https://doi.org/10.1207/s15516709cog1402_1", role: "简单循环状态", tier: "主干" }, { year: 1990, title: "Indexing by Latent Semantic Analysis", who: "Deerwester et al.", url: "https://doi.org/10.1002/(SICI)1097-4571(199009)41:6%3C391::AID-ASI1%3E3.0.CO;2-9", role: "全局低秩语义空间", tier: "地图" }, { year: 1992, title: "Class-Based n-gram Models of Natural Language", who: "Brown et al.", url: "https://aclanthology.org/J92-4003/", role: "离散类别共享", tier: "主干" }, { year: 1994, title: "Learning long-term dependencies with gradient descent is difficult", who: "Bengio et al.", url: "https://ieeexplore.ieee.org/document/279181", role: "长程梯度困难", tier: "主干" }, { year: 1995, title: "Improved Backing-off for M-gram Language Modeling", who: "Kneser & Ney", url: "https://doi.org/10.1109/ICASSP.1995.479394", role: "续接概率", tier: "主干" }, { year: 1996, title: "An Empirical Study of Smoothing Techniques…", who: "Chen & Goodman", url: "https://aclanthology.org/P96-1041/", role: "平滑受控比较", tier: "地图" }, { year: 1997, title: "Long Short-Term Memory", who: "Hochreiter & Schmidhuber", url: "https://doi.org/10.1162/neco.1997.9.8.1735", role: "受控误差通路", tier: "主干" }, { year: 2001, title: "A Bit of Progress in Language Modeling", who: "Goodman", url: "https://arxiv.org/abs/cs/0108005", role: "计数技术组合", tier: "地图" }, { year: 2003, title: "A Neural Probabilistic Language Model", who: "Bengio et al.", url: "https://www.jmlr.org/papers/v3/bengio03a.html", role: "表示与条件分布联合学习", tier: "主干" }, { year: 2005, title: "Hierarchical Probabilistic Neural Network Language Model", who: "Morin & Bengio", url: "https://proceedings.mlr.press/r5/morin05a.html", role: "层次输出树", tier: "主干" }, { year: 2010, title: "Recurrent neural network based language model", who: "Mikolov et al.", url: "https://www.isca-archive.org/interspeech_2010/mikolov10_interspeech.html", role: "实用 RNNLM", tier: "主干" }, { year: 2013, title: "Efficient Estimation of Word Representations in Vector Space", who: "Mikolov et al.", url: "https://arxiv.org/abs/1301.3781", role: "CBOW / Skip-gram", tier: "主干" }, { year: 2013, title: "Distributed Representations of Words and Phrases…", who: "Mikolov et al.", url: "https://proceedings.neurips.cc/paper/2013/hash/9aa42b31882ec039965f3c4923ce901b-Abstract.html", role: "负采样、子采样与短语", tier: "地图" }, { year: 2013, title: "One Billion Word Benchmark…", who: "Chelba et al.", url: "https://arxiv.org/abs/1312.3005", role: "大规模可比 LM 基准", tier: "地图" }, { year: 2014, title: "GloVe: Global Vectors for Word Representation", who: "Pennington et al.", url: "https://aclanthology.org/D14-1162/", role: "全局共现向量", tier: "地图" }, { year: 2014, title: "Learning Phrase Representations using RNN Encoder–Decoder…", who: "Cho et al.", url: "https://aclanthology.org/D14-1179/", role: "GRU 与 encoder–decoder", tier: "主干" }, { year: 2014, title: "Sequence to Sequence Learning with Neural Networks", who: "Sutskever et al.", url: "https://proceedings.neurips.cc/paper_files/paper/2014/hash/5a18e133cbf9f257297f410bb7eca942-Abstract.html", role: "深层 LSTM Seq2Seq", tier: "主干" }, { year: 2014, title: "Neural Machine Translation by Jointly Learning to Align and Translate", who: "Bahdanau et al.", url: "https://arxiv.org/abs/1409.0473", role: "软对齐打破固定向量", tier: "主干" }, { year: 2015, title: "Effective Approaches to Attention-based NMT", who: "Luong et al.", url: "https://aclanthology.org/D15-1166/", role: "global / local attention", tier: "地图" }, { year: 2016, title: "Neural Machine Translation of Rare Words with Subword Units", who: "Sennrich et al.", url: "https://aclanthology.org/P16-1162/", role: "BPE 子词路线", tier: "主干" }, { year: 2016, title: "Character-Aware Neural Language Models", who: "Kim et al.", url: "https://arxiv.org/abs/1508.06615", role: "字符组合词表示", tier: "地图" }, { year: 2016, title: "Exploring the Limits of Language Modeling", who: "Jozefowicz et al.", url: "https://arxiv.org/abs/1602.02410", role: "大规模 RNNLM", tier: "地图" }, { year: 2016, title: "Efficient softmax approximation for GPUs", who: "Grave et al.", url: "https://arxiv.org/abs/1609.04309", role: "Adaptive Softmax", tier: "地图" }, { year: 2016, title: "Language Modeling with Gated Convolutional Networks", who: "Dauphin et al.", url: "https://arxiv.org/abs/1612.08083", role: "并行卷积路线", tier: "地图" }, { year: 2017, title: "Regularizing and Optimizing LSTM Language Models", who: "Merity et al.", url: "https://arxiv.org/abs/1708.02182", role: "AWD-LSTM 强基线", tier: "地图" }, { year: 2017, title: "Attention Is All You Need", who: "Vaswani et al.", url: "https://arxiv.org/abs/1706.03762", role: "本章终点 / 下一章起点", tier: "主干" }, { year: 2024, title: "DeepSeek-V3 Technical Report", who: "DeepSeek-AI", url: "https://arxiv.org/abs/2412.19437", role: "NTP + 顺序 MTP", tier: "当代" }, { year: 2026, title: "Kimi K3 Technical Report", who: "Moonshot AI", url: "https://www.kimi.com/blog/kimi-k3", role: "统一多模态 NTP + draft bridge", tier: "当代" }, ]; ---

FOUNDATIONS / 01 LANGUAGE MODELING

今天的大模型,始于一个
看似朴素的问题

“知道前文以后,下一个符号有多难猜?”

从 Shannon 的猜字实验到 K3 的 160K 词表与统一多模态预测, 主问题没有消失。真正变化的是:预测单位、上下文函数、参数共享、记忆路径和可承受的计算成本。

LEVEL
L0 直觉 → L3 论文
LINEAGE
1948 → 2026
PRIMARY NODES
33 个一手节点
INTERACTIVE
四联机制实验
READING
约 150–190 分钟
STATUS
深度首版 · 继续逐图精读

00 EIGHT LEDGERS

先不要背模型名:拿到八张彼此独立的账

一项语言模型技术通常只改了一两张账。把它们混在一起,就会得到“Transformer 比 RNN 更聪明” 这类无法检验的叙述;把账分开,才能准确说出进步来自哪里。

{ledgers.map((ledger, index) => (
{String(index + 1).padStart(2, "0")} / {ledger.id}

{ledger.title}

{ledger.question}

{ledger.path}

易错:{ledger.trap}
))}
FACT / 事实

原论文直接写出的机制、公式、实验与限制;数字必须连同设置一起出现。

EXPLANATION / 解释

为降低门槛做的比喻和简化;必须说明它省略了什么。

INFERENCE / 推论

把旧论文放进 K3 / DeepSeek 语境后的跨时代连接,不伪装成作者原话。

先看全局年代,不把它误读成单线接力

{eras.map((era, index) => (
{era.year} {String(index + 1).padStart(2, "0")}

{era.label}

{era.detail}

))}

读图边界 多条路线长期并存:强平滑 N-gram、RNN、卷积 LM 在 Transformer 出现后仍有实际价值。 这张图是问题链,不是“后一篇彻底消灭前一篇”的胜者史。

01 PREDICTION AS A LENS

语言为什么能被预测:因为选择不是均匀的

如果每个下一个符号都完全随机,前文就没有用。真实语言恰好相反: 中文里“人工智”之后,“能”比“柜”合理得多;英语里 Q 后面常跟 U; 代码里的左括号、变量作用域、函数签名又提供更硬的约束。

CONTEXT 今天的天气很
0.46
0.25
0.14
复杂0.04

示意概率。语言模型不是先挑一个词,而是先给整个候选集合分配概率。

Shannon 1951 做的不是现代 LLM,却抓住了同一个可测问题

Shannon 让预测者在已知 preceding text 的条件下猜 next letter,再用猜测顺序估计英语的熵与冗余。 上下文越长,预测通常越容易,说明语言含有跨字符、单词乃至句子的统计约束。

PRIMARY SOURCE

Prediction and Entropy of Printed English · 1951

论文直接支持:下一字母预测、上下文、熵与冗余。它不支持“Shannon 发明了神经语言模型”。

Wiley / DOI ↗
模型学到的直接对象

条件概率

在当前上下文下,每个候选 token 有多可能。

为降低误差可能形成的内部结构

语法 · 事实 · 模式

这些规律能提高预测,因此被压进参数与激活。

目标没有自动保证的东西

真实 · 忠实 · 对齐

高似然不等于事实正确,合理解释也不保证是实际因果过程。

02 CHAIN RULE

一整句话的概率,可以拆成一串“下一步”

联合概率看似要一次理解所有词之间的关系。链式法则把它拆成许多条件概率: 先问第一个 token,再问已知第一个时第二个,再问已知前两个时第三个。

P(x₁, x₂, …, xₜ) = P(x₁) · P(x₂|x₁) · … · P(xₜ|x<ₜ) 这是概率恒等式,不是 Transformer 专属公式,也不要求神经网络。

三个经常混在一起的选择

A / MATHEMATICS

怎样分解联合概率

链式法则允许任意顺序;从左到右只是其中一种。

B / OBJECTIVE

训练预测哪一侧

因果 LM 选前缀预测下一个;BERT masked LM 选择遮住位置。

C / ARCHITECTURE

条件分布怎样计算

N-gram 查表、RNN 状态、Transformer attention 都可服务同一目标。

因此,“next-token prediction”不是一个具体架构。它是一种概率分解与训练题型; 2017 年之后真正改变的是计算 \(P(x_t|x_<t)\) 的上下文函数,以及训练它所能承受的数据和计算规模。

03 INFORMATION & METRICS

猜错多少,不用“像不像人”来量:用 surprise、NLL 与 PPL

01 / SURPRISE
I(x) = −log P(x)

正确答案概率越低,看到它时越“意外”,惩罚越大。

02 / NLL
L = −Σₜ log Pθ(xₜ|x<ₜ)

把每个正确 token 的 surprise 相加;最小化它等价于最大化序列似然。

03 / PERPLEXITY
PPL = exp(L / T)

把平均 NLL 指数化,回到“有效候选数”的直觉尺度。

手算一个两步例子

模型 A

正确 token 概率:0.50、0.50

平均 NLL = 0.693PPL = 2.00
模型 B

正确 token 概率:0.90、0.10

平均 NLL = 1.204PPL = 3.33

两个模型的平均正确概率看起来都可能“差不多”,但 log loss 会强烈惩罚第二个模型对某一步极度自信地猜错。 这正是乘法概率在 log 空间里变成加法后的效果。

困惑度比较的四个闸门

必须同测试集、同预处理、同词表/OOV 规则、最好同 Tokenizer。一个模型每个词切 1 个 token, 另一个切 3 个,原始 token PPL 不能直接当赛跑成绩。PPL 也不直接测事实性、指令遵循、推理可靠性或安全性。

为什么简单目标会诱导复杂能力

补全“牛顿在 1687 年出版了……”需要事实;补全函数体需要变量作用域和算法; 补全论证需要跟踪前提与结论。只要某种内部规律能在大量上下文中共同降低 NLL, 学到它就比逐句死记更经济。这解释“能力为何可能出现”,不构成“所有能力必然可靠”的保证。

04 PREDICTION UNIT

预测什么单位,会改变序列长度、词表税和跨语言边界

CHARACTER

字符

词表小、无大规模 OOV;序列更长,一个语义单位要走更多步。

不 / 可 / 思 / 议
WORD

序列短、语义粒度直观;词表巨大,屈折、复合词和新词不断制造 OOV。

不可思议
SUBWORD

子词

固定词表覆盖开放文本;常见片段保持完整,稀有词退回更小单元。

不可 / 思议
BYTE

字节

覆盖任何 Unicode 字符串;语义单位更碎,长非拉丁文本可能付出额外长度。

E4 / B8 / 8D / …

BPE 只做一件事:反复合并高频相邻单元

0l o w </w>

从字符/字节开始

1lo w </w>

合并高频 l + o

2low </w>

继续合并 lo + w

Sennrich 等人在 2016 年把 BPE 系统引入神经机器翻译的稀有词问题。 它是在固定词表与开放词汇之间做工程折中,不知道 morpheme,也不保证每次切分符合人类语义。

词表变大序列可能变短

但 embedding / LM head 更大,低频 token 学得少。

词表变小覆盖与共享更强

但序列变长,attention / recurrence 要处理更多步。

回看当代

DeepSeek-V3/V4 报告给出 128K byte-level BPE;K3 配置表给出 160K vocabulary。 词表规模不是“知道多少词”,而是模型在序列长度、输出计算、跨语言覆盖与训练频率之间做的接口选择。

05 COUNTING CONTEXT

N-gram 的天才:用有限后缀把不可能的统计变成可估计

完整前缀几乎永远不会原样重复。N-gram 做一个强但实用的 Markov 假设: 预测下一个词时,只看最近 \(n-1\) 个词。

P(wₜ | w₁, …, wₜ₋₁) ≈ P(wₜ | wₜ₋ₙ₊₁, …, wₜ₋₁) 左边来自链式法则;右边的有限历史是建模假设。
UNIGRAM
喜欢?

不看上下文,只看候选总体频率。

BIGRAM
喜欢?

只根据“读”估计下一词。

TRIGRAM
喜欢?

根据“喜欢 读”估计下一词。

最大似然估计只是“在这个上下文后出现了多少次”

P̂(w | h) = C(h, w) / C(h) 例如语料里“喜欢 读”出现 10 次,其中 6 次后接“书”,则 MLE 为 0.6。
短上下文统计稳定

见过很多次,但区分不了细节。

长上下文条件精确

更贴近当前句子,但几乎都没见过。

组合为什么会爆炸

词表大小为 \(V\) 时,理论上可能的 N-gram 有 \(V^n\) 种。若 \(V=50,000\), 仅 trigram 空间就有 \(1.25\times10^{14}\) 种;语料永远覆盖不了。 所以 N-gram 的核心问题不是表“放不下”这么简单,而是绝大多数格子永远没有可靠统计。

不要低估计数模型

类别模型、cache、skip-gram 特征、高阶回退和多个模型插值,让计数时代的强系统远比“数一个 bigram”复杂。 Goodman 2001 的组合实验正是提醒:技术史不是一条脆弱 baseline 被新模型轻松击倒的故事。

06 SPARSITY & SMOOTHING

“没见过”如果等于“不可能”,一句话会被一个零击穿

测试句里只要出现一个训练集未见 N-gram,最大似然会给它概率 0; 乘法链让整句概率归零,NLL 变成无穷。这显然不符合开放语言。

0.42P(我)
×
0.70P(喜欢|我)
×
0.50P(吃|喜欢)
×
0.00P(梨|吃)
= 0

平滑的共同原则:从“过度自信的已见事件”挪一点质量

01 / DISCOUNT

折扣

把低计数事件的原始概率向下修,释放概率质量。

02 / LOWER ORDER

低阶证据

高阶组合不可靠时,查看更短上下文怎样分布。

03 / REDISTRIBUTE

重新分配

把释放的质量分给未见但合理的事件,保持总和为 1。

Good–Turing:未见质量藏在“只出现一次的种类有多少”里

Good 1953 研究物种总体频率,也明确提到文学词汇。它关注 frequency of frequencies: 出现 1 次的不同事件有多少、出现 2 次的有多少。大量 singleton 意味着采样仍在不断遇到新类型, 未见总体概率质量就不该被设成 0。

Katz Backoff:高阶有证据就用高阶,没有就回退

TRIGRAM“喜欢 吃” → 梨见过且计数可靠?
YES折扣后的高阶概率

保留具体上下文优势

NO回退到 “吃” → 梨

用低阶模型分配未见质量

回退 Backoff

高阶缺失/不可靠时才转向低阶。

插值 Interpolation

不论高阶是否见过,都混合多阶概率。

Add-one

每个事件加同样伪计数,直观但常不是大词表 LM 的强方案。

07 CONTINUATION PROBABILITY

Kneser–Ney 最漂亮的一步:低阶模型不该再数同一件事

普通回退常用一个词的总体频率做低阶概率。但高频不一定代表“在新上下文里容易出现”。 “Francisco”可能出现很多次,却几乎都跟在 “San” 后面;它不该因为总频率高,就在任意前词后都有高概率。

ORDINARY UNIGRAM

总共出现多少次?

Francisco高频
Tuesday中频

会把大量 “San Francisco” 重复当成广泛适用证据。

KN CONTINUATION

跟在多少种不同上下文后?

FranciscoSan →
Tuesdayon / last / next / every / this →

Tuesday 的不同左上下文更多,因此更像一个通用续接词。

Pcontinuation(w) ∝ N₁⁺(· w) N₁⁺(· w) 表示 w 出现过的不同左上下文类型数,而不是 w 的原始 token 总数。

这不是一个小修补,而是一条建模原则:层次模型的低层不应机械重复高层证据, 而应提供高层缺失时真正互补的信息。后来的 modified interpolated Kneser–Ney 扩展折扣细节;不能把所有实用公式都倒算到 1995 原文。

08 PARAMETER SHARING

计数模型只会精确匹配;语言需要“相似但不相同”也能借力

One-hot 没有语义距离

词表里每个词占一个正交轴。猫 `[1,0,0,…]` 与狗 `[0,1,0,…]` 的点积为 0; 猫与微积分也同样为 0。ID 的大小和轴的位置只是目录安排。

eone-hot(w) ∈ {0,1}|V| 每个词一个维度,维数等于词表;不同词之间没有“更像一点”的表达空间。

分布式表示把一个概念摊到许多维度

一个词用 \(d\) 个连续数表示;一个维度参与很多词,一个词也依赖很多维度。 这使得网络对“猫”学到的某些更新,可以通过相近表示影响“狗”,从而跨未见组合泛化。

LSA / 1990全局矩阵分解

词—文档共现经 SVD 得到低维空间;没有词序与 next-token 目标。

BROWN / 1992离散类别

一个词通常归一个类别;仍是类 N-gram 的概率分解。

NEURAL LM / 2003预测中联合学习

Embedding 的好坏由它是否帮助条件概率泛化来决定。

09 NEURAL PROBABILISTIC LM

Bengio 2003:把词典、表示和条件分布放进同一个可微系统

这篇论文的历史关键不只是“用了神经网络”,而是用 distributed representation 对抗离散序列的 curse of dimensionality:相似词的向量接近,替换一个词不再让整个上下文完全失联。

端到端训练发生了什么

  1. 1

    上下文词通过同一张 embedding table 查向量,因此参数会跨所有出现位置复用。

  2. 2

    前馈网络把固定窗口映射到全词表 logits,并对正确下一词计算 NLL。

  3. 3

    梯度不仅更新网络,也更新上下文词向量;能互相替换的词受到相似训练压力。

  4. 4

    未见过的完整 N-gram 只要由相似词构成,仍可能得到合理概率,而不是只能精确回退。

SOLVED

离散共享

连续表示让相似词和相似上下文共享统计强度。

LEFT OPEN

固定窗口

看多远仍由输入长度预先规定,窗口外信息完全不可见。

LEFT OPEN

全词表 Softmax

每个样本给所有词打分,训练与推断都贵。

PRIMARY SOURCE

A Neural Probabilistic Language Model · JMLR 2003

本章固定引用四作者 JMLR 版本;不把它与 NIPS 2000 前身的作者列表混写。

JMLR ↗

10 STATIC WORD VECTORS

Word2Vec 把表示学习做得极高效,但它不是完整语言模型

CBOW
今天天气?适合散步

上下文 → 中心词

把窗口内上下文聚合,预测被遮在中间的词。

SKIP-GRAM
今天天气很好适合散步

中心词 → 周围词

给定中心词,预测窗口里的多个邻近词。

Negative Sampling 改了训练题

与其每次归一化整个词表,它把观察到的词对当正样本,再抽少量噪声词当负样本,做二分类。 这使大规模向量训练非常快,但得到的是有用表示目标,不是严格归一化的句子概率模型。

POSITIVE猫 ↔ 喵提高相容分数
NEGATIVE猫 ↔ 微积分降低相容分数
NEGATIVE猫 ↔ 发票降低相容分数

类比为什么能出现,又为什么不能神化

某些语义/语法关系会在向量空间形成近似稳定方向,于是出现 `king − man + woman ≈ queen` 一类现象。它是数据、目标与几何共同形成的经验结构, 不是一个保证所有关系都满足的符号代数系统。

STATIC EMBEDDING LIMIT
“苹果发布手机”苹果 → 同一个向量
“我吃了苹果”苹果 → 仍是同一个向量

静态词向量把多义词的用法混在一个点里;上下文化表示要等网络根据句子动态改写它。

11 RECURRENT STATE

RNN:不再规定“只能看最近 N 个词”,而是把历史滚进一个状态

hₜ = fθ(hₜ₋₁, e(xₜ))   ·   P(xₜ₊₁|x≤ₜ) = softmax(Whₜ) 同一组参数在每个时间步重复使用;状态长度固定,序列长度可变。
x₁h₁
x₂喜欢h₂
x₃h₃
x₄论文h₄

Elman 1990 的关键直觉

context units 把上一时刻 hidden activation 带回网络。隐藏状态不需要人工标注“名词”“从句边界”, 只要这些结构能帮助预测后续,训练就可能让状态组织出相应簇。

FIXED WINDOW

显式保留最近 3 个词

窗口外完全不可见;窗口内信息不压缩。

[xₜ₋₂, xₜ₋₁, xₜ]
RECURRENT STATE

把全部前缀压进 hₜ

理论上接触过全部历史;细节必须共享有限状态容量。

hₜ = fold(x₁…xₜ)

“RNN 使用任意长度上下文”只表示结构没有硬编码窗口上限,不表示任意遥远信息在数值上仍可恢复。 它把一个问题解决成了另一个问题:现在我们要问,状态更新能否在很多步后保留信号,以及梯度能否回到很早的位置。

12 LONG-TERM DEPENDENCIES

遥远信息为什么会消失:前向信号和反向梯度都要反复过同一扇门

训练 RNN 时,误差必须沿展开的时间图反向传播。跨 \(k\) 步的影响包含一串 Jacobian 矩阵乘积:

∂hₜ / ∂hₜ₋ₖ = ∏ᵢ ∂hᵢ / ∂hᵢ₋₁ 教学标量版:若每步保留 0.9,20 步后只剩 0.9²⁰ ≈ 12.2%。
|λ| < 1

消失

遥远位置几乎收不到学习信号。

|λ| ≈ 1

保持

需要一条接近恒等、又能受控读写的通路。

|λ| > 1

爆炸

数值快速放大,训练不稳定;gradient clipping 只能限制结果。

困难不只是激活函数“斜率小”

Bengio、Simard 与 Frasconi 1994 讨论的是更深的动力学与优化矛盾: 系统既要让状态对扰动稳定,才能长时间保存;又要让梯度足够敏感,才能学会何时改变状态。 把它压缩成一句“sigmoid 导致 vanishing gradient”,会丢失问题的结构。

“我在法国出生,后来辗转许多国家……所以我的母语是 ___。”
线索预测

线索必须前向穿过每个中间状态;训练误差又要沿相反方向走回去。步数就是最短路径长度。

13 GATED MEMORY

LSTM 的关键不是“记忆更大”,而是提供一条受控的近恒等通路

cₜ = fₜ ⊙ cₜ₋₁ + iₜ ⊙ c̃ₜ 如果一段时间内 fₜ 接近 1、写入很小,cell state 和梯度可以较平缓地穿过许多步。

“门”不是开关,而是 0 到 1 的连续阀门

门值由当前输入和旧隐藏状态共同计算。模型可以在数字序列里长时间保留一个标志, 遇到分隔符时清空,再在需要输出时读出。它把状态更新从“每步全盘重写”变成“选择性保留、写入和暴露”。

HISTORY CORRECTION

1997 原版 ≠ 教科书三门默认版

Hochreiter–Schmidhuber 1997 原始 LSTM 强调 constant error carousel 与输入/输出门; 现代常画的 forget gate 是后继工作加入。为了讲机制,本页画现代教学版,但不把全部结构错误归给 1997。

LSTM 仍然没有解决什么

SEQUENTIAL时间步仍串行

hₜ 依赖 hₜ₋₁,训练难把所有位置一次摊平。

CAPACITY状态仍固定大小

很长历史仍竞争有限 cell / hidden 维度。

PATH远距离仍需多步

门控改善信号,却没有建立任意位置间的一层直达边。

14 PRACTICAL RNN LANGUAGE MODELS

RNNLM 证明变长状态有真实收益,也把计算瓶颈摆上桌面

Mikolov 等 2010 把简单 RNNLM 放进语音识别任务。论文在其模型组合与任务设置下, 报告对强 backoff LM 约 50% 的 PPL 降低,以及 WSJ / NIST RT05 上约 18% / 5% 的相对 WER 降低; 同时明确指出高训练复杂度。

论文直接报告

特定设置下的相对改善

数据、混合方式、解码器与 baseline 都属于结论的一部分。

合理解释

状态捕获了固定 N-gram 以外的互补信息

cache / count model 与 RNN 仍可互补。

不能推出

所有 RNN 都比所有 N-gram 好 50%

作者数字不是跨数据、跨实现的通用常数。

输出层为什么会成为税

隐藏状态算完以后,还要对词表每个词产生 logit 并归一化。 词表有十万词,就要处理十万个候选;模型主体变快,不代表输出层免费。

FULL SOFTMAX
{Array.from({ length: 36 }).map(() => )}

每步扫描整个词表;分布严格归一化。

HIERARCHICAL

沿词树路径做二分类;成本与路径深度相关。

ADAPTIVE
高频短名单中频簇低频簇

按频率分配不同计算;降低期望成本。

2016–2017:Transformer 前夜并不是“只有 RNN”

Gated convolutional LM 证明卷积的有限感受野和并行性可以很有竞争力; AWD-LSTM 又用 DropConnect、NT-ASGD 等配方把 LSTM 做成强基线。 架构史真正比较的是质量、并行、内存、延迟和可扩展性的联立解。

15 CONDITIONAL GENERATION

从“续写一个序列”到“把一个序列变成另一个序列”

P(y | x) = ∏ₜ P(yₜ | y<ₜ, x) 目标端仍做 next-token prediction,只是每一步额外条件于源序列 x。

Cho 2014 与 Sutskever 2014 共同确立了什么

  • 输入和输出不需要同长度;
  • 不必手写每一种局部对齐或短语转换规则;
  • encoder 学表示,decoder 学条件语言模型,全部端到端训练;
  • GRU / LSTM 的门控状态帮助跨变长序列传播。

反转源序列为什么有效

NORMALA B C D → C → w x y z

A 到 w 的路径很长

REVERSEDD C B A → C → w x y z

常见对齐的最小时间距离缩短

这项技巧不增加理论容量,而是重排计算图,让相互对应的源词和目标词更近,优化更容易。 它预告了一个重要主题:信息路径长度本身就是架构属性。

THE FIXED-VECTOR BOTTLENECK

5 个词和 50 个词都要压进同样大小的 C。decoder 生成每一步时,看不到 encoder 的逐位置记忆, 只能相信 C 已经提前保存了未来每一步可能需要的一切。

16 SOFT ALIGNMENT

Attention 最初是一座桥:每生成一步,重新读取一次源序列

Bahdanau、Cho 与 Bengio 明确把 fixed-length vector 称为基本瓶颈。 新做法不是只把最后 encoder state 交给 decoder,而是保留全部 \(h_1,\ldots,h_n\),每个目标步都计算一组新的软对齐权重。

1 / SCOREeₜᵢ = a(sₜ₋₁, hᵢ)

当前 decoder 状态与每个源状态匹配。

2 / NORMALIZEαₜ = softmax(eₜ)

得到和为 1 的连续权重。

3 / READcₜ = Σᵢ αₜᵢhᵢ

每个目标步读出不同 context vector。

TARGET ↓ / SOURCE →
{["the", "black", "cat", "sat"].map((token) =>
{token}
)}
黑色的
坐下
BAHDANAU / ADDITIVE

小网络打分

query/state 与 key/encoder state 经投影、tanh 和向量打分;仍包在 RNN encoder–decoder 中。

TRANSFORMER / DOT-PRODUCT

QKᵀ 矩阵打分

scaled dot-product、多头、自注意力和位置表示属于下一章,公式不能倒写进 2014 论文。

Attention 为什么最终能从桥变成主体

  • 任意两个位置之间可以在一层内建立直接信息路径;
  • 所有位置的打分和加权读取可以写成大矩阵运算;
  • 不再要求训练沿时间步串行等待隐藏状态;
  • 同一机制既能连接 encoder–decoder,也能让序列内部位置互相读取。
注意力权重不是自动的因果解释

它展示某个头、某层、某次前向中的信息混合系数;多个层、残差、Value 表示和非线性都会继续改变结果。 “看得多”不必然等于“对最终预测因果贡献最大”。

17 EVIDENCE & ECONOMICS

一条技术路线能否成为主流,还要过词表、基准与硬件三道门

VOCABULARY TAX

输出归一化

全词表 Softmax 随 \(|V|\) 增长;hierarchical / sampled / adaptive 方法改变训练或输出结构。

SEQUENCE TAX

时间依赖

RNN 每步依赖前一步;卷积和 attention 更容易把训练摊成并行矩阵计算。

MEMORY TAX

状态与激活

固定状态省内存却压缩历史;保留逐位置表示提升检索,也增加存储和计算。

EVIDENCE TAX

公平比较

词表、预处理、数据量、ensemble 与硬件不同,单个 PPL 或 BLEU 不能脱离设置传播。

One Billion Word Benchmark 的价值与边界

Chelba 等 2013 提供接近十亿词的可重建 benchmark。在其设置下,unpruned Kneser–Ney 5-gram baseline PPL 为 67.6;组合技术报告 35% PPL 降低(约 10% cross-entropy 降低),RNN 模型最佳。 这些数字不能与不同 tokenizer、不同测试集的现代 LLM PPL 直接比较。

BASELINEPPL 67.6H ≈ ln 67.6 = 4.21 nats
35% PPL ↓
COMBINATIONPPL ≈ 43.9H ≈ ln 43.9 = 3.78 nats

35% 的 PPL 下降约对应 10% 的交叉熵下降;PPL 的指数尺度会放大视觉差异。

为什么训练吞吐改变架构命运

RNN
t1t2t3t4

序列长度就是依赖链长度;GPU 很多单元要等前一步。

CONV / ATTENTION
t1t2t3t4↓↓↓↓matrix kernels

训练时多个位置可批量计算,更符合大规模加速器。

18 MODERN ECHO

回到 K3 与 DeepSeek:主目标仍是 next-token,变化发生在“条件函数与辅助路径”

从 1951 的 next-letter predictability 到 2026 的原生多模态 MoE, 最稳妥的连续性不是“它们是同一个模型”,而是都把序列规律转成条件预测问题。

MAIN OBJECTIVE

Next-token NLL

−log P(xₜ | x<ₜ)

定义因果主干学习什么分布。

+
AUXILIARY

MTP

额外预测未来 token,增密训练信号,并可成为 speculative draft 的桥。

+
CONDITION SPACE

Multimodal

视觉 token 进入同一序列/条件接口,不是 MTP 的一种。

+
POST-TRAINING

SFT / RL

改变行为分布与任务偏好,生成仍常沿因果 token 序列展开。

DeepSeek:主 NTP 上叠一层顺序 MTP

MAIN MODELhₜxₜ₊₁标准下一 token
MTP MODULE · D=1h′ₜxₜ₊₂额外未来 token

DeepSeek-V3 报告的顺序 MTP module 保持 causal chain;预训练使用 \(D=1\), 即标准下一 token 之外再预测一个额外 token。模块可在推理时丢弃,也可服务 speculative decoding。 V4 报告继承 V3 的 MTP strategy,并给出 MTP loss weight 从 0.3 调到 0.1 的阶段变化。

K3:统一视觉/文本 NTP 与 one MTP layer 同时成立

TEXT请解释
VISION[image tokens]
TEXT这张图
同一因果 Token 流 next-token objective

K3 报告写明视觉与文本 token 交错,并在统一 next-token prediction objective 下训练; 配置表同时给出 160K vocabulary 与 one MTP layer。预训练后的 MTP layer 还能微调为 EAGLE-3 draft,在 target 冻结时学习贴近 target next-token distribution。

角色DeepSeek-V3/V4Kimi K3
主目标

因果 next-token NLL

统一视觉/文本 next-token objective

辅助预测

顺序 MTP,V3 预训练 D=1

one MTP layer

推理关系

可弃用或用于 speculative decoding

MTP → EAGLE-3 draft bridge

词表

128K byte-level BPE

160K vocabulary

不能说

“一次生成多 token 已取代自回归”

“多模态就是 MTP”

DEEPSEEK SPOTLIGHT / 为什么值得单独看

它经常保留一个古老主目标,却在训练信号、稀疏容量和系统成本上重做合同

DeepSeek 的连续价值不只是某个组件名:DeepSeekMoE 改容量账、MLA 改缓存账、 MTP 改训练信号密度、FP8 与 DualPipe 改系统账。把这些层分开,才能看清“目标没变”与“训练体系大变”如何同时成立。

进入 DeepSeek 专题 →

19 SYNTHESIS

把四次技术转弯亲手验证,再合成一条完整因果链

01

序列可分解

链式法则把整段概率拆成逐步条件预测。

02

完整历史不可计数

N-gram 用有限后缀换取可估计性。

03

组合仍极度稀疏

折扣、回退与 continuation probability 处理未见事件。

04

精确符号不能柔性共享

Embedding 让相似词在连续空间共享参数。

05

固定窗口看不远

RNN 把变长前缀滚入固定状态。

06

重复传递让梯度衰减

LSTM / GRU 用门控通路选择性保留与写入。

07

序列到序列压缩成单向量

Attention 让每个输出步重新检索源状态。

08

桥梁成为主体

Transformer 用并行自注意力重做上下文函数;下一章从这里开始。

如果你现在能回答这十个问题,本章就真正读通了

  1. 01

    链式法则与 N-gram 的 Markov 假设有什么不同?

  2. 02

    为什么一个未见 N-gram 会让整段最大似然概率归零?

  3. 03

    Backoff 与 interpolation 的行为差别是什么?

  4. 04

    Kneser–Ney 为什么不直接用普通 unigram 频率?

  5. 05

    Bengio 2003 用连续表示解决了哪种“维数灾难”,又留下什么?

  6. 06

    Word2Vec 为什么不是完整句子语言模型?

  7. 07

    RNN 没有硬窗口,为什么仍不等于拥有无限可用记忆?

  8. 08

    LSTM 的近恒等 cell path 如何改变梯度,仍未解决什么系统瓶颈?

  9. 09

    Seq2Seq 的固定向量为何成为瓶颈,Attention 怎样按步骤解除它?

  10. 10

    K3 的统一多模态 NTP、MTP layer 与 EAGLE-3 draft 分别扮演什么角色?

NEXT / CHAPTER 02

Attention 已经出现;下一步是让它成为整个网络的主干

继续拆 Q / K / V、scaled dot-product、multi-head、causal mask、位置与 Transformer Block。

进入注意力与 Transformer →

PRIMARY PAPER CHAIN

33 个正式节点:主干负责走通,地图负责避免伪单线史

每条均链接原论文、出版社/学会页面或作者预印本。“主干”建议按顺序精读; “地图”用于理解同时代旁支与系统约束;当代报告把目标历史接回 K3 / DeepSeek。

主干 · 建议精读 地图 · 建议查阅 当代 · 报告映射