目录
一、本周进度
训练相关模型,调整模型参数,记录模型性能,使得模型在性能上有进一步的改进,有待在下一步完成对模型更进一步的了解和改进。
二、学习内容
2.1 微调方法
大模型微调是指在预训练的大型模型上进行进一步训练,以适应特定领域或任务的需求。这种方法可以通过提供领域特定的数据集来调整模型的参数,使其学习到该领域的知识,并提高在该领域的NLP任务上的表现。这些任务包括情感分析、命名实体识别、文本分类、以及对话系统等。
选择预训练模型:选择在大规模数据集上训练好的模型作为基础模型。这些预训练模型通常是针对通用任务(如图像分类、文本生成等)进行了训练的。
冻结部分层次:冻结预训练模型的一部分层次,通常是模型的前几层或中间层。这些层次通常包含了通用的特征提取器,可以被认为是通用知识的表示。冻结这些层次可以防止其权重在微调过程中被过度调整。
添加自定义层次:在预训练模型的顶部添加一些自定义的层次,以适应特定任务的需求。这些自定义层次通常是与任务相关的分类器、回归器或其他任务特定的层次。
训练模型:使用特定任务的数据集对整个模型进行训练。通常,只有添加的自定义层次和部分未冻结的层次会进行训练,而冻结的层次保持不变。通过在特定任务数据集上进行训练,模型可以学习到适应该任务的特定特征。
调整超参数:根据实际情况对微调过程中的超参数进行调整,例如学习率、优化器类型等,以进一步提高模型性能。
高效微调的方法有多种,包括LoRA、Prefix-Tuning、P-Tuning v2(清华大学)等。
2.2 如何调参
①随机梯度下降:主要用于凸损失函数下线性分类器的判别式学习。
②mini-batch梯度下降法:将样本总体分成多个mini-batch。例如100万的数据,分成10000份,每份包含100个数据的mini-batch-1到mini-batch-10000,每次梯度下降使用其中一个mini-batch进行训练,除此之外和梯度下降法没有任何区别。
③Adam:这是我最常使用的方法,Adam算法结合了Momentum和Adaptive Learning Rate的特性,旨在解决传统梯度下降算法中学习率需要手动调整的问题。Adam算法中的动量项类似于动量优化算法,它利用之前梯度的指数加权平均来更新参数,从而在更新参数时考虑了历史梯度的方向。Adam算法中的自适应学习率通过分别为每个参数维护一个自适应学习率,使得不同参数的学习率可以自动调整。具体而言,它使用了梯度的一阶矩估计和二阶矩估计来计算自适应的学习率。
......
三、认知感悟
微调大型模型的核心原因在于需要为模型赋予更加定制化的功能,这包括结合本地知识库进行检索、围绕特定领域问题进行问答等。比如说,考虑VisualGLM这样的通用多模态大型模型吧,入药要将其应用于医学影像判别领域,就需要使用医学影像领域的数据集来进行微调,从而使得模型能够更好地识别医学影像图片。这类微调类似于机器学习模型中的超参数优化,只有通过调整超参数,才能使模型更好地适应当前的数据集。尤其是,大型模型可以进行多次微调,每次微调都是对模型能力的调整,也就是说,在现有已经具备某些特定能力的大型模型基础上进行进一步优化。