学到一点就写一点 · AI 大白话 用具体例子,把 AI 的原理和用法讲清楚。
通过反复练习和调整逐渐形成能力的概念封面 · 点击放大
上一篇,我们用高矮题看了大模型怎样联系条件、生成结论。
可这些本领从哪里来?人们并没有把所有问题和答案,一条条写成规则交给它。
这一篇,我们回到第 01 篇的一句话,看看模型怎样练习,预测偏了又怎样调整。没看过前面的文章也没关系,先把训练理解成:利用材料反复练习,调整内部参与计算的数字。
练习目标,就藏在材料里
假设训练材料中有这样一句话:
今天下雨了,出门记得带伞。
我们拿出前面的部分:
今天下雨了,出门记得带
让模型预测接下来是什么。
原文后面有“伞”,这就提供了这一处练习的目标。普通文本,也能这样变成许多预测练习,不必每一句都另请一个人写答案。
实际预测的是词元(Token),也就是模型处理文字的小单位。这里为了讲解,假设“伞”恰好对应一个词元;真实分词可能不同。
预测这一处时,模型只能参考“今天下雨了,出门记得带”这些已有文字。原文中的“伞”留到检查预测时使用,不能提前告诉模型。
下面的材料和情形都是教学例子,不是某个模型的训练记录。
不只看猜中了没有,还看概率分得怎样
模型有一份可以输出的词元清单,叫作词表。预测时,它会给清单中的各个词元分配概率。
看到“出门记得带”,它可能给“伞”较高的概率,也可能更偏向别的候选。
在这个例子里,训练程序会看模型给“伞”分配了多大的概率,并据此算出一个表示预测偏差的数,通常叫作损失。这里可以先把它理解成训练使用的误差。
对这一处练习来说,给“伞”的概率越低,损失就越大。
训练要看的,还有它给“伞”的概率有多高,而不只是有没有把“伞”排在第一位。即使两次预测都把“伞”排第一,给它的概率不同,损失也会不同。
但要分清:原文提供的是预测目标,不是一份经过核实的事实答案。 材料里也可能有错误、虚构和互相冲突的说法。
算出误差之后,调整的是什么?
模型内部有许多参与计算、能够被训练调整的数字,叫作参数。
它们会影响文字怎样变成数字表示、信息怎样被处理,以及最后给各个候选打多少分。
可以把参数暂时比作一组可调的旋钮。旋钮的位置不同,同样的输入经过计算,结果就可能不同。实际参数是数字,也没有一个旋钮专门负责“下雨要带伞”。
有了损失,训练程序就会通过计算,估计把哪些参数调大、把哪些调小,可能减小误差。接着,再按设定的调整幅度,改动这些数字。
调整后,模型继续处理材料、做预测、计算误差,再更新。
利用前文预测,与原文后续词元比较,再计算误差并更新参数 · 点击放大
教学示意:这里只画出一处预测练习。实际训练通常会把多段文字中多处预测的误差合起来,再更新参数,不是每猜一个字就单独更新一次。
这种反复调整,就是模型学习过程的重要部分。
不过,一次调整不保证每道题都变好,更不保证下一次一定接出“伞”。训练效果要用许多材料和问题来检验,不能只看这一句接得好不好。
大量这样的练习,构成预训练的重要部分
我们这里讲的,是前几篇介绍的那类逐步生成文字的语言模型。训练前,研究者会准备大量文本,进行筛选、清理和分词,再组织成训练材料。
材料可能包括叙述、对话、解释、代码或解题内容,具体组成因模型而异。
用这些材料反复做后续词元预测、更新参数,是预训练的重要做法。
要把各种文字接得更合适,模型往往需要利用句子怎样组织、前后内容怎样联系,以及材料中的知识和解题过程。通过反复预测和调整参数,它可以逐渐学到其中的一些规律。
但不能据此说,它已经可靠掌握了材料里的一切。
模型也可能记住部分原文;遇到换一种说法、需要组合条件的新问题,仍可能出错。
因此,检查训练效果时,还要用没有参与训练的材料,看看它能不能处理新情况。做熟题的表现,不能代替这项检查。
会接着写,还要练习怎样回应要求
回到雨天的例子。
把“今天下雨了,出门记得带”接成一句完整的话,是一种练习。
我们平时却更常这样提问:
今天下雨了,给准备出门的人写一句简短提醒。
我们期待的是按要求回答,比如:
出门记得带伞,路滑注意安全。
前一种练习,是根据已有文字往下写;后一种要求,是按用户的指令给出回答。聊天模型通常还会经历后续训练,练习怎样按要求回答和处理任务。
一种常见做法,是准备“要求+示范回答”,像上面的雨天提醒那样。训练程序用这些示范继续训练模型,让它练习怎样按要求回答。这通常叫作监督微调,也会更新模型参数。
另一类做法,是让模型生成回答,再根据反馈调整。例如,生成几句雨天提醒,比较哪句更符合“简短、适合出门的人”这些要求;遇到能核对答案的题目,也可以检查是否答对。
训练程序再利用这些评价结果来调整参数,让模型更倾向于生成符合训练目标的回答。评价可以来自人、其他模型,或能够检查结果的程序。
上一篇的高矮题,也可以帮助理解:训练可以提供解题示例,或对最终排序是否正确给出反馈。一些模型会借这类练习改善推理表现,但不保证换一道题就能做对。
这里介绍的是几种常见的训练方式。不同模型会根据训练目标,选择和组合这些方法。
我纠正了它,算不算在训练?
假设模型提醒你带伞,你接着说:
我已经穿了雨衣,请换一句提醒。
它可能改成:
路上注意湿滑,慢一点走。
回答变了,不代表模型参数当场变了。普通聊天通常使用已有参数,把你新说的话连同前面的对话一起用于计算,再生成回答。
几种情况可以这样区分:
| 你看到的过程 | 主要发生了什么 |
|---|---|
| 训练模型 | 根据材料和训练目标更新参数 |
| 在聊天中纠正回答 | 根据你补充的信息,再生成回答;通常不更新参数 |
| 提供一份资料让它参考 | 让模型参考资料里的相关内容;通常不更新参数 |
有的软件还能保存你说过的信息,供以后聊天时使用。这是在保存和提供信息,也不等于更新模型参数。
聊天数据是否会被收集、日后用于训练,要看具体服务的规则和设置。“以后可能用于训练”和“这句话刚说完就改变了模型参数”,是两件事。
所以,纠正回答、补充资料,都有实际作用。但它们通常是在帮助模型处理眼前的任务。
学过了,为什么还是会错?
训练时,模型反复根据材料做预测,训练程序根据误差调整参数。后续训练再帮助它练习怎样按要求回答、处理任务。
模型训练得更好,并不意味着它生成的每一句话都是真的。它仍可能把错误说得很流畅。
下一篇,我们就接着看:AI 为什么有时能把错误说得那么像真的?
配图说明:封面由 AI 生成,是反复练习和调整的视觉隐喻;正文图为程序绘制的教学示意,不是模型内部结构或实测数据。雨天材料、对话和回答均为假设例子;“旋钮”只类比参数可被调整,不表示参数有人工指定的语义分工。