在自然语言处理领域,大语言模型(Large Language Models, LLMs)展示了卓越的能力。了解这些模型的特点及微调方法可以帮助更好地应用它们。
大语言模型概述
大语言模型的定义
大语言模型(LLM)是用于理解和生成自然语言的人工智能模型。它们通常具有数十亿个参数,并在大量文本数据上进行训练。常见的大语言模型包括:
国外:GPT-3、GPT-4、PaLM、Galactica、LLaMA
国内:ChatGLM、文心一言、通义千问、讯飞星火
大语言模型的特点
能力:
上下文学习:理解上下文并生成响应。
指令遵循:根据任务指令执行特定任务。
逐步推理:利用“思维链”策略处理复杂推理任务。
特点:
参数规模大:捕捉复杂的语言知识和语法结构。
预训练和微调:先在无标签数据上预训练,再用有标签数据微调。
上下文感知能力强:理解和生成依赖前文的内容。
支持多语言和多模态:应用广泛且跨语言。
微调大语言模型
微调的定义
微调是基于已预训练好的模型进行进一步调整的过程,通过在特定任务或领域的数据上进行训练,使模型更好地适应新的需求。
微调的两种主要范式
增量预训练微调(Continue PreTraining):
适用场景:让模型学习新领域的知识。
训练数据:包括文章、书籍、代码等。
指令跟随微调(Supervised Finetuning):
适用场景:使模型根据任务指令进行特定任务。
训练数据:高质量的对话、问答数据。
微调的优势
节省资源和时间:相较于从头开始训练,微调减少了计算开销。
提高效率和准确率:利用预训练模型的基础特征。
避免训练风险:解决从头训练可能出现的收敛、优化和泛化问题。
适用微调的情况
数据集相似:当数据集与预训练模型的数据集相似时效果最佳。
模型准确率低:当预训练模型的表现不理想时。
数据量少:在数据量不足的情况下进行微调。
计算资源有限:当计算资源不充足时,微调是一个有效的选择。
不同数据集下的微调策略
数据集1:数据量少,但数据相似度非常高。在这种情况下,我们只需修改最后几层或最终的softmax层的输出类别。
数据集2:数据量少,数据相似度低。在这种情况下,可以冻结预训练模型的初始层(例如k层),并再次训练剩余的(n-k)层。
数据集3:数据量大,数据相似度低。在这种情况下,由于数据与预训练模型的数据差异较大,最佳方案是从头开始训练神经网络。
数据集4:数据量大,数据相似度高。这是理想情况,可以保留模型的体系结构和初始权重,然后使用这些权重重新训练模型。
微调指导事项
替换softmax层:通常截断预训练网络的最后一层(softmax层),并用与问题相关的新softmax层替换。例如,将ImageNet上1000个类别的softmax层替换为10个类别的新softmax层,并运行预训练的权重。
使用较小的学习率:微调时使用较小的学习率,以避免过快地扭曲已训练好的权重。通常将初始学习率设置为从头开始训练的学习率的10倍。
训练层选择:数据集数量少时,只训练最后一层;数据集数量中等时,冻结预训练网络的前几层的权重,以捕捉通用特征并专注于深层的特定特征。
LoRA
LoRA(Low-Rank Adaptation)是一种高效的微调方法,具有以下优势:
模块化:可以针对不同的任务构建小型LoRA模块,适用于共享预训练模型参数。
高效训练:使用自适应优化器,不需要计算梯度或维护大多数参数的优化器状态。
简化设计:使用简单的线性设计,在部署时将可训练矩阵与冻结权重合并,无推理延迟。
方法组合:LoRA与其他微调方法兼容,可以组合使用。