前面五节,了解了ChatGPT的本质:一个1750亿参数的函数,通过预测下一个词来工作,在3000亿个词的海量文本上预训练而成。
但直接使用预训练完成的GPT-3,问它:"如何学习编程?",它可能会给出各种奇怪的回答。因为纯预训练模型只学会了一件事:预测下一个词。它把你的问题当成了一篇文章的开头,继续往下"接龙"。它不知道你在提问,不知道要给出答案,更不知道什么是"好的答案"。
这就是预训练的局限:通才,但不会做具体任务。
这一节,看看如何把一个"只会接龙"的语言模型,变成一个"会回答问题"的对话助手。这个过程叫做监督微调(Supervised Fine-Tuning, SFT)。
7.1 预训练模型没有任务意识
让我先带你深入理解这个问题的本质。
预训练模型在做什么
在预训练阶段,模型读了无数篇文章、网页、书籍。它学会了一个能力:在任何上下文后面,预测最可能的下一个词。
但它没有学会区分: - 哪些是问题,哪些是陈述 - 哪些需要回答,哪些不需要 - 什么是好的答案,什么是坏的答案
比如:
用户输入:"太阳是什么时候开始绕着地球转的?"
预训练模型可能的回答:
"太阳是什么时候开始绕着地球转的?这是一个关于天文学历史的问题。 在古代,人们确实认为太阳绕着地球转,这被称为'地心说'..."
模型把问题当成文章开头,继续"接龙"
但其实正常情况,大模型应该指出这是一个常识性的错误。造成这种错误回答的原因是因为只经过预训练的大模型缺少任务理解能力。它无法理解"问答"是一种特定的交互模式,无法理解用户的意图和期待,也不理解什么样的回答是有帮助的。
这些,需要通过监督微调来教会模型。
7.2 什么是监督微调
监督微调(Supervised Fine-Tuning)是指:
在预训练模型的基础上,使用人工标注的问答对进行额外训练,让模型学会"回答问题"这个具体任务。
如果说预训练是"博览群书",那么监督微调就是"针对性训练"。预训练阶段的大模型像一个博学的人,读过无数书籍,能力知识丰富,但不知道怎么"对话"。
这类似一个学富五车的学者,知识渊博,但不会教学。这点和我们程序员很像,很多程序员技术很牛,但未必能给初学者讲清楚。
而监督微调阶段,模型会学习如何回答问题,变成一个"问答助手"。比如:学会识别问题,组织答案,保持有帮助的语气。
[!Note] 为什么叫"监督"
因为每一条训练数据都有人类提供的正确答案,就像老师在"监督"学生学习一样。模型的每一步都有"标准答案"来指导,不是自己摸索。
这和上一节讨论的预训练不同:预训练是自监督——答案在原文里,不需要人工标注。几乎不需要人工参与,这也是为什么预训练可以大规模进行,而监督微调一般规模远比预训练小。
7.3 ■ 学点英语
| 中文 | English | 音标 | 说明 |
|---|---|---|---|
| 监督微调 | Supervised Fine-Tuning (SFT) | /ˌsuːpərvaɪzd faɪn ˈtjuːnɪŋ/ | 用人工标注的问答对在预训练模型上做针对性训练 |
| 任务意识 | Task Awareness | /tæsk əˈweərnəs/ | 模型理解和区分不同任务类型(问答、翻译、续写等)的能力 |
| 指令遵循 | Instruction Following | /ɪnˈstrʌkʃən ˈfɒləʊɪŋ/ | 模型理解和执行人类指令的能力 |
| 问答对 | Q&A Pair | /kjuː ænd eɪ peər/ | 由问题与高质量答案组成的训练数据单元 |
| 人类标注 | Human Annotation | /ˈhjuːmən ˌænəˈteɪʃən/ | 由人工为训练数据提供正确答案或质量评分的流程 |
7.4 ■ 思考帧
该练习为课程站点内嵌互动题,未收录于本地离线包;如需作答请回到线上课程对应课时。
该练习为课程站点内嵌互动题,未收录于本地离线包;如需作答请回到线上课程对应课时。
该练习为课程站点内嵌互动题,未收录于本地离线包;如需作答请回到线上课程对应课时。
该练习为课程站点内嵌互动题,未收录于本地离线包;如需作答请回到线上课程对应课时。
7.5 下一节预告
上一节了解了监督微调的概念:在预训练模型基础上,用人工标注的问答对进行额外训练。
本节将系统分解监督微调的过程,看看数据从哪里来、模型如何学习、参数如何更新。