有监督微调
有监督微调是使用输入及其标签对的典型情况。例如,判断邮件是垃圾邮件还是非垃圾邮件,判断情感是积极还是消极。根据文档的主要主题对其进行分类也是一种常见应用。模型会将输入文本的相应表示(隐藏状态或嵌入向量)作为一组特征,来执行分类任务——这正是模型头部的作用。
在自监督的情况下,标签与输入相同,模型的任务同样是执行分类。但它并非将输入分类到少数几个类别中,而是存在与整个词汇表中标记数量一样多的类别:每个输入标记都可能是预测输出。
大型语言模型(LLMs)可以用于典型的分类任务,但这可能有些大材小用。像BERT这样的基于编码器的模型,在这些任务上已经被证明非常有效,而且它们的规模只是大型语言模型的一小部分(这意味着将它们投入生产的成本也更低)。
有些人可能会认为,使用“提示词”和“补全内容”对来微调大型语言模型不属于自监督,而是基本的有监督学习。在我看来,如果补全内容本身也是用自然语言编写的(而非像“积极”或“消极”这样的单个词语),那么这显然属于自监督学习的情况。唯一的区别是,我们只是在教模型如何生成“补全内容”部分的文本,并且假设“提示词”部分不会为其增添任何价值。
指令微调
指令微调是自监督微调中一种非常特殊的情况,模型通过这种微调学习如何遵循指令或直接回答问题。通过提供数千个问答对示例,模型会了解到答案更有可能跟随在问题之后,而不是像在测试或考试中那样将多个问题堆砌在一起。以往,终端用户不得不将问题重新表述为未完成的陈述以待补全,而指令微调则让模型认识到这两种形式是等效的,从而减轻了用户的负担。
从指令微调后的模型角度来看,以下两个提示词应该会引出相同的补全内容(“布宜诺斯艾利斯”):
- “阿根廷的首都是”
- “阿根廷的首都是什么?”
仅经过预训练的基础模型,其训练目的只是学习语言结构,它能正确补全第一个提示词,但对于第二个,可能会生成类似“秘鲁的首都是什么?”这样的内容。
指令模型以及聊天模型通常会与其基础版本(纯粹的下一个标记预测器)一同发布,因此你几乎不太可能需要自己对基础模型进行指令微调。即便你想通过在某些内部公司数据上进行微调来融入一些相当特定的知识,或许更好的做法是使用一个已经过指令微调的模型,并调整你的数据集以适应相应的模板,而不是先在你的数据上进行微调,之后再自己进行指令微调。
偏好微调
最后一种微调类型是偏好微调,其目的是使模型的响应与一组偏好保持一致。这些偏好通常通过一组响应对数据集来体现,其中一个响应被认为是可接受的,另一个则是需要避免的。其目标是降低模型生成包含有毒、有偏见、非法、有害或总体上不安全内容的可能性。偏好微调涉及多种技术,如基于人类反馈的强化学习(RLHF)和直接偏好优化(DPO)等,但这些都超出了本实践实验系列的范围。