文章目录
- 一、为什么我们「用不懂」自己造出来的东西
- 二、词向量:用一串数字表示「意义」
- 2.1 单词为什么不能直接喂给神经网络
- 2.2 一个关于经纬度的类比
- 2.3 意义可以做加减法
- 2.4 一个词,多种含义
- 三、Transformer:逐层澄清词义的流水线
- 3.1 一条信息逐层加工的流水线
- 3.2 维度就是「草稿空间」
- 四、注意力机制:单词之间的「撮合服务」
- 4.1 查询向量与关键向量
- 4.2 多头并行:96 × 96
- 4.3 一个真实案例:GPT-2 如何知道答案是 Mary
- 五、前馈网络:模型记忆事实的「数据库」
- 5.1 庞大的连接,庞大的参数
- 5.2 它在做「模式匹配」
- 5.3 用向量运算「查」出首都
- 5.4 注意力负责「检索」,前馈负责「记忆」
- 六、训练:用「拧水龙头」的方式学会预测
- 6.1 不需要人工标注,是最大的创新
- 6.2 五万个水龙头与一支松鼠部队
- 6.3 前向传播与反向传播
- 七、规模的魔力与「涌现」的能力
- 7.1 规模法则
- 7.2 心智理论:模型学会了「推测他人想法」?
- 7.3 那只不该画出来的独角兽
- 7.4 「随机鹦鹉」还是「真正理解」?
- 八、结语
当你向 ChatGPT 输入一句话,它在零点几秒内就能续写出流畅、连贯甚至富有洞察力的文字。这背后没有任何人类工程师编写的「逐步指令」,只有一张由数千亿参数构成的神经网络。本文尝试用尽量少的数学,把这张网络内部真正发生的事情讲清楚。
一、为什么我们「用不懂」自己造出来的东西
传统软件的逻辑是透明的:工程师把业务规则翻译成明确的、可逐行阅读的代码,计算机照做即可。你让它算2 + 3,它对「2」「加号」「3」的含义没有任何歧义,执行路径清清楚楚。
大语言模型完全是另一套范式。它不是被「编写」出来的,而是在数十亿乃至上万亿词汇的文本上「训练」出来的。模型的能力沉淀在海量权重参数里,而不是某段可读的逻辑中。结果就是一个相当反直觉的事实:直到今天,地球上没有任何一个人能够完整解释一个大模型内部究竟是如何工作的。
这并不意味着我们一无所知。过去几年,研究者通过大量逆向工程式的实验,已经把这台机器的关键齿轮拆解得相当清楚。本文沿着三条主线展开:
- 模型如何表示单词——词向量;
- 模型如何处理单词——Transformer、注意力机制与前馈网络;
- 模型如何学会这一切——训练与反向传播。
理解了这三层,你对「下一个词预测」这件看似简单的事,会有完全不同的认识。
二、词向量:用一串数字表示「意义」
2.1 单词为什么不能直接喂给神经网络
人类用字母序列表示单词,比如C-A-T代表猫。但字母对计算机来说只是符号,无法进行任何有意义的运算。神经网络需要的是数字——而且是能够编码「含义」的数字。
解决方案是词向量(Word Vector):用一长串实数来表示一个词。比如「猫」可能被表示成一个长度为 300 的数字列表。
2.2 一个关于经纬度的类比
为什么要用这么复杂的方式?不妨借助地理坐标来理解。
| 城市 | 坐标(纬度, 经度) |
|---|---|
| 华盛顿特区 | (38.9, 77) |
| 纽约 | (40.7, 74) |
| 伦敦 | (51.5, 0.1) |
| 巴黎 | (48.9, -2.4) |
仅凭这两个数字,你就能推理出空间关系:纽约离华盛顿很近(38.9 与 40.7 接近,77 与 74 接近),巴黎离伦敦很近,而巴黎离华盛顿则相当远。
词向量做的是同一件事,只不过它表示的不是地理位置,而是语义位置。每个词都是「词空间」中的一个点,含义相近的词彼此靠近。在向量空间里,离cat(猫)最近的邻居往往是dog(狗)、kitten(小猫)、pet(宠物)。
2.3 意义可以做加减法
把单词变成实数向量,最迷人的优点是:数字能做运算,而字母不能。
2013 年,Google 公布了 word2vec 项目,分析了数百万篇新闻文档,训练出的网络能把语义相近的词放到相邻位置。更惊人的是,向量之间的代数运算竟然对应着语义类比:
biggest - big + small ≈ smallest king - man + woman ≈ queen Paris - France + Germany ≈ Berlin也就是说,「big 之于 biggest」这种关系,被编码成了向量空间里一个可以平移的方向。瑞士人之于瑞士、柏林之于德国、复数之于单数……大量人类语言中的规律,都以几何关系的形式被自动捕捉了下来。
这里也藏着一个值得警惕的副作用:既然向量是从人类的真实语料中学出来的,它就会忠实地继承人类语言里的偏见。在某些早期模型里,doctor - man + woman竟然会得到nurse。如何消除这类偏见,至今仍是一个活跃的研究方向。
2.4 一个词,多种含义
简单的词向量有个绕不开的难题:一个词常常有多重含义。
bank既可以是「银行」,也可以是「河岸」——两个毫不相关的意思,语言学上称为同音异义词(homonym);magazine既可以指「一本杂志」,也可以指「出版杂志的机构」——两个紧密相关的意思,称为多义词(polysemy)。
更麻烦的是,自然语言的歧义远不止于此:
顾客请修理工修理他的车。——「他」指谁?
教授催促学生完成她的作业。——「她」指谁?
Time flies like an arrow.——flies 是动词还是名词?
人类靠常识和上下文瞬间消歧:修理工通常修顾客的车,学生通常做自己的作业,水果通常不会飞。但这里没有任何简单规则可循,它需要的是对真实世界的理解。
这正是现代词向量的厉害之处:模型并不给每个词分配一个固定向量,而是根据上下文,为同一个词动态生成不同的向量。「银行」的 bank 和「河岸」的 bank 会落在向量空间的不同位置;而对于多义词,两个含义的向量会更加接近——因为它们本就血缘相近。
三、Transformer:逐层澄清词义的流水线
词向量解决了「如何表示」,接下来的问题是「如何处理」。
ChatGPT 最初版本背后的 GPT-3,由数十层神经网络堆叠而成,每一层都是一个Transformer——这种结构由 Google 在 2017 年的里程碑论文中首次提出。
3.1 一条信息逐层加工的流水线
输入文本中的每个词先被转成 word2vec 风格的初始向量,然后送入第一个 Transformer。我们用一句话来演示:
John wants his bank to cash the …
- 第一层 Transformer可能识别出
wants和cash都是动词,于是在它们的向量里悄悄添加了「这是动词」的上下文信息; - 第二层 Transformer进一步澄清
bank指的是「金融机构」而非「河岸」,并判断出his指代的是John。
每一层的输出叫作隐藏状态(hidden state),再传给下一层。需要强调的是,这些「附加信息」并不是人类可读的标签,而是模型对向量本身的微妙修改——对人来说很难直接解释。
真实模型的层数远不止两层。最强的 GPT-3 有 96 层。研究表明,靠前的层倾向于处理语法、消解局部歧义,靠后的层则负责对整段文本的高层次理解。当模型读一篇短篇小说时,它似乎会逐层记住角色的性别、年龄、人物关系、位置、性格、目标……
3.2 维度就是「草稿空间」
现代模型的向量维度大得惊人。GPT-3 最强版本使用12288 维的词向量,比 2013 年的 word2vec 大了约 20 倍。
你可以把这些额外的维度理解为模型的「草稿纸」(scratch space):靠前的层在上面写下笔记,靠后的层读取并修改它们,从而逐步加深对全文的理解。
设想一个 96 层的模型在解读一篇千字故事,到第 60 层时,John对应的向量里也许已经压缩进了这样一整套注释:
主角 / 男性 / 娶了谢丽尔 / 唐纳德的表弟 / 来自明尼苏达州 / 目前在博伊西 / 正在找他丢失的钱包……
而这一切,最终都被编码成 12288 个数字。整张网络的目标,就是让第 96 层(最后一层)输出一个包含足够信息的隐藏状态,从而准确预测下一个词。
四、注意力机制:单词之间的「撮合服务」
每个 Transformer 内部,处理分两步走。第一步是注意力(attention),第二步是前馈(feed-forward)。先看注意力。
4.1 查询向量与关键向量
可以把注意力机制想象成单词之间的一个相亲撮合服务:
- 每个词都会制作一份「需求清单」,称为查询向量(query),描述它在找什么样的词;
- 每个词同时制作一份「自我介绍」,称为关键向量(key),描述自己是什么样的词。
网络通过计算每个查询向量与每个关键向量的点积来寻找最佳匹配。一旦匹配成功,信息就会从「被找到」的词流向「发起查询」的词。
还是那句John wants his bank to cash the:
his的查询向量大致表示:「我在找一个描述男性的名词」;John的关键向量大致表示:「我就是一个描述男性的名词」;- 点积一算,两者匹配,于是
John的信息被复制进his的向量。代词指代就此解决。
4.2 多头并行:96 × 96
每个注意力层并非只有一个「撮合服务」,而是有多个**注意力头(attention head)**并行工作,各司其职:
- 一个头专门把代词和名词配对;
- 一个头专门处理
bank这类一词多义; - 一个头专门把
Joe Biden这种跨词的专名拼接起来。
这些注意力头还能串联协作:前一层某个头的输出,成为后一层另一个头的输入。GPT-3 最大版本有 96 层、每层 96 个头,因此每预测一个新词,就要执行 9216 次注意力操作。
4.3 一个真实案例:GPT-2 如何知道答案是 Mary
理想化的描述之外,研究者真的钻进了模型内部。Redwood Research 团队研究了 GPT-2 处理这句话的过程:
When Mary and John went to the store, John gave a drink to ___
GPT-2 预测的下一个词是Mary。团队发现,有三类注意力头协同完成了这次预测:
- 名称移动头(Name Mover Head):3 个头,负责把
Mary的信息复制到最后的to向量上,供模型预测使用; - 主语抑制头(Subject Inhibition Head):4 个头,负责标记第二个
John,阻止名称移动头去复制John; - 重复标记头(Duplicate Token Head):2 个头,负责发现第二个
John是第一个John的重复,从而提醒主语抑制头出手。
这 9 个注意力头合力让 GPT-2 明白了一件事:「John gave a drink to John」毫无意义,应该选 Mary。
这个案例也从侧面说明了「完全理解大模型」有多难——五位研究者写了一篇 25 页的论文,才解释清楚这 9 个头是如何识别和验证的。而即便如此,对于「模型为什么知道下一个词应该是人名而非别的类型」这种更深的问题,我们依然没有答案。要知道,把句子换成「John gave his keys to ___」,正确答案就该变成「代客泊车员」了。
五、前馈网络:模型记忆事实的「数据库」
注意力头在词与词之间搬运信息之后,轮到前馈网络(feed-forward network)登场。这一步里,单词之间不再交换信息,前馈层独立地审视每一个词向量,并尝试预测下一个词——但它能读取注意力头之前搬运过来的所有上下文。
5.1 庞大的连接,庞大的参数
前馈层的威力来自其海量连接。在 GPT-3 最大版本中:
- 隐藏层有49152个神经元,每个神经元有 12288 个权重;
- 输出层有12288个神经元,每个神经元有 49152 个权重。
这样算下来,单个前馈层约有49152 × 12288 + 12288 × 49152 ≈ 12 亿个权重参数。乘以 96 层,前馈网络总共约1160 亿参数——这相当于整个 1750 亿参数 GPT-3 的近三分之二。换句话说,大模型的「知识」绝大部分存在前馈层里。
5.2 它在做「模式匹配」
2020 年特拉维夫大学的研究发现,前馈层的工作机制是模式匹配:隐藏层中每个神经元都负责匹配输入文本里的某种特定模式。以一个 16 层的 GPT-2 为例:
- 第 1 层的某个神经元,匹配以
substitutes结尾的词序列; - 第 6 层的某个神经元,匹配与军事相关、以
base/bases结尾的序列; - 第 13 层的某个神经元,匹配以时间范围结尾的序列(如「下午 3 点到 7 点之间」);
- 第 16 层的某个神经元,匹配与电视节目相关的序列。
一个清晰的规律浮现出来:越靠后的层,匹配的模式越抽象。早期层盯着具体单词,后期层则识别「电视节目」「时间区间」这类宽泛的语言类别。
这里有个精妙的细节:前馈层每次只能看一个词。当它把「原始 NBC 日间版本已存档」判定为电视相关时,它手里其实只有「已存档」这一个词的向量——之所以还能判断对,是因为注意力头早已把上下文信息搬进了「已存档」的向量里。两步配合,缺一不可。
5.3 用向量运算「查」出首都
还记得 word2vec 的Paris - France + Germany ≈ Berlin吗?布朗大学的研究者发现,前馈层有时就用这种方式预测下一个词。
他们给 24 层的 GPT-2 输入:
问:法国的首都是什么?答:巴黎。问:波兰的首都是什么?答:___
然后逐层探测模型的最优猜测:
- 前 15 层:猜测几乎是随机词;
- 第 16~19 层:开始猜「波兰」,错误但越来越接近;
- 第 20 层:猜测突变为「华沙」,正确,并在最后 4 层保持不变。
进一步分析发现,正是第 20 个前馈层添加了一个「把国家向量映射到首都向量」的方向。把同样的向量加到「中国」上,会得到「北京」。同一个模型里,前馈层还能把小写转大写、把现在时转过去时。
5.4 注意力负责「检索」,前馈负责「记忆」
把两个案例对照来看,分工就一目了然了:
- 预测 Mary 时,Mary 来自用户输入的提示,靠注意力机制从上文检索;
- 预测华沙时,华沙没有出现在提示里,靠前馈层从训练数据中调取记忆。
一个有力的佐证是:当研究者禁用「波兰→华沙」的前馈层后,模型答不出华沙了;但只要在提示开头补一句「波兰的首都是华沙」,GPT-2 又能答对——这次它改用注意力机制从提示里把「华沙」捞了出来。
所以可以这样理解:前馈层像是一座由训练数据沉淀而成的知识库。靠前的层存储简单事实(如「唐纳德」后面常跟「特朗普」),靠后的层编码更复杂的关系(如「国家→首都」的映射)。
六、训练:用「拧水龙头」的方式学会预测
推理过程讲完了,那这一切是怎么「学」出来的?
6.1 不需要人工标注,是最大的创新
许多早期机器学习算法依赖人工标注:要训练猫狗分类器,就得给成千上万张照片打上「猫」或「狗」的标签。这既昂贵又难以规模化。
大模型的关键创新在于:它不需要显式标注。只要让模型反复预测「文本中的下一个词」,几乎任何书面材料都能直接当训练数据——维基百科、新闻、代码,统统拿来即用。
比如给模型输入「I like my coffee with cream and ___」,让它预测sugar。一个刚初始化的模型权重几乎全是随机数,预测得一塌糊涂;但当它见过数千亿个词之后,权重会逐渐调整,预测越来越准。
6.2 五万个水龙头与一支松鼠部队
训练究竟如何调整这上千亿个参数?这里有个绝妙的类比。
想象你在调一个从没用过的水龙头,想让水温刚好。太热就往反方向拧,太冷再拧回来,越接近合适温度,调整幅度越小。现在把这个场景改造一下:
- 不是一个水龙头,而是50257 个,每个对应词表里的一个词。你的目标是:只让「正确的下一个词」对应的那个龙头出水。
- 龙头背后是一张盘根错节的管道网,管道上布满阀门。水从错误的龙头流出时,你不能只拧龙头旋钮,而要派出一支聪明的松鼠部队,沿着每条管道追踪,逐个调整沿途阀门。
- 由于同一根管道往往供应多个龙头,松鼠们必须仔细权衡:到底拧紧还是松开、拧多少。
这个比喻虽然荒诞,却精准对应了真实情况。模型的每个组件——前馈层的神经元、传递上下文的注意力头——本质上都是由可调权重控制的简单数学函数(主要是矩阵乘法)。训练就是通过增减这些权重,来控制信息在网络中如何流动。
6.3 前向传播与反向传播
训练分两步循环往复:
- 前向传播(forward pass):打开水源,检查水是否从正确的龙头流出(即模型预测得对不对);
- 反向传播(backward pass):松鼠们沿管道飞奔,逐个拧紧或松开阀门。
现实中,「松鼠」的角色由反向传播算法扮演。它逆向穿过整张网络,用微积分评估每个权重应该如何改变,才能让模型在这个样本上表现更好。
一次「前向 + 反向」要做数百亿次运算,而 GPT-3 这样的模型要对训练数据里的每个词重复这个过程数十亿次。OpenAI 估计,训练 GPT-3 需要超过3×10²³ 次浮点运算,几十块高端 GPU 连续跑数月才能完成。
七、规模的魔力与「涌现」的能力
一个如此简单的学习机制——无非是「预测下一个词」——为什么能造就会写文章、会类比、会编程的系统?
7.1 规模法则
首要原因是规模。GPT-3 在约 5000 亿词的语料上训练,作为对比,一个普通人类儿童到 10 岁大约只接触过 1 亿个词。
2020 年 OpenAI 那篇广为流传的论文指出:模型的准确率与模型规模、数据集规模、训练算力之间呈幂律关系,某些趋势甚至跨越 7 个数量级。模型越大表现越好——但前提是必须同比例增加训练数据,而更大的模型加更多数据,又意味着更多算力。三者环环相扣。
这条规模曲线清晰地体现在 GPT 家族的演进上:
| 模型 | 年份 | 词向量维度 | 层数 | 参数量 |
|---|---|---|---|---|
| GPT-1 | 2018 | 768 | 12 | 1.17 亿 |
| GPT-2 | 2019 | 1600 | 48 | 15 亿 |
| GPT-3 | 2020 | 12288 | 96 | 1750 亿 |
| GPT-4 | 2023 | 未公开 | 未公开 | 普遍认为远大于 GPT-3 |
7.2 心智理论:模型学会了「推测他人想法」?
更大的模型不仅记住更多事实,还在需要抽象推理的任务上表现更好。一个经典测试是心智理论(theory of mind)——推测他人心理状态的能力。
设想这样一个故事:一个袋子里装满了爆米花,没有巧克力,但标签上却写着「巧克力」。一个叫山姆的孩子第一次看到这个袋子,看不见里面,只读了标签。问:山姆以为袋子里装的是什么?
正确答案是巧克力(因为他只能依据标签判断)。大多数人从上小学起就具备这种推理能力。
斯坦福心理学家米哈尔·科辛斯基测试了各代模型:
- GPT-1、GPT-2:失败;
- GPT-3 初版(2020):正确率约40%,相当于 3 岁儿童;
- GPT-3 最新版(2022 年 11 月):正确率约90%,相当于 7 岁儿童;
- GPT-4:正确率约95%。
科辛斯基认为,没有人刻意把「心智化能力」设计进模型,它很可能是模型语言能力增强后自发涌现的副产品。
当然,这个结论存在争议。有研究发现,只要对「错误信念任务」做微小改动,GPT-3 的表现就会大幅下降。这可能是一种「聪明的汉斯效应」(Clever Hans)——那匹看似会做算术的马,实际只是在读人类无意间给出的暗示。如今这种效应也许只是从马身上转移到了模型身上。
7.3 那只不该画出来的独角兽
2023 年 4 月,微软研究者发表论文称 GPT-4 展现出通用人工智能的「初步迹象」。其中一个实验令人印象深刻:
他们让 GPT-4 用一种相当冷门的图形编程语言 TiKZ 画一只独角兽。GPT-4 给出了几行代码,渲染出的图像虽然粗糙,却清晰地画出了独角兽。
研究者怀疑这是从训练数据里背下来的,于是修改代码、移除了头上的角,再要求 GPT-4「把角放回去」。结果 GPT-4 准确地把角放回了正确位置。要知道,模型的训练数据完全是文本,不含任何图像——它却仅凭文字,学会了推理独角兽的空间形状。
7.4 「随机鹦鹉」还是「真正理解」?
这类现象点燃了一场深刻的哲学争论:模型是真的开始理解词义,还是只是一只「随机鹦鹉」,机械地复述越来越复杂的词序列?这场争论也许无解。
但有一个务实的视角值得坚持:如果一个模型能在某类问题上稳定地给出正确答案,且研究者有把握排除混淆因素(比如确认训练时没见过这些题),那么无论它的「理解」是否与人类相同,这都是有趣而重要的结果。
至于「下一个词预测」为何如此有效,还有一个更根本的解释:语言本身是可预测的,而语言的规律往往映射着物理世界的规律。当模型学习词与词的关系时,它实际上也在隐式地学习世界运转的方式。正如哲学家安迪·克拉克所说,人脑本身或许就是一台「预测机器」——预测对生物智能和人工智能而言,可能同样是地基般的存在。而好的预测,离不开好的表示。这恰好解释了,为什么「找出表示单词的最佳方式」这个曾经棘手的理论难题,最终被「预测下一个词」这一经验性方法巧妙绕开了。
八、结语
回到开头那个问题:ChatGPT 在零点几秒里到底做了什么?
现在我们可以给出一个分层的答案:
- 它先把每个词变成一个高维词向量,让「意义」变得可计算;
- 然后让信息流过几十层Transformer,其中注意力机制负责在词与词之间检索和搬运上下文,前馈网络负责从沉淀的知识库中调取事实;
- 而这套机器的全部能力,都来自一个朴素到近乎笨拙的训练目标——预测下一个词,外加规模惊人的数据、算力和反向传播。
令人着迷也令人不安的是:我们造出了它,能描述它每个齿轮的运转,却仍未能完全理解,为什么这些简单齿轮组合起来,会涌现出推理、类比乃至某种「心智」的影子。这台机器内部的运行方式,仍是一片值得人类长期探索的疆域。