LLM 微调

SimpleMaxR Lv2

LLM 微调 (Fine-tuning) 是一种通过特定领域数据对预训练语言模型进行二次训练的技术。目的是在保持模型通用语言理解能力的基础上,使其适应特定任务或领域。

通过微调技术,基础模型可以显著提升在目标领域(如医疗、法律、金融等)的表现

微调过程

典型微调流程包括以下步骤:

  • 选择基础模型:使用预训练好的通用语言模型(如 Qwen、LLaMA 等)作为起点
  • 准备领域数据:收集与目标领域相关的标注数据集
  • 调整超参数(Hyperparameters):设置合适的学习率、训练轮次等参数(通常比预训练时更小, 这些都是超参数)
  • 领域适应训练:在保持原有参数的基础上,用领域数据继续训练模型
  • 评估验证:通过领域特定的评估指标检验微调效果
  • 迭代上述过程来获得更好的结果直到满意

微调的优点

  • 显著提升特定任务/领域表现
  • 数据效率高(相比从头训练)
  • 计算资源需求相对较少
  • 灵活性高(可针对不同场景定制)

微调可能存在的问题

  • 过拟合风险:过度适配训练数据可能导致泛化能力下降
  • 领域依赖:在非目标领域表现可能下降
  • 需要领域专业知识:数据准备和评估指标设计需要领域知识
  • 计算资源需求:虽然比预训练少,但仍需要可观资源

常见的“微调”方法

三种使预训练模型适应特定任务的方法

这张图描述了三种使用预训练Transformer模型的方法:基于特征的方法(Feature-Based Approach)和两种微调方法(Finetuning I 和 Finetuning II)。

1) 基于特征的方法 (Feature-Based Approach):

  • 流程:
    • 首先,有一个标注好的训练数据集(Labeled training set)
    • 这个数据集被输入到预训练的Transformer模型中
    • 关键点: 预训练的Transformer模型在这里被“冻结”(Keep frozen),也就是说模型的参数在训练过程中不会被更新。
    • Transformer模型的输出,即输出嵌入(Output embedding),被用作特征。
    • 这些特征被输入到一个分类器(Classifier)中。
    • 只有这个分类器会被训练(Update)。
  • 适用场景: 当计算资源有限,或者数据集较小,不适合微调整个Transformer模型时,这种方法比较适用。它利用了预训练模型已经学习到的通用特征,然后针对特定任务训练一个简单的分类器。
  • 实际案例:
    • 情感分析: 假设你使用预训练的 BERT 模型提取文本的特征,然后使用 Logistic 回归或支持向量机 (SVM) 作为分类器。BERT 负责理解文本的语义并生成特征向量,而 Logistic 回归或 SVM 负责判断文本的情感是积极、消极还是中性。
    • 图像分类: 假设你使用预训练的 ResNet 模型提取图像的特征,然后使用一个简单的全连接神经网络作为分类器。ResNet 负责提取图像的边缘、纹理、形状等特征,而全连接神经网络负责将这些特征组合起来,判断图像属于哪个类别(例如,猫、狗、鸟)。
    • 文本分类: 比如新闻主题分类,预训练的Transformer(例如BERT)负责将新闻文本编码成向量,分类器(例如softmax层)负责将这些向量映射到不同的新闻主题标签(例如体育、科技、政治)

2) 微调 I (Finetuning I):

  • 流程:
    • 同样,从标注好的训练数据集开始
    • 数据集输入到预训练的Transformer模型
    • 关键点: 预训练的Transformer模型也被“冻结”(Keep frozen)。
    • Transformer模型的输出被输入到一层或多层全连接层
    • 只有这些全连接层会被训练
  • 适用场景: 这种方法介于完全冻结和完全微调之间。 它允许你调整模型顶层,以适应特定任务,而无需修改预训练Transformer的底层。
  • 实际案例:
    • 命名实体识别 (NER): 假设你使用预训练的 BERT 模型进行 NER 任务。BERT 的输出是每个词的特征向量,你需要判断每个词是否属于某个命名实体(例如,人名、地名、组织名)。你可以在 BERT 的输出之上添加一个或多个全连接层,然后使用一个 Softmax 层作为输出层,预测每个词的类别。
    • 问答系统: 假设你使用预训练的 BERT 模型进行问答任务。BERT 的输入是问题和上下文,你需要从上下文中找到问题的答案。你可以在 BERT 的输出之上添加一个或多个全连接层,然后使用这些全连接层预测答案的起始位置和结束位置。

3) 微调 II (Finetuning II):

  • 流程:
    • 从标注好的训练数据集开始(Labeled training set)。
    • 数据集输入到预训练的Transformer模型(Pretrained transformer)。
    • 关键点: 预训练的Transformer模型所有层的参数都会被更新(Update all layers)。
    • Transformer模型的输出被输入到一层或多层全连接层。
  • 适用场景: 当你有足够的计算资源和较大的数据集时,这种方法往往能获得最好的效果。 通过微调整个模型,你可以使模型更好地适应你的特定任务。

题外话

推荐阅读 ULMFiT 论文(首次提出 NLP 三阶段微调框架)和 BERT 论文的微调章节,这两个工作奠定了现代语言模型微调的基础方法论。

Refs

  • Title: LLM 微调
  • Author: SimpleMaxR
  • Created at : 2025-02-11 19:57:41
  • Updated at : 2025-02-11 12:15:45
  • Link: https://www.hgzre.tech/2025/02/11/LLM 微调/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments