假设你要培养一个能帮你写邮件、答问题、改代码的助手。你有两种花钱的方式。第一种:雇一个语言学教授,把语法规则、常识、编程知识一条条编进它脑子里——这条路人类走了几十年,走死了。第二种:把它扔进一个巨大的图书馆,让它把书一本接一本读下去,读到你半个互联网都读完了,然后再花很小的力气教它"该怎么跟人说话"。
第二种就是今天所有大模型的做法。它分成两步,名字听起来很唬人,但拆开就两件事:先博览群书打底子,再岗前培训教规矩。这一章我们就把这两步拆开。
第一步:预训练,就是海量地做填空题
预训练(pre-training),就是让模型在海量文本上,反反复复只干一件事:遮住一个词,让它猜。
还记得第一章那个核心动作吗——猜下一个词。预训练不是别的,就是把这个动作重复了几万亿次。给模型一句"今天天气很",让它预测下一个字;它猜"好",翻开答案一看真是"好",就把内部的旋钮往"下次更容易猜好"的方向拧一点点;它猜"香蕉",答案是"好",就往反方向拧。就这么一个字一个字地过,把互联网上能扒到的文本全过一遍。
这里有个关键问题,也是很多人卡住的地方:这些"答案"是谁写的?
你可能以为,要教模型做填空题,得先有人把几万亿道题的标准答案都标注好。那得雇多少人?其实一个人都不用雇。因为答案本来就写在原文里——文本的下一个词,就是这道填空题的标准答案。
这就是整件事最妙的地方,它有个名字叫自监督(self-supervised):数据自己给自己当老师,不需要人来标答案。
对比一下你就懂它多值钱。传统机器学习里有一种叫监督学习(supervised learning)的做法——喂给模型一堆"输入配正确答案"的例子,比如一万张图片,每张都由人手工标好"这是猫""这是狗"。问题是,人标注贵得要死、慢得要命。你想要一百万个例子,就得请人干一百万次。数据是这里的瓶颈。
自监督直接把这个瓶颈砸了。任何一段现成的文字——一篇维基百科、一条评论、一段代码、一本小说——都自带无数道填空题。一句十个词的话,就是十道"根据前面猜下一个"的题,而且每道题的标准答案白纸黑字就在那儿。于是数据从"贵而稀少"变成了"几乎无限":互联网上有多少字,就有多少道免费的、自带答案的练习题。
这就是为什么大模型能"读半个互联网"。不是因为谁有钱去标注半个互联网,而是因为根本不需要标注——文本本身就是题目和答案的合体。
它到底从填空里学到了什么
光是"猜下一个词"这么笨的目标,凭什么能让模型学会语法、常识、甚至一点点推理?这其实是第一章埋下的悬念,这里给一半答案。
你自己在脑子里跑一遍这个例子。要让模型稳定地填对下面这些空,它被逼着学会了什么:
- "猫追着老鼠,然后它一口把___吃了"——要填对,它得知道"它"指的是猫不是老鼠,还得知道猫吃老鼠不是反过来。这是常识和指代关系。
- "法国的首都是___"——要填"巴黎",它得把这条事实记进旋钮里。这是事实知识。
- "他昨天去___了公园"——填"了"不填"去",因为中文里"去了"通顺"去去"不通。这是语法。
- "3, 6, 9, 12, ___"——填15,它得摸到"每次加3"的规律。这是一点点推理。
没人专门教它这些。但为了把填空题的错误率压到最低,它别无选择,只能把语言背后的这些规律统统吸进去。"猜下一个词"是目标,语法、常识、推理是为了达成这个目标而被迫长出来的副产品。这不是魔法,是被逼的——就像一个人为了准确预测天气,不得不搞懂气压和洋流一样。
预训练完的模型,我们叫它基座模型(base model)。这时候它像个读书破万卷、但没跟人打过交道的书呆子:肚子里全是货,可你没法好好用它。你问它"法国的首都是哪?",它很可能不回答你,反而顺着补一句"这是一道常见的地理题,下一题是..."。因为在它读过的海量文本里,一个问句后面接着的,往往不是答案,而是更多的问题或题目。它没在骗你,它只是忠实地在猜"这段文字后面最可能出现什么"。
第二步:微调,岗前培训教它好好说话
基座模型是个通才胚子,但不懂规矩。第二步就是把它调教成能用的样子,这一步叫微调(fine-tuning)——在已经读完万卷书的模型上,再用一小批精挑细选的例子接着训练,把它往你想要的行为上掰。
注意"一小批"和"一点点"。预训练烧的是几万亿词、成千上万块显卡跑好几个月;微调用的可能就几万到几十万条例子,花的算力是预训练的零头。比例上,预训练像十几年寒窗打的底子,微调像入职那几天的岗前培训。底子早打好了,岗前培训只是告诉你"在我们这儿,活儿要这么干"。
拿"教它回答问题"来说。要让书呆子学会你一问它就答,而不是顺着补题,做法简单得意外:准备一批"问题—好答案"的样例,比如
问:法国的首都是哪?
答:法国的首都是巴黎。
然后让模型接着在这批样例上做同样的"猜下一个词"训练。猜的机制一模一样,只是这回它读的全是"问题后面跟着好好回答"的范文。读多了,它内部的旋钮就被往"看到问题就给答案"的方向拧过去。等你再问它法国首都,它就不补题了,而是老老实实回答。这种专门用问答/指令样例做的微调,有个专门的名字叫指令微调(instruction tuning)——教模型听懂并执行"人类的吩咐"。
说白了,预训练和微调用的是同一套动作(猜下一个词、拧旋钮),区别只在喂什么料。预训练喂的是杂乱的半个互联网,喂的是"知识和语感";微调喂的是精选的范文,喂的是"行为和规矩"。同一个模型,先吃粗粮长身体,再吃细粮学礼仪。
这也解释了一个你可能好奇的现象:为什么各家公司常常基于同一个开源基座模型,却能调出风格迥异的助手?因为最贵、最费劲的预训练那一步可以共享一份底子,各家只在便宜的微调这步动手,用不同的范文把它掰成不同的样子。底子是通用的,性格是微调出来的。
为什么非得分两步,不能一步到位?
你也许会问:既然目的是造个会回答问题的助手,为什么不一开始就只喂"问答范文",省掉读半个互联网那步?
因为你根本凑不出那么多问答范文。人工写的高质量问答,撑死几十万上百万条,连语言的皮毛都盖不全——里面不会有足够的物理、法律、诗歌、冷门史实。只用这点数据从零开始训,模型学到的语言是残缺的,像个只背过客服话术、却不识字的人。
反过来也不行:只做预训练不微调,它就是那个不好好说话的书呆子。预训练负责让它"有货",微调负责让它"能用"——货得先从无限的免费数据里攒,规矩再用少量昂贵的范文教。两步各干各的,缺一不可。先广后专,先多后精,这个顺序不是随便定的,是被数据的成本逼出来的最优解。
所以本质上,今天所有大模型的养成,就是一句话:先用几乎不要钱、自带答案的海量文本把它喂成一个满肚子货的书呆子,再用一小把精心写好的范文,把书呆子调教成一个懂规矩的助手。没有灵光乍现,只有"读得够多"加"教得够准"。
不过"教它好好说话"这件事,我们这章只讲了最朴素的一招——拿范文让它照着学。真要把一个模型驯得既有用又不乱来,后面还有一套更狠的手段,得让人给它的回答直接打分、排优劣。那是第十一章的活儿,这里先按下不表。