猜出下一个字,AI 就学会了“说话”?——给高中生的大语言模型原理科普
猜出下一个字,AI 就学会了“说话”?——给高中生的大语言模型原理科普
吴国锋 7/21
你有没有和 ChatGPT 聊过天?你问它“今天天气真好,适合……”,它马上接“出去走走”,甚至还会给你安排一场野餐攻略。这个过程中,AI 其实一直在做一件事:猜下一个字该是什么。
它是怎么猜的?为什么能猜得这么像模像样?这篇文章就用高中生能看懂的方式,把支撑大语言模型的那些核心思想拆开给你看。
1. 大语言模型,本质上就是一个“下一个字预测器”
“它是通过模拟人类表达的过程,来拟合人类智能。”
“说到底,就是计算下一个字的概率来决定下一个字应该说什么。”
当我们给模型一段上文,比如“昨天我去了动物园,看到了长颈”,模型会计算所有可能的下一个字(“鹿”“颈”“腿”……)分别有多大概率出现,然后选概率最高的那个输出。接着把新得到的句子当作输入,再猜下一个字,一个字一个字地“自回归”生成整段话。
用数学语言说:大语言模型就是一个函数,输入是已有文本序列,输出是“下一个字”在所有候选字上的概率分布。
2. 这个概率函数长什么样?万能近似定理来了
“那这个概率是怎么计算的呢?高中生都知道,函数 y=f(x)y = f(x)y=f(x)。”
“只不过这个函数到底是什么公式,没有人知道。没人知道,那我们是怎么做出 AI 来计算这个概率的呢?”
没错,如果非要写出一个能精确计算“在任意上文之后,下一个字是什么”的表达式,可能根本写不出来——它太复杂了。
但数学上有一条神奇的定理帮了大忙:万能近似定理(Universal Approximation Theorem)。
万能近似定理说:只要给我足够多的简单函数,把它们按一定方式组合起来,就能以任意精度模拟任何复杂函数。
打个比方:你不会用一笔画出蒙娜丽莎,但你可以用成千上万块拼图拼出她。每一个拼图片都是一个“简单函数”,整体拼出来就是那个复杂的概率函数。
“这个定理对 AI 有什么用呢?
简单说就是:我们可以通过很多个简单函数的组合,来模拟计算下一个字符出现的概率的函数。”
那么,用什么结构来组合这些简单函数呢?答案是——神经网络。
3. 神经网络:用无数个“神经元”拼出概率函数
“神经网络可以认为是一个函数,输入是用户提问,输出是回答的下一个字的概率,然后选择概率最大的那个字返回给用户。”
神经网络是由一层层“神经元”连接而成的网。一个神经元,就是一个简单函数:
output=σ(w⋅x+b) \text{output} = \sigma(w \cdot x + b) output=σ(w⋅x+b)
这里:
- xxx 是输入信号(一个数字,或一组数字组成的向量)
- www 是权重(weight),决定这个输入有多重要
- bbb 是偏置(bias),相当于调节灵敏度
- σ\sigmaσ 是激活函数,比如 Sigmoid、ReLU 等,它负责引入“非线性”,让组合后的网络能表达复杂的弯曲曲面,而不仅仅是直线平面。没有它,无数层叠起来也还是个线性函数,就没法逼近任意函数了。
当一个神经元不够用,我们就把很多神经元排成一层,再把很多层叠起来——这就是“深层神经网络”。每一层拿上一层的输出作为自己的输入,层层加工,最后给出我们想要的结果。
“神经网络是有很多个简单函数组合起来的网络。每个简单函数都是网络中的一个点……
理论上我们把无数个这样的简单函数组合起来就能模拟最终的概率函数。”
但在实际计算机里,一次计算“无数个”简单函数会吃不消。于是工程师们把它们分成一层一层,每一层只计算有限个神经元,通过很多层的堆叠来逼近那个复杂的概率函数。这就是深度学习里的“深”字的由来。
4. Transformer:当下大语言模型的“骨架”
单靠普通的全连接神经网络处理句子还远远不够。因为自然语言里,字与字之间的长距离依赖(比如“我买的那个放在书架顶上的盒子,它里面装的是……”后面的“它”指的就是“盒子”)很难捕捉。
2017 年,一种叫 Transformer 的结构横空出世,彻底解决了这个问题,今天所有主流大语言模型(GPT 系列、Claude、文心一言等)都基于它。
4.1 核心武器:自注意力机制
Transformer 里最重要的部分叫 自注意力(Self-Attention)。它的思路很直觉:让每个字都去看看整句话里其他所有字,自己决定该重点关注谁。
比如在“长颈鹿的脖子很长”中,当模型处理“脖子”时,它会自己学会多注意前面的“长颈鹿”,而少注意语气词“的”。
自注意力的核心公式:
Attention(Q,K,V)=softmax (QKTdk)V \text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right) V Attention(Q,K,V)=softmax(dkQKT)V
来解释一下:
- 把你想要“查询”的字,通过矩阵变换得到 Q(Query)。
- 所有可能被注意的字,分别变换成 K(Key) 和 V(Value)。
- QKTQK^TQKT 计算出“查询”与各个“键”的匹配度(分数)。
- 除以 dk\sqrt{d_k}dk 防止分数过大,让训练更稳定。
- 通过 softmax 把分数变成概率(所有值加起来等于1),这就是注意力权重。
- 最后用这个权重对 V(Value) 做加权求和。这样,一个字的输出里就融合了整句话中其他字的信息,且重要字的影响被放大。
多头注意力(Multi‑Head Attention) 就是同时做很多组这样的计算,每一组可以学到不同的关注模式,比如一组关注语法,一组关注指代,一组关注情感。
4.2 Transformer 块:像多层漏斗一样加工信息
一个 Transformer 层不只是自注意力,它还包括“前馈网络”(简单的全连接层)和残差连接、归一化等。大致流程是:
输入 → 多头自注意力 → 残差连接 & 层归一化 → 前馈网络 → 残差连接 & 层归一化 → 输出给下一层
(现在的 GPT 类模型只用了 Transformer 的“解码器”部分,并且用了掩码,让模型在计算注意力时只能看到当前位置之前的上文,不能偷看后面的字,这样才符合“猜下一个字”的任务。)
4.3 最后一步:把加工过的信息变成“下个字的概率”
经过很多层 Transformer 模块的深度加工,模型得到了对每个位置的深层理解。最后,用一个线性层加上 Softmax,把最后一层的输出向量映射到一个巨大的概率表上——这个表里每个条目对应词表中的一个字(或子词)。
P(next_token∣context)=softmax(W⋅hlast+b) P(\text{next\_token} \mid \text{context}) = \text{softmax}(W \cdot h_{\text{last}} + b) P(next_token∣context)=softmax(W⋅hlast+b)
其中 hlasth_{\text{last}}hlast 是最后一个 Transformer 层输出的向量,WWW 和 bbb 是学到的参数。这样,就得到了“下一个字”的概率分布。
5. 整个生成过程的流程图
下面用一张简化的流程图,把从你输入一句话到模型吐出一个新字的全过程串起来:
下面是一个自回归语言模型生成下一个字的流程图:
解释:模型把“今天天气真”变成向量,经过加了位置信息的嵌入层,再穿过很多个一样的 Transformer 块(每个块里先做带掩码的自注意力,只依据前文来理解当前字;再通过前馈网络做非线性变换),最后把得到的语义表示映射成概率,选出“好”。然后将“好”字拼回原文,拿“今天天气真好”作为新的输入,继续生成下一个字,直到输出结束符。
6. 训练:怎么知道这些简单函数里的 www 和 bbb 该取多少?
既然神经网络的本质是 y=σ(wx+b)y = \sigma(wx + b)y=σ(wx+b) 的组合,那上亿个权重 www 和偏置 bbb 该怎么定?这就要靠“训练”了。
简单说,就是把全网上的海量文本投喂给模型,让它不断地猜下一个字。猜错了就通过反向传播算法,沿着函数链求偏导数,一点点调整 www 和 bbb,让下次猜同一个上下文时正确率更高。重复千亿次,模型就慢慢学会了人类组织文字的规律——世界知识、语法、逻辑、甚至某种程度的推理,其实都是在这个过程中以“预测下一个字”的形式被内化到参数里的。
7. 回到开头:一切缘于万能近似定理
“说到底,就是计算下一个字的概率来决定下一个字应该说什么。”
这个想法看似简单,但把它实现出来,需要一条清晰的逻辑链:
- 没有人能写出精确的“概率函数”公式;
- 但根据万能近似定理,任何函数都能被大量简单函数的组合近似;
- 我们用神经网络来充当这些“简单函数的组合”,一层层堆叠;
- 用 Transformer 结构让每个字都能动态关注到上文里最重要的信息;
- 最后通过海量文本训练,自动找到所有神经元里最佳的 www 和 bbb。
于是,那个看起来无所不知、能和你谈天说地的大语言模型,本质上还是一个乖乖计算“下一个字概率”的数学函数——只不过这个函数,被千亿个 y=σ(wx+b)y = \sigma(wx + b)y=σ(wx+b) 硬生生拼了出来。
更多推荐



所有评论(0)