在深度学习大模型训练的领域里,预训练、微调与上下文学习这三个术语几乎天天被提及。但真正能将它们之间的关系、各自定位讲透彻的人并不多。今天我们就来深入解析这三兄弟,同时理清无监督学习和有监督学习在其中的角色——别看都是专业术语,其实并不复杂。

先看这张图,一句话总结:广义上的训练包括预训练、微调和上下文学习,狭义上的训练专指预训练这个阶段。我们常听说的智谱AI、百川智能,它们推出的GLM-130B、Baichuan-2-192K等模型,全都是预训练完成的成果。平时大家所说的“炼丹”,多数时候指的就是预训练这一过程。
这三个技术到底如何区分?简单来说,预训练的目标是学习通用特征,让模型具备较强的泛化能力;微调则是针对特定任务调整参数,使模型更适配;上下文学习关注数据间的内在关联,帮助模型理清上下文语义。三者各司其职,但又环环相扣。
预训练:打造通用特征提取器
预训练(Pre-training,PT)是在海量数据上训练模型,让模型学到通用的特征表示。一旦模型掌握了这些基础能力,面对具体任务时就能更快上手。预训练通常采用无监督学习方法,比如自编码器、生成对抗网络。在大模型世界里,预训练能显著提升模型性能,同时缩短后续训练的时间和资源消耗。想象一下,模型在预训练阶段会接触海量的未标记文本——书籍、文章、网站,无所不包。例如,GPT-3就是在数百万本书、文章和网站的数据集上完成预训练的。它的目标是捕获文本语料库中隐藏的底层模式、结构和语义知识。
这里必须提一下无监督学习(Unsupervised Learning)。在无监督学习中,模型没有给定标签或目标输出,而是自己从输入数据中探索内在结构和特征。这种学习方式旨在发现数据中的模式、关联或聚类,完全不需要人工标注的数据。无监督学习在预处理、特征提取、降维和聚类等任务中很常见,典型算法包括自编码器、生成对抗网络、K-均值聚类等。
微调:任务专属优化利器
微调(Fine-tuning,FT)是在预训练模型的基础上,针对特定任务进行进一步训练。通过微调,模型能在该项任务上表现更出色。微调通常采用有监督学习方法,依靠标签数据来调整模型参数。在大模型应用中,微调能充分利用预训练模型的通用特征,实现高效的任务适配。
说到有监督学习(Supervised Learning),它依靠已知标签的训练数据来指导模型学习。简单讲,就是给模型一堆带正确答案的示例,让它自己学会从输入预测输出。这种方法被称为“有监督”,是因为模型在学习过程中受到了训练数据中标签的引导。它依赖标记好的训练数据——通常是人工分类或标注的。有监督学习在分类、回归、语音识别、图像识别等任务中效果显著,典型算法包括支持向量机、决策树、逻辑回归等。最终目标是训练出一个模型,当给定新数据时,能准确预测出对应的标签或输出。
SFT(Supervised Fine-Tuning)是一种常见的有监督学习方法。它基于预训练模型,用有标签的数据进行微调,以适配特定任务。通过微调,模型能快速利用预先学到的知识,实现任务适配,显著提升性能和效果。这种方法在分类、回归等任务中被广泛使用。
RLHF(Reinforcement Learning with Human Feedback)是另一种有监督学习方法,本质上属于强化学习,通过人类反馈来指导智能系统行为。在RLHF中,人类提供关于智能系统行为的反馈——哪些行为正确,哪些错误。智能系统根据这些反馈逐步改进行为策略。这种方法减轻了传统强化学习中需要大量试错的问题,让智能系统学习更高效、更快速。RLHF尤其适用于复杂或主观的任务(比如语言生成),因为在这些任务中很难明确定义损失函数。通过人类反馈,RLHF可以生成更符合人类意图和偏好的输出。
上下文学习:捕捉数据内在关联
预训练好的GPT-3模型拥有一项神奇的能力,后来被称为:上下文学习(In-Context Learning),也叫情境学习。
这个能力简单来说就是:预训练好的GPT-3模型在迁移到新任务上时,完全不需要重新训练,只需提供任务描述(可选)和几个示例(任务查询和对应答案成对出现),最后加上要模型回答的查询。把这些内容打包作为模型输入,模型就能正确输出最后一个查询对应的答案。
举个例子:假如你想用GPT-3来做翻译任务,把英文翻译成法文。输入格式如下:
上下文学习非常灵活,除了翻译,还能做语法修饰、编写代码等等。神奇之处在于:GPT-3的训练过程中并没有显式提供类似测试阶段任务描述+示例的结构化数据。当然,GPT-3的训练数据量极其庞大(比如维基百科、书籍期刊、Reddit上的讨论等),或许这些数据本身就已经包含了各种任务类似的结构化模式。
