在这篇文章中,我想向你展示如何将预训练的大语言模型(LLM)转化为强大的文本分类器。
但为什么专注于分类任务呢?首先,对预训练模型进行微调用于分类,是进入模型微调领域一个温和而有效的入门方式。其次,许多现实世界和商业挑战都围绕文本分类展开:垃圾邮件检测、情感分析、客户反馈分类、主题标注等等。

为了庆祝这本书的发布,我将分享其中一章的节选,该章节将引导你如何将预训练的LLM微调为垃圾邮件分类器。
重要提示
关于分类微调的章节长达35页——对于一篇文章来说太长了。因此,在这篇文章中,我将聚焦于大约10页的内容,介绍分类微调的背景和核心概念。
此外,我还会分享一些书中未包含的额外实验见解,并解答读者可能遇到的常见问题。(请注意,以下节选基于我个人的草稿,尚未经过Manning出版社的专业文本编辑和最终图表设计。)
本节选的完整代码可以在GitHub上找到。
此外,我还会回答你可能关于训练LLM分类器的7个问题:
-
我们需要训练所有层吗?
-
为什么微调最后一个token,而不是第一个token?
-
BERT与GPT在性能上相比如何?
-
我们应该禁用因果掩码吗?
-
增加模型大小有什么影响?
-
使用LoRA可以期待哪些改进?
-
填充还是不填充?
祝阅读愉快!
微调语言模型最常见的方式是指令微调和分类微调。指令微调涉及使用特定指令在一组任务上训练语言模型,以提高其理解和执行自然语言提示中描述的任务的能力,如下图1所示。

下一章将讨论指令微调,如上图1所示。与此同时,本章聚焦于分类微调,如果你有机器学习背景,可能已经熟悉这个概念。
在分类微调中,模型被训练用于识别特定的类别标签,例如“垃圾邮件”和“非垃圾邮件”。分类任务的示例不仅限于大语言模型和邮件过滤,还包括从图像中识别不同植物物种、将新闻文章归类为体育、政治或科技等主题,以及在医学影像中区分良性和恶性肿瘤。
关键在于,经过分类微调的模型只能预测其在训练过程中遇到过的类别——例如,它可以判断某内容是否为“垃圾邮件”或“非垃圾邮件”,如图2所示,但无法对输入文本做出其他任何表述。

与图2中展示的分类微调模型不同,指令微调模型通常能够执行更广泛的任务。我们可以将分类微调模型视为高度专业化的模型,通常来说,开发一个专业化模型比开发一个在各种任务上表现良好的通用模型更容易。
选择正确的方法
指令微调提升了模型根据特定用户指令理解和生成响应的能力。指令微调最适合需要基于复杂用户指令处理多种任务的模型,能够提高灵活性和交互质量。而分类微调则适用于需要将数据精确归类到预定义类别的项目,例如情感分析或垃圾邮件检测。
尽管指令微调更具通用性,但它需要更大的数据集和更多的计算资源来开发精通各种任务的模型。相比之下,分类微调所需的数据和计算能力较少,但其用途仅限于模型训练过的特定类别。