基于迁移学习的LLaMA 2大语言模型微调优化方法

2024-09-22 00:00孙倩石竞泽裴丽君张倩怡徐凤强
软件工程 2024年9期

关键词:大语言模型;微调优化;迁移学习

中图分类号:TP312 文献标志码:A

0 引言(Introduction)

近年来,大型语言模型[1]的出现和发展对自然语言处理和人工智能领域产生了变革性影响。自GPT-3(Generative Pre-Trained Transformer v3)问世以来,逐渐涌现出一批具有强大竞争力的语言模型,例如ChatGPT[2]、Meta LLaMA[3]、文心一言、盘古大模型等。利用大模型技术解决实际任务,已经成为人工智能领域的发展趋势。然而,大模型技术应用于下游任务时,常常面临诸多挑战,例如数据规模庞大、计算资源有限,以及模型微调所需的训练成本高、微调时间长等,因此大模型难以通过传统的模型训练方式来进一步提高自身的性能。因此,本文主要研究大模型微调优化方法并对其进行改进,通过迁移学习[4]将预训练模型迁移至下游任务场景,然后进行模型微调(Fine-tuning)优化,在继承预训练模型的泛化能力的同时,使模型能够适应下游任务场景,从而提高LLaMA 2[5]预训练大模型在特定任务场景下的应用性能。

1LLaMA 2大语言模型介绍(Introduction of LLaMA 2 pre-trained large model)

本文采用的预训练模型是由Meta AI正式发布的最新一代开源大模型LLaMA 2[5],是一种用于自然语言处理的深度学习模型。LLaMA 2大语言模型是基于原始Transformers架构[6]的生成式预训练模型,其训练数据集包括2万亿个token,上下文长度为4 096,参数包括7 B、13 B和70 B,在各种基准集的测试上的表现突出,并且在多个下游任务上的表现超过了GPT-3。

1.1LLaMA 2大语言模型结构

LLaMA 2大语言模型基于自回归Transformer架构实现,采用32层Transformer的解码器(decoder-only)作为主干网络,通常用于条件生成任务。模型首先通过词嵌入(WordEmbedding)将输入文本转换为词向量;其次将词向量输入解码器网络,学习词向量之间的语义关系,通过解码器的迭代学习提高模型对文本信息的处理能力;最后根据给定的条件信息,可以通过解码器生成相应的答案进行输出,LLaMA 2大语言模型结构图如图1所示。

1.2 模型训练及迁移应用

LLaMA 2大语言模型训练过程如下:首先需要准备大规模的文本语料库作为训练数据,并进行预处理;其次采用词嵌入技术将文本数据向量化;最后使用数据集训练神经网络模型,通过定义的损失函数和优化算法调整模型参数。在训练过程中,参数更新分为前向传播和反向传播两个阶段。前向传播是指将训练数据从输入层传递到输出层的过程,反向传播则是计算模型参数的梯度并利用优化器更新参数。经过多次迭代后,模型逐步学习到语料库中的语言规律和概率分布。

LLaMA 2大语言模型训练过程中,浅层语言知识,如词法、词性、句法等存储在模型的底层和中层,而抽象类的语言知识,如语义、逻辑、推理等广泛分布在模型的中层和顶层结构中,这种模型可以被视为通用的语言理解系统。因此,可以利用迁移学习思想将训练好的LLaMA 2大语言模型用于各种下游任务,例如智能问答、文本分类、情感分析、机器翻译等。

受训练数据集的影响,在下游任务中,原始模型一般会面临不完全适配具体任务场景的问题。因此,需要通过微调训练,将模型的语言理解能力迁移到特定的下游任务中,并与下游任务的语境知识进行适配,提高模型的应用性能。

2LLaMA 2大语言模型微调优化方法(LLaMA 2large language model fine-tuning optimizationmethods)

2.1LLaMA 2大语言模型微调

微调LLaMA 2大语言模型的核心技术包含两个部分:一部分是损失函数,用来验证模型输出的优劣;另一部分是优化器,通过损失函数的梯度更新模型的参数,使模型的输出更接近正确的目标。

为了提高大语言模型的微调效率,本文分别对损失函数和优化器进行改进。通过在损失函数中引入权重方向惩罚因子,减少多头自注意力机制中对输入向量的加权值与其梯度方向相反的情况;通过改进优化器权重衰减策略,平衡模型权重参数的衰减程度,进一步提高模型的优化性能。

本文分别对原有损失函数和优化器进行改进,加快了LLaMA 2预训练大模型的微调收敛速度。同时,本文优化的方法不仅适用于LLaMA 2预训练大模型,还适用于其他具有前向传播和后向传播机制的网络模型。

3 实验(Experiment)

为了验证本文方法的效果,设计了基于LLaMA 2预训练模型的微调优化实验。

3.1 数据集

本文的数据集来源是huggingface 2.4.1的问答任务。问答任务(Question Answering)[10]是根据提出的问题生成使用自然语言的回答,数据集如表1所示。

3.2 参数设置

模型由24层编码器和解码器组成,模型的隐层维度(Hidden State Dimensions)为1024,前馈网络维度(FeedForward Dimensions)为[1 024, 4 096, 1 024],设置参数更新步数(Steps)为1000,最大输入序列长度(Maximum SequenceLength)为1 024,最大输出序列长度(Maximum TargetLength)为512,批样本容量(Batch Size)为16。使用改进后的优化器,其中β1=0.9,β2=0.95,ε=8×10-4,并设置学习率初始为0,在前10%的步数中逐渐预热至峰值,随后在剩余的步数中逐渐衰减至8×10-5,学习率变化曲线如图2所示。设置权重方向惩罚的权重α=0.3。

3.3 问答任务实验结果与分析

为验证本文预训练大模型微调优化方法的性能,基于LLaMA 2大语言模型进行问答任务微调实验。采用问答任务数据集分别在原方法和改进后的优化方法上迭代微调1 000次,对实验结果进行对比。为保证实现效果,本文使用相同的学习率设置策略。

3.3.1 问答任务损失情况分析

本实验将训练过程和验证过程的损失收敛情况进行可视化,问答任务训练损失曲线如图3所示,问答任务验证损失曲线如图4所示,图中的实线为优化后的训练损失曲线和验证损失曲线,虚线为未优化的训练损失曲线和验证损失曲线。

对训练数据和验证数据的损失函数收敛情况进行分析发现,无论是在训练过程还是在验证过程中,尤其是在迭代次数较小的情况下,经优化后的损失函数收敛速度更快。这说明本文提出的损失函数在较少的迭代步数下可以加速模型的学习,并且可以使模型的输出更接近正确的目标。

3.3.2 问答任务实例

为了进一步验证改进后的模型微调优化方法的性能,分别利用未改进与通过改进的微调优化方法的模型进行问答任务测试。当向模型提问“先天性单管扩张疾病是什么?”时,使用本文提出的改进的微调优化方法的模型在训练初期(迭代第100轮时)便可得到正确答案,而此时未使用改进的微调优化方法的模型仍没有得到正确答案,甚至出现乱码等情况。通过实例说明本文提出的改进微调优化方法短时间内达到的收敛速率更快,问答任务实例如表2所示。

4 结论(Conclusion)

本文针对大模型在应用于实际任务场景的微调过程中面临的时间过长、成本高等问题,提出一种基于迁移学习的LLaMA 2预训练大模型微调优化方法。该方法通过改进自注意力验jDXXGAILiQEHyjMPvPL+9Q==证的损失函数及优化器,加快模型的收敛速度。在问答任务的数据集上进行实验验证,通过训练损失对比和验证损失对比,可以看出改进后的模型收敛速度更快,因此改进后的微调优化方法可以有效减少微调的迭代次数,提高微调效率,从而提升大语言模型在下游任务的迁移应用能力。

作者简介:

孙倩(1993-),女,硕士,讲师。研究领域:深度学习,自然语言处理。

石竞泽(2004-),男,本科生。研究领域:人工智能,深度学习。

裴丽君(1987-),女,硕士,讲师。研究领域:人工智能,自然语言处理。

张倩怡(1994-),女,硕士,讲师。研究领域:人工智能,自然语言处理。

徐凤强(1991-),男,博士,讲师。研究领域:人工智能,深度学习,图像识别。