1.2 从查表到神经网络:语言模型简史
还没玩过 1.1 节的迷你语言模型?先回去玩五分钟再来——本节讲的就是它的家族史。
查表时代:n-gram 的五十年
1.1 节那个「数频率、查表格」的做法有个正式名字:n 元语法模型。别看它简陋,从上世纪五十年 代到 2010 年前后,它统治了语音识别和机器翻译几十年——你早年用过的翻译软件、输入法联想,核心都是它。
但它有一个绕不过去的死穴。实验里你已经亲眼见过:上文稍微长一点,模型就开始喊「⚠️ 没见过这个上文」。算笔账就明白了:
- 常用汉字约 3500 个;
- 看 2 个字的上文:约 1200 万种组合;
- 看 3 个字:约 430 亿种;
- 看 10 个字:宇宙里的原子都不够存这张表。
上文每加一个字,表的规模就要乘上几千倍,而语料再大也只能覆盖其中极小一角。绝大多数格子永远是空的——这就是数据稀疏。查表模型注定近视。
转折点:把词变成向量
2003 年,Yoshua Bengio 团队提出神经概率语言模型:不再查表,而是先把每个词变成一串数字(词向量),再用神经网络从向量算出下一个词的概率。
这一步为什么是革命?因为它让模型第一次能举一反三。查表模型眼里,「猫在毯子上睡觉」和「狗在毯子上睡觉」是两个毫不相干的条目,见过前者对预测后者毫无帮助;而在向量空间里,「猫」和「狗」离得很近,模型从「猫」那句学到的规律自动迁移给了「狗」。数据稀疏的死穴,被「相似的词共享经验」这一招填掉了大半。(词向 量的神奇之处,1.4 节有个专门的实验。)
2013 年的 word2vec 把词向量本身做成了爆款:人们发现这些纯靠数据学出来的向量居然会做类比题——「国王 − 男人 + 女人 ≈ 王后」。
看得更远:RNN,然后是 Transformer
词向量解决了「举一反三」,但「看得远」还没解决。2010 年代中期的主力是循环神经网络(RNN/LSTM):像人读书一样从左到右逐词读入,把读过的内容压缩进一段「记忆」。它理论上能看任意长的上文,但有两个大毛病——必须按顺序算(没法让几千块 GPU 同时开工),以及记忆会随距离衰减(读到第 500 字,开头讲了什么早忘了)。
2017 年,Google 的一篇论文《Attention Is All You Need》提出了 Transformer:干脆抛弃「从左到右的记忆」,让每个词通过注意力机制直接回看上文里的任何一个词,而且整段文本可以并行计算。看得远、算得快,两个毛病一次解决——这就是今天所有主流大模型的骨架(第 3 章整章拆它)。