自从 ChatGPT 横空出世以来,"语言大模型"这个词几乎一夜之间走进了每个人的生活。无论是写文案、读论文、查资料还是写代码,这些模型似乎都能信手拈来。但当我们惊叹于它们输出质量的同时,一个最根本的问题常常被忽略——大模型到底是怎么"说话"的?

答案出乎意料地简单:它在玩接龙。它并不像人类那样先在脑海里组织好一整段话,再把整段话说出来;它每次只看自己已经说过的内容,然后预测下一个最可能出现的字或词。这个看起来弱智的"接话尾"游戏,正是今天 GPT 强大能力的根源。本文将带你从最底层的语言学争论一直走到 Transformer 架构,把这看似简单的一句话彻底拆开。

大模型的说话方式:接话尾 vs 组织语言

人类在说话时,通常是先在脑海中构建一个完整的意思,再选用合适的词汇和句式把它表达出来。但大模型完全不同——它的做法是每次接话尾,脚踩西瓜皮划到哪里算哪里。这意味着大模型并没有完全模仿人类的思维方式,却又可以完成几乎任何一个语言任务。它是如何习得人类语言规律的呢?

我们来看一个"句子接龙":给出"我想……",很明显下一个字应该是"太";接上"太子……"之后呢?没有更多上下文,填"美""抽象"都说得过去。但如果我们把完整的语境都告诉模型——比如"我很欣赏一位朋友的高尚品德,我想起一句古诗——我想……太子……"——那下一个字就只能是"美"。这就是大模型生成语言的方式:基于已有上文,预测下一个 token。

完形填空式的生成

某种意义上,大模型一直在努力地接话,和做完形填空一样。这种生成思路和人类的语言生成方式有非常明显的不同,但它一样可以生成出非常逼真的语言。所以这个"接龙游戏"看似简单,背后却承载着对整个语言规律的建模——模型必须真的"懂"语言,才能在每一步接出最合理的下一个词。

语言的本质规律:token 序列与信息传递

那大模型预测下一个词时,"语言规律"到底是什么?答案并不是语法。语言规律的本质在于如何传递信息和意义。不同的语言、不同的词汇都只是符号,专业的说法叫做 token。

语言的规律本质上就是理解每个 token 在现实世界中对应的含义,以及它们以什么样的内在规律一个接一个地出现。这种出现的序列整体传递了一个什么意思。所以语言模型,就是一个能描述"tokens 按内在规律序列出现"的统计/计算结构。

语言模型的精确定义

严格来说,语言模型 = 一个能给出"在上下文 X 下,下一个 token 是什么"概率分布的函数。它的能力,决定了我们能不能说出从来没有出现过的句子,又让所有人都能听懂。只要有了它,即使这个世界上从来没有出现过某个特定的句子,我们仍然可以说出它来,并且让所有人都能理解其中的含义——这就是语言的力量。

某种意义上,连语法本身也是一种"语言模型"——它定义了"什么样的 token 排列是符合规则的",从而约束了下一个 token 出现的范围。但语法规则是僵硬的,而真实的语言充满了灵活性、隐喻和造新词,这正是语法作为语言模型的局限所在。

语法建模的失败:Chomsky 反例

上世纪五六十年代,主流语言学家曾尝试用语法树和规则让机器说话。这条路看似自然——先把语法搞清楚,机器不就会"说话"了吗?当时的人们相信,只要把"主谓宾定状补"这些规则穷举出来,机器就能生成任何合理的句子。

然而一句经典反例击碎了这种幻想:"Colorless Green Ideas Sleep Furiously"——无色的绿色点子狂暴地睡觉。这是一句完全符合英语语法的句子(主谓宾搭配正确),却狗屁不通。这说明,语法不足以描述一个语言的本质。

乔姆斯基当年提出这个反例,本意是为了反驳概率/统计方法,认为机器必须靠语法才能理解语言。但恰恰是这个反例,最终证明了纯语法路线的死路:人类能轻松判定"合语法",却也能轻松判定"无意义",这两件事根本无法靠语法树统一。语法只是规定了一些最基本的规则,它本身并没有理解词语以及将它们连缀成有意义的句子的能力。

于是,"语法方法"这条路线在自然语言处理领域逐渐式微。真正让语言模型起飞的,是另一条完全不同的路——统计语言模型。

统计语言模型的崛起:从输入法联想到 GPT

既然语法不够用,那换一个思路:不去硬写规则,而是从大量真实文本中统计"上一个词出现后,下一个词最可能是什么"。这就是统计语言模型的核心思想。正是统计语言模型,才带来了今天 GPT 的强霸。

N-gram 模型

最朴素的统计语言模型叫 N-gram Model:只看前 N 个相邻词来预测下一个词。当 N=1 时,模型只考虑当前字本身的频率,比如"我"后面最常接的字是什么——这就和你用输入法时一直无脑选第一项一样,看似在"打字",但连起来往往是语无伦次的。

ngram-mental-model.txt
One-gram Model:  P(下一个词) ≈ 频率最高的搭配
Two-gram Model:  P(w_i | w_{i-1}) = count(w_{i-1}, w_i) / count(w_{i-1})
N-gram Model:    P(w_i | w_{i-N+1..i-1}) = 统计前 N-1 个词的共现频率
N-gram 模型的致命缺陷是上下文窗口 N 太小——N 越大,组合数指数级爆炸,很快算不动;但 N 太小又无法捕捉长程依赖。这就是为什么输入法一直选第一项会写出乱句:它根本没看到完整的上文。

早在 GPT 之前,人类就已经试过很多不同的预测算法,比如隐马尔可夫模型、循环神经网络(RNN)以及 LSTM 等等。它们都在尝试解决同一个问题:怎么让"上一个词到下一个词"的预测变得更准、上下文窗口变得更大。但直到 Transformer 出现,这件事才真正被"算明白"。

GPT 解密:Generative Pretrained Transformer

终于轮到 GPT 登场。GPT 这三个字母各自承担了一部分定义,缺一不可:

G = Generative,生成式任务,输出自然语言。P = Pretrained,通过"预测下一个词"这一目标在海量文本上预训练。T = Transformer,所用的深度学习模型架构。三者结合,就是 GPT。

Next Token Prediction:核心中的核心

GPT 内部最核心的运作机制叫 Next Token Prediction:根据已有上文,一次预测并输出下一个 token,再把这个新 token 接进上文,重复以上步骤直到生成结束。换句话说,GPT 写一整篇文章的过程,等价于"几万次接话尾"。

gpt-pretrain-objective.py
# 简化版的 GPT 预训练目标
for text in training_corpus:
    tokens = tokenizer.encode(text)
    for i in range(len(tokens)):
        context = tokens[:i]            # 上文
        target  = tokens[i]              # 下一个 token
        pred    = model.predict(context)  # 模型预测
        loss    = cross_entropy(pred, target)
        loss.backward()                  # 反向传播,更新参数

GPT 的训练过程其实非常"粗暴":给它一篇文章,把每个位置的 token 盖住,让它预测这个被盖住的 token 是什么。预测对了就算学会,预测错了就更新参数。这个过程被形象地比喻为"钻头不管屁股"——只看眼前的局部,疯狂抠细节。

大家千万不要小看这个简单的接龙游戏——只靠训练"预测下一个字",模型可以学习到难以置信的语言的深层规律,直到理解整个语言,像人类一样说话,还能解决问题。这就是"涌现"(emergence)的魅力:底层目标极其简单,但规模上去之后,能力会出现阶跃式跃迁。

Transformer 架构让模型可以并行处理超长上下文,远超 RNN/LSTM 的能力上限;同时它具备强大的"举一反三"能力,能从训练数据中学到 token 之间复杂的内在规律。正是"统计语言模型 + Transformer + 海量数据 + 大算力"这一组合,造就了今天 GPT 的"强霸"。

结论

GPT 并不神秘——它的全部秘密浓缩在 Next Token Prediction 这一句话里:从海量文本中学"上一个词到下一个词"的概率分布,再把这个动作无限重复。本质上,它和当年朴素的输入法联想是同一类问题,区别只在于"模型"和"训练数据"的规模被推到了极致。

理解了这一点,你就能看懂 GPT 后续几乎所有的能力——写代码、做推理、扮演角色——都是"预测下一个 token"这一底层机制在不同上下文中的自然展开。这也是为什么 prompt 工程、上下文学习和思维链这些技巧会如此重要:它们本质上都是在替大模型构造一个"更好的上文",让"下一个 token"的预测变得更准。