1.1. 微调的定义

微调(Fine-tuning)是一种迁移学习的方法,利用特定领域的数据集对已预训练的大模型进行进一步训练的过程。 其目的在于优化模型在特定任务上的性能,使模型能够更好地适应和完成特定领域的任务。

下面是一般的微调步骤:

  1. 预训练模型选择:选择一个在大规模数据上进行预训练的模型作为基础模型。例如,可以选择一种预训练的语言模型,如BERT、GPT等。
  2. 数据准备:准备用于微调的特定任务数据集。这些数据集应包含任务相关的样本和相应的标签或目标。确保数据集与任务的特定领域或问题相关。
  3. 构建任务特定的模型头:根据任务的要求,构建一个特定的模型头(task-specific head)。模型头是添加到预训练模型之上的额外层或结构,用于根据任务要求进行输出预测或分类。例如,对于文本分类任务,可以添加一个全连接层和softmax激活函数。
  4. 参数初始化:将预训练模型的参数作为初始参数加载到微调模型中。这些参数可以被视为模型已经学习到的通用语言表示。
  5. 微调训练:使用特定任务的数据集对模型进行有监督训练。这包括将任务数据输入到模型中,计算损失函数,并通过反向传播和优化算法(如梯度下降)更新模型参数。在微调过程中,只有模型头的参数会被更新,而预训练模型的参数会保持不变。
  6. 调整超参数:微调过程中,可以根据需要调整学习率、批量大小、训练迭代次数等超参数,以达到更好的性能。
  7. 评估和验证:在微调完成后,使用验证集或测试集对微调模型进行评估,以评估其在特定任务上的性能。可以使用各种指标,如准确率、精确率、召回率等。
  8. 可选的后续微调:根据实际情况,可以选择在特定任务的数据上进行进一步的微调迭代,以进一步提高模型性能。

1.2. 为什么需要参数高效微调(PEFT)

Parameter-Efficient Fine-Tuning(PEFT)是一种微调策略,旨在通过最小化微调参数数量和计算复杂度,实现高效的迁移学习。

它仅更新模型中的部分参数,显著降低训练时间和成本,适用于计算资源有限的情况。 然而,需要注意的是,PEFT 有时可能会达到与完全微调不同的性能水平,特别是在预训练模型需要进行重大调整才能在新任务上表现良好的情况下。

高效微调技术可以粗略分为以下三大类:增加额外参数(A)、选取一部分参数更新(S)、引入重参数化(R)。 而在增加额外参数这类方法中,又主要分为类适配器(Adapter-like)方法和软提示(Soft prompts)两个小类。

1.3. PEFT 有什么优点

这里讨论 PEFT 相对于传统微调的好处。

  1. 减少计算和存储成本:PEFT 只涉及微调少量额外的模型参数,而冻结预训练 LLM 的大部分参数,从而显着降低计算和存储成本。
  2. 克服灾难性遗忘:模型在全面微调起茧,可能会遗忘它在预训练期间学到的知识的地方。
  3. 低数据环境下更好的性能:PEFT 方法在低数据环境下的表现优于完全微调,并且可以更好地推广到域外场景。
  4. 与完全微调相当的性能:PEFT 仅使用少量可训练参数即可实现与完全微调相当的性能。

1.4. 多种不同的高效微调方法对比

参数有效策略可能涉及多种技术:

  1. 选择性层调整:可以只微调层的一个子集,而不是微调模型的所有层。这减少了需要更新的参数数量。
  2. 适配器(Adapters):适配器层是插入预训练模型层之间的小型神经网络。在微调过程中,只训练这些适配器层。适配器学习将预训练的模型提取到的特征使用到新任务。
  3. 稀疏微调:稀疏微调只涉及更改模型参数的一个子集。这通常基于一些标准来完成,这些标准标识了与新任务最相关的参数。
  4. 低秩近似(Low-Rank Approximations):用一个参数较少但在任务中表现相似的模型来近似微调后的模型。
  5. 正则化技术:可以将正则化项添加到损失函数中,以阻止参数发生较大变化,从而以更“参数高效”的方式有效地微调模型。
  6. 任务特定的头(Task-specific Heads):有时,在预先训练的模型架构中添加一个任务特定的层或“头”,只对这个头进行微调,从而减少需要学习的参数数量。

Refs:

Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2024-12-19 16:32:17

results matching ""

    No results matching ""