版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章预训练模型本章主要内容:1.PLM特点与分类2.自回归语言模型3.自编码语言模型4.编码器-解码器模型5.前缀语言模型6.排列语言模型7.PLM训练8.PLM的微调9.应用方法
6.1PLM特点、结构与分类
PLM现已成为LLM的主流模型,PLM发展过程如图6-1所示。PLM发展的重要时间点如下:
·在2013年,Word2vec词向量产生模型开启了自然语言预训练的序章。
·在2015年注意力的出现使得模型可以关注更重要的信息。
·在2016年自注意力机制出现。
·在2017年提出Transformer模型,将PLM的效果提升到了新的高度。
·在2017年后,BERT、RoBERTa、XLNet、T5、ALBERT、GPT-3等语言大模型出现,从自然语言理解及自然语言生成等角度,不断地刷新自然语言处理领域任务的SOTA表现6.1.1PLM特点1.泛化能力强2.适应性强3.数据效率高
6.1.2PLM核心结构PLM的结构是基于深度神经网络而构建,尤其是Transformer架构,因为它能够有效地处理序列数据并捕捉长距离依赖关系。在原始Transformer模型基础上,相继衍生出了三类PLM:编码PLM、解码PLM和编码-解码PLM。1.编码器PLM2.解码器PLM3.编码-解码PLM
6.1.3PLM分类
PLM可以根据不同的标准进行分类。常见的分类方式如下。1.根据训练目标和任务分类(1)通用预训练模型(2)任务特定预训练模型2.根据模型架构分类(1)基于Transformer的模型(2)基于循环神经网络(RNN)的模型(3)基于卷积神经网络(CNN)的模型3,根据输入表示分类(1)单向模型(2)双向模型4.根据是否开源分类(1)开源模型(2)闭源模型5.根据语言类型分类(1)单语言模型(2)多语言模型
6.2自回归语言模型自回归语言模型就是根据上文预测下文或者根据下文预测上文,典型的代表是GPT,只能利用上文或者下文的信息,不能同时利用上文和下文的信息
6.2.1自回归语言模型原理自回归语言模型的原理是基于统计学习理论,其核心思想是通过前面的词来预测序列中的下一个词。以下是自回归语言模型的基本原理。1.序列建模自回归语言模型将文本视为一个时间序列,其中每个词或字符是序列中的一个元素。模型的任务是预测序列中的下一个元素,即给定一个序列的前缀,预测下一个词或字符。2.条件概率自回归模型使用条件概率来表示序列中下一个元素的概率。具体来说,给定一个序列w1,w2,...,wn,模型试图估计序列中每个词wi出现的概率,这个概率是在观察到序列中所有前面的词的条件下计算的:
。
3.最大似然估计在训练过程中,自回归语言模型的目标是最大化训练数据上的对数似然,即最大化以下目标函数:
其中θ是模型的参数,N是训练数据中的序列数。 自回归语言模型架构其背后的核心理念可追溯至自回归模型与Transformer架构两大理论基础。自回归模型是一种统计建模方法,通过当前状态依赖于过去状态的性质来描述随机过程。在语言模型中,自回归模型假设当前词的概率分布仅取决于其之前的词序列。
6.2.2自回归语言模型结构Transformer架构是GPT所依赖的深度学习结构,完全基于自注意力机制构建,能够高效并行处理长序列数据,可以捕获长程依赖关系。1.自回归语言模型预测下一个词时,使用前面的词作为上下文。这表明,为了预测一个句子中的第t个词,它会使用从第1到第t-1的词。这种模型特别适用于文本生成任务。例如,GPT系列就是自回归模型,其特点是只有一个生成方向(通常是从左到右)预测下一个词。2.Transformer利用自注意力机制,使得每个位置的token,都有机会注意到任意位置的token。为了避免下文信息泄露,使用了注意力屏蔽方法。注意力屏蔽矩阵M经过配置,可以让xi屏蔽来自xj
的注意力。在图6-2中,利用注意力屏蔽矩阵可以实现任意位置token,但无法接收来自下文的信息。
3.解码器自回归语言模型结构如图6-3所示,语言模型预训练的时候,采用自回归(AR)方法,从左到右逐个生成单词,第i个单词只能看到它之前的第1个到第i-1个单词,但不能看到i+1,i+2,…后面的单词。GPT-1、GPT-2和GPT-3模型都采用这种结构的模型。可以看出,解码器自回归(AR)语言模型结构是个单向语言模型的结构。.
图6-2图6-3对于语言生成类的任务,这种结构是效果最好的结构之一。因为只能看到上文、但看不到下文,由于对于很多语言理解类任务,信息损失很大,所以这种结构适合做语言生成类的任务,而不适合语言理解类的任务。解码器自回归语言模型是一种基于Transformer架构的模型,它在自然语言处理任务中表现出色,尤其是在文本生成方面。这种模型的核心特点是解码器部分采用自回归的方式生成文本,即每个时间步的输出作为下一个时间步的输入。6.2.3解码器自回归语言模型构建
1.数据准备 收集大规模文本数据(如网页、书籍、社交媒体等),进行预处理(如分词、去停用词、添加起始/结束标记等)。
2.模型构建 使用深度学习框架(如PyTorch、TensorFlow)搭建PLM架构,包括多层Transformer编码器、自注意力机制、位置编码等组件。
3.预训练 在大规模无标注文本数据上执行语言模型任务进行预训练,通过最大化预测下一个词的概率,学习通用的语言表示。
4.微调 针对特定NLP任务(如文本生成、问答、文本分类等),在已预训练的PLM基础上添加任务特定的输出层,然后在相应的小规模标注数据集上进行微调,优化模型对特定任务的适应性。6.2.4训练和推理的局限性1.训练效率:由于自回归模型在训练时必须按顺序处理序列,因此训练效率较低。
2.推理速度:在生成文本时,模型必须逐个词地生成,这限制了并行计算的可能性,导致推理速度较慢。
3.上下文长度:自回归模型通常受到上下文长度的限制,因为它们需要根据前面的所有词来预测下一个词,这可能导致长序列的处理效率低下。 自回归语言模型简单、直观,在自然语言处理领域得到了广泛的应用,尤其是在文本生成任务中。然而,随着模型规模的增大和数据量的增加,研究者们也在探索更高效的模型架构,如非自回归模型。6.3自编码语言模型自编码语言模型(AutoencoderLanguageModel)是一种基于自编码器原理的语言模型。自编码器是一种数据压缩算法,其中压缩和解压缩功能是数据驱动、学习得到的,而不是预先设定的。6.3.1自编码语言模型原理自回归语言模型只能根据上文预测下一个单词,或者反过来,只能根据下文预测前面一个单词。相比而言,自编码语言模型通过在输入X中随机Mask掉一部分单词,然后预训练过程的主要任务之一是根据上下文单词来预测这些被Mask掉的单词,如果对去噪自动编码器比较熟悉的话,就会看出,这确实是典型的自动编码器(DAE)的思路。那些被Mask掉的单词就是在输入侧加入的所谓噪音。类似BERT这种预训练模式,被称为自编码语言模型(DAELM)。 自编码模型通常包括一个编码器和一个解码器。编码器将输入(如文本)转换为一个固定大小的向量表示(称为编码),而解码器则试图从这个编码中重建原始输入。自编码模型常用于机器翻译或句子摘要的任务。自编码语言模型可以被视为一种自编码模型,尽管它不是为了重建其输入而设计的,而是为了预测其中的某些隐藏词。其特点是:能够同时捕获前后文信息,因为它可以同时考虑一个词的左侧和右侧的上下文。相似之处:两者都可以捕获语言的统计特性,并且都是基于深度学习的神经网络模型。不同之处:自回归模型更专注于生成文本,而自编码模型更多地关注于表示和转换文本。最后,值得注意的是,这两种架构可以结合使用。例如,T5(Text-to-TextTransferTransformer)模型就将问题和答案都视为文本,并使用自回归模型来生成答案,同时又利用了自编码模型的一些思想。6.3.2自编码语言模型结构自编码语言模型没有顺序和次序约束,可以一次性获取到序列中的所有信息。自编码语言模型通常包括一个编码器和一个解码器。编码器将输入(如文本)转换为一个固定大小的向量表示(称为编码),而解码器则试图从这个编码中重建原始输入。自编码模型常用于如机器翻译或句子摘要的任务。自编码器结构主要特点可以同时看到文本的上文和下文,对于语言理解类的任务,采用这种结构效果非常明显,如图6-4所示。自编码语言模型结构适合语言理解类的任务,不适合语言生成类的任务。6.3.3自编码语言模型训练一个简化的自编码语言模型训练过程如下:1.准备数据:收集大量文本数据,如语料库、文章等。2.数据预处理:对文本进行分词、去停用词、字符编码等操作。3.构建模型:设计编码器和解码器的网络结构,如使用循环神经网络(RNN)、卷积神经网络(CNN)或Transformer等。4.训练模型:使用无监督学习方法训练自编码器,如最小化输入文本与解码器输出之间的重构误差。5.优化模型:通过调整模型参数、超参数等,提高模型性能。6.应用模型:将训练好的自编码语言模型应用于下游任务,如文本分类、情感分析等。自编码语言模型的优缺点正好和自回归语言模型反过来,它能比较自然地融入双向语言模型,同时可以看到被预测单词的上文和下文,这是其优点。缺点是:主要在输入侧引入[Mask]标记,导致预训练阶段和微调阶段不一致的问题,因为在微调阶段是看不到[Mask]标记的。但自编码器就要引入噪音,[Mask]标记就是引入噪音的手段。自编码语言模型是一种旨在重构输入数据的模型,它们通常用于降维或特征学习,而不是直接用于生成文本。在NLP中,自编码语言模型主要关注于学习输入文本的有效表示。
6.4编码器-解码器模型
编码器-解码器预训练模型是一种在自然语言处理中广泛使用的架构,特别是在机器翻译、文本摘要、对话系统等序列到序列任务中。自编码语言模型适于语言理解类的任务,自回归语言模型适于语言生成类的任务。结合两者的优势,使得PLM既适于生成类任务,又能适于理解类任务,所以提出了编码器-解码器。6.4.1编码器-解码器原理1.基本概念 (1)编码器:负责将输入序列(如一个句子)编码成一个固定长度的向量,这个向量通常被称为上下文向量或编码向量,它捕获了输入序列的语义信息。 (2)解码器:负责根据编码器生成的上下文向量生成目标序列(如翻译后的句子或文本摘要)。2.预训练原理 (1)大规模语料库预训练: 编码器-解码器模型通常在大规模语料库上进行预训练,以学习通用的语言表示。 在预训练阶段,模型会尝试学习如何重建输入序列,或者执行其他辅助任务,如掩码语言模型(MaskedLanguageModel,MLM)或下一句预测(NextSentencePrediction,NSP)。 (2)自监督学习 预训练通常是自监督的,意味着不需要标注的数据。模型通过预测文本中的部分隐藏或随机替换的片段来自动生成标签。.3.编码器-解码器预训练步骤 (1)输入处理:将输入文本转换为模型可以理解的格式,如词嵌入。 (2)编码器预训练: 编码器读取输入序列,并通过其网络结构(如RNN、LSTM、Transformer等)生成上下文向量。 在预训练阶段,编码器可能会被训练来预测序列中的下一个token,或者重建被掩码的token。 (3)解码器预训练: 解码器利用编码器生成的上下文向量来重建输入序列或执行其他预训练任务。 在标准的编码器-解码器设置中,解码器在生成序列时会逐步读取自己的输出,模拟翻译或生成文本的过程。 (4)参数优化: 通过反向传播和梯度下降等优化算法,调整编码器和解码器的参数,以最小化预训练任务中的损失函数。4.微调 预训练完成后,编码器-解码器模型可以针对特定任务进行微调: (1)任务适配:根据特定任务的需求,调整模型的架构或损失函数。 (2)数据集:使用特定任务的标注数据集进行训练,以进一步提升模型在特定任务上的表现。6.4.2编码器-解码器结构编码器采用自编码模式、解码器采用自回归模式的解码器结构如图6-5所示,代表模型为BART模型、T5模型。主要特点是同时适合语言理解类的任务和语言生成类的任务。.在编码器侧,单独使用一个Transformer,采用了自编码的结构,编码阶段采用双向语言模型,以更充分地编码输入信息;而在解码器侧,使用另外一个Transformer,采用了自回归模式结构,从左到右逐个生成单词。解码器侧和标准的解码器自回归还是有不同的地方:解码器侧生成的单词,除了像解码器自回归结构一样能看到在它之前生成的单词序列外,还能看到编码器侧的所有输入单词。而这一般是通过解码器侧对编码器侧单词进行注意力操作方式来实现的,这种注意力一般放在编码器顶层Transformer块的输出上。在进行预训练的时候,编码器和解码器同时对不同屏蔽部分进行预测。编码器侧双向语言模型生成被随机屏蔽的部分单词;解码器侧单向语言模型从左到右生成被屏蔽掉的一部分连续片断。两个任务联合训练,这样编码器和解码器两侧都可以得到比较充分地训练。6.5前缀语言模型前缀语言模型(PrefixLanguageModel)是一种自然语言处理(NLP)模型,其核心思想是利用给定的文本前缀来预测接下来的文本内容。6.5.1前缀语言模型原理·文本前缀:前缀语言模型接收一个文本序列的前缀作为输入,这个前缀可以是任意长度的文本片段。·预测下一个词:模型的任务是预测给定前缀之后最可能出现的下一个词或字符。·概率分布:模型输出的是一个概率分布,表示在给定前缀的情况下,每个词或字符出现的概率。1.模型结构(1)嵌入层:将输入的前缀中的每个词转换为一个固定大小的向量,这通常通过词嵌入来实现。(2)编码器:编码器可以是循环神经网络(RNN)、长短期记忆网络(LSTM)、门控循环单元(GRU)或Transformer等结构,它负责处理嵌入层输出的向量序列,并捕捉前缀中的上下文信息。(3)输出层:输出层通常是一个softmax函数,它将编码器的输出转换为一个概率分布,每个维度对应词汇表中的一个词。2.训练过程(1)数据准备:训练数据由大量的文本序列组成,每个序列被分为前缀和目标词。例如,对于序列“我喜欢吃苹果”,可以将“我喜欢吃”作为前缀,将“苹果”作为目标词。(2)损失函数:训练过程中,模型的目标是最小化损失函数,常用的损失函数是交叉熵损失,它衡量了模型预测的概率分布与真实分布之间的差异。(3)优化:通过梯度下降等优化算法,根据损失函数的梯度来更新模型的参数。6.5.2前缀语言模型结构前缀语言模型结构如图6-6所示,代表模型为UniLM模型。前缀语言模型其实是编码器-解码器模型的变体,标准的编码器-解码器模型各自使用一个独立的Transformer;而前缀语言模型相当于编码器和解码器通过分割的方式,分享了同一个Transformer结构,编码器部分占用左部,解码器部分占用右部,这种分割占用是通过在Transformer内部使用注意力屏蔽来实现的。与标准的编码器-解码器模型相类似,前缀语言模型在编码器部分采用AE模式,就是任意两个词都相互可见,解码器部分采用AR模式,即待生成的单词可以见到编码器侧所有单词和解码器侧已经生成的单词,但是看不到未来从左到右没有产生的单词。6.6排列语言模型排列语言模型(PermutationLanguageModel)是一种自然语言处理(NLP)模型,它通过考虑文本序列的所有排列来学习语言模式。这种模型的核心思想是,一个文本序列中的词可以以多种方式排列,而每种排列都有可能传达相同或相似的信息。6.6.1排列语言模型原理1.排列生成:排列语言模型首先生成一个文本序列的所有可能排列。例如,对于包含三个词的序列[A,B,C],其可能的排列有[A,B,C]、[A,C,B]、[B,A,C]、[B,C,A]、[C,A,B]和[C,B,A]。2.排列学习:模型学习这些排列的分布,而不是仅仅学习原始序列的分布。这意味着模型不仅需要理解序列中的词如何组合在一起,还需要理解这些词在不同排列中的关系。3.上下文表示:排列语言模型通过考虑所有排列,为每个词生成上下文表示。这些表示捕获了词在多种上下文中的使用方式。6.6.2排列语言模型结构因为AR模型只能获取序列的上文信息,看不到下文的tokens。为了让AR模型同时看到上下文信息,既然更改不了AR模型的特性,那就更改输入序列,通过对序列中的tokens进行排列组合,就可以让每token既看到上文tokens,又能看到下文的tokens。
例如:一个输入序列为[x1,x2,x3,x4],那么对其所有的token进行排列组合,就有4!种组合,有[x3,x1,x4,x2],[x2,x4,x1,x3,],[x1,x2,x4,x3,],……等。
只屏蔽一个词的结果是预测这个词时可用的上下文变得多了,使得预测该词这个任务变得简单了,而相对琐碎的任务无法让模型学到更有用的信息为了实现这一点,提出了下面的目标函数:其中,ZT表示长度为T的索引[1,2,…,T]所有可能排列集。使用ZT表示序列[1,2,…,T]的所有可能的排列组合,zt表示第t个token,z<t表示Z中的前t-1个tokens。通过最大化所有排列的期望对数似然概率logpθ来优化模型。应说明,模型并不更改输入序列的token顺序,也就是说输入模型的自始至终都是原来的顺序[x1,x2,x3,x4],这也是为了保证与微调时一致,因为下游任务微调的时候输入模型的就是序列本身的顺序。tokens的排列组合是通过Transformer中的注意力屏蔽来实现的,通过注意力屏蔽可以让token看到相应的上下文tokens。因为传统的AR模型就是一个下三角的注意力屏蔽来保证每个token看不到下文的tokens。
.排列语言模型(PermutedLanguageModel,PLM)结构如图6-7所示,代表模型为XLNet模型,排列语言模型本质上是前缀语言模型的一种变体。排列语言模型采用单个Transformer模型作为主干结构,在语言模型预训练过程中,它看上去遵循AR从左到右的输入过程,这符合一般生成任务的外在表现形式,但是在内部通过注意力屏蔽,实际做法是AE的做法,无非是把AE的做法隐藏在Transformer内部。从细节来说,PLM和AE主要有两个区别:首先,预训练过程中,输入句子去掉了屏蔽标记,改为内部注意力屏蔽,以保持预训练过程和下游任务微调的一致性。PLM和AE的最主要区别,PLM认为被屏蔽掉的单词之间是相互有影响的,先产生的被屏蔽掉的单词,对后生成的被屏蔽掉的单词,在预测的时发生作用,而标准的AE则认为被屏蔽掉的单词是相互独立的,相互之间不产生作用。.1.模型结构 模型结构由嵌入层、排列网络、编码器和和输出层组成。 (1)嵌入层:将输入序列中的每个词转换为一个固定大小的向量。 (2)排列网络:排列网络可以是基于注意力机制的模型,它负责处理嵌入层输出的向量,并学习如何排列这些向量以生成不同的序列。 (3)编码器:编码器可以是循环神经网络(RNN)、长短期记忆网络(LSTM)、门控循环单元(GRU)或Transformer等结构,它用于处理排列后的序列并生成上下文表示。 (4)输出层:输出层通常是一个softmax函数,它将编码器的输出转换为一个概率分布,表示每个排列的可能性。2.训练过程 数据准备:训练数据由文本序列组成,模型需要生成这些序列的所有排列。 损失函数:训练过程中,模型的目标是最小化损失函数,这通常是通过比较模型预测的排列分布与实际排列分布(通常是均匀分布,因为所有排列都是等可能的)来计算的。 优化:通过梯度下降等优化算法,根据损失函数的梯度来更新模型的参数。6.6.3排列语言模型的特点与应用1.特点
·上下文丰富性:通过考虑所有可能的排列,模型能够学习到更丰富的上下文信息。
·鲁棒性:模型能够处理文本中的词序变化,这在处理噪声数据或理解文本的不同解释时非常有用。
·计算复杂性:由于需要考虑所有排列,排列语言模型的计算复杂度通常很高,尤其是在处理长序列时。
2.应用
·文本理解:排列语言模型可以用于改善文本理解,尤其是在处理具有多种解释的文本时。
·文本生成:模型可以生成多样化的文本,因为它考虑了词的不同排列方式。
·机器翻译:在翻译任务中,排列语言模型可以帮助理解源语言中的不同词序,并生成合适的目标语言序列。 排列语言模型是一种相对较新的方法,它在某些NLP任务中显示出潜力,但由于其计算复杂性,它在实际应用中可能需要进一步的优化和简化。6.6.4PLM结构比较1.从模型效果来看,编码器-解码器结构无论在语言理解类还是语言生成类任务中,其效果都是最好。它的优点是效果好,能够在一个框架下完成理解和生成任务;缺点是由于参数多计算量大,所以模型比较重。采用这个结构的代表模型包括T5模型和BART模型。2.因为编码器-排列语言模型比较重,如果从相对轻量结构中进行选择,对于语言理解类任务,自编码语言模型结构相对而言效果较好,代表模型很多,典型的模型为ALBERT、RoBERTa;对于语言生成类任务,解码器自回归结构和前缀语言模型结构相对效果较好,解码器自回归语言模型的代表模型是GPT系列,前缀语言模型的代表模型是UniLM。语言理解类任务应该用AE任分类务,语言生成类任务应该用AR任务。6.7PLM预训练预训练模型是大数据的主流模型,预训练模型的训练主要分为两步,第一步是在大量未标注数据上预训练模型,以便模型能够学习到通用的特征表示;第二是对预训练模型在各种下游任务上进行微调,从而进一步提高模型的性能。预训练-微调训练与大语言模型经典训练的比较如图6-8所示。6.7.1预训练过程与作用预训练是语言大模型训练的一种形式,通常是指在一个大规模的数据集上训练一个模型,以便捕捉到通用的知识或特征。预训练过程不需要针对特定的任务进行优化,预训练的目的是学习通用特征。预训练后的模型可以在多种下游任务中进行微调,以适应特定应用的需求。预训练通常使用大规模的通用数据集、预训练模型可以应用于多种任务、参数规模大,但预训练模型的训练不限于预训练,还包括针对特定任务的微调。
1.预训练的过程 预训练模型的预训练是通过自监督学习在大量非结构化文本数据上训练LLM,将这个LLM称为基座模型。 (1)选择预训练任务 (2)收集大量数据 (3)设计模型架构 (4)训练模型 (5)监控训练过程 (6)评估模型 (7)保存和分享模型
.2.预训练的作用 (1)加速训练过程:通过预训练,在大规模数据上学习到的通用特征表示可以作为后续微调训练的初始化参数,可以加速模型在特定任务上的训练过程。这是由于预训练的参数已经接近最优,并且已经捕捉到了输入数据中的通用模式,这样在目标任务上的微调优化过程更容易收敛。(2)提高性能:这是因为在预训练阶段,模型学习到了大量的数据中的通用特征,这些特征对于许多任务都有用。在目标任务学习中,预训练的模型能够更好地在这些通用特征基础上微调,从而提高模型性能。(3)解决数据不足问题:在许多实际任务中,数据往往有限,特别是深度学习模型需要大量的数据进行训练。通过预训练,可以利用大规模数据集进行通用特征的学习,然后将这些学到的特征应用于目标任务,从而克服数据不足的问题。(4)迁移学习:预训练的模型可以作为迁移学习的基础。将预训练模型的参数应用于新的相关任务,可以利用预训练模型在大规模数据上学习到的通用特征,从而在新任务上提高性能。这对于目标任务数据较少的情况下特别有用(5)提高泛化能力:预训练有助于提高模型的泛化能力,即基座模型在未见过的数据上表现良好。通过在大规模数据上学习通用特征,模型更能够从输入数据中捕捉普遍的模式,而不是过度拟合训练集。6.7.2预训练策略预训练的策略涉及如何有效地利用大量数据来训练模型,以便模型能够学习到通用的特征表示,预训练的关键策略如下。
1.自监督学习
2.多任务学习
3.迁移学习
4.数据增强
5.对比学习
6.渐进式训练
7.硬示例挖掘
6.自适应学习率
9.正则化和dropout 10.分布式训练
11.混合精度训练 这些策略的选择和应用取决于具体的应用场景、数据集特性、计算资源和模型复杂性。通常需要通过实验和迭代来找到最佳的预训练策略。6.8PLM微调
6.7.3预训练与微调比较
1.数据集(1)预训练阶段:预训练通常使用大规模无标签通用数据集进行无监督或自监督训练,因为其目标是学习通用特征表示,无需特定标签信息。(2)微调阶段:训练使用特定任务的有标签数据集,因为需要根据任务的特定标签进行监督式训练,优化模型在该特定任务上的性能。
2.特征表示(1)预训练阶段:预训练的目标是学习数据的通用特征表示,使得模型能够捕捉数据中的一般模式和结构。(2)微调阶段:在训练阶段,预训练的模型参数(通用特征表示)可以作为初始化参数,然后根据特定任务的目标函数进一步微调模型参数,使其更适应该任务。3.任务目标预训练和微调训练是两具有两个不同的目标,它们的目标、数据集和特征表示等方面都有所区别。(1)预训练阶段:预训练的目标是促使模型学习更加泛化的特征,使其能够在各种任务上有良好的表现。(2)微调阶段:训练的目标是针对特定任务,最小化损失函数并优化模型参数,使其能够在该任务上达到最佳性能。预训练提供了一种有效的方式来初始化模型参数,并使模型受益于大规模数据的通用特征表示,从而在特定任务上表现更好。6.8PLM微调对PLM模型在各种下游任务上进行微调,从而进一步提高模型的性能。6.8.1微调分类对于语言大模型的微调技术,可以基于不同的方面有不同的分类。1.基于参数规模分类可以简单分为全参数微调和高效参数微调。前者一般是用预训练模型作为初始化权重,在特定数据集上继续训练,全部参数都更新的方法。而后者则是期望用更少的资源完成模型参数的更新,包括只更新一部分参数或者说通过对参数进行某种结构化约束,例如稀疏化或低秩近似来降低微调的参数数量。2.基于微调的目标分类如果按照在模型哪个阶段使用微调,或者根据模型微调的目标来区分,也可以从提示微调、指令微调、有监督微调的方式来分类。3.基于高效微调技术分类基于高效微调技术分类可以分为以下三大类,增加额外参数、选取一部分参数更新、引入重参数化。而在增加额外参数这类方法中,又主要分为类适配器方法和软提示两个小类。(1)基于增加额外参数,如PrefixTuning、PromptTuning、AdapterTuning等。(2)选取一部分参数更新,如:BitFit。(3)引入重参数化,如:LoRA、AdaLoRA、QLoRA常见的微调技术有指令微调、Prefix微调、Prompt微调、P-微调、Adapter微调、LoRA、RLHF等。6.8.2高效微调微调一般指全参数的微调,又称全量微调,这是一类较早诞生的微调方法。全参数微调需要消耗大量的算力,随着模型变得越来越大,在硬件上对模型进行全部参数的微调变得不可行。实际使用起来并不方便,因此不久之后又诞生了只围绕部分参数进行微调的高效微调方法。此外,为每个下游任务独立存储和部署微调模型已变得非常昂贵,因为微调模型(调整模型的所有参数)与基座模型的大小相同。在微调阶段,基座模型使用特定任务的有标签数据集进行微调,目标是根据该任务的特定目标函数调整模型参数,使模型能够完成该任务。在语言大模型训练中,高效微调(Parameter-EfficientFine-Tuning,PEFT)是指在预训练模型的基础上,使用较少的数据和计算资源进行精确调整,以适应特定的任务或领域。由于语言大模型通常包含数十亿甚至更多的参数,从头开始训练需要大量的计算资源和时间,因此高效微调成为了一个重要的应用方向。高效微调的策略和方法如下。 (1)迁移学习 迁移学习是高效微调的核心思想。通过在特定任务上微调一个在大规模数据集上预训练的模型,可以利用预训练模型学到的通用语言特征,从而在新的任务上获得更好的性能。 (2)参数冻结 在微调过程中,可以冻结模型的某些层或参数,只更新部分层的参数。这样可以减少需要训练的参数数量,从而加快训练速度并减少过拟合的风险。
.
(3)学习率调度 使用适当的学习率调度策略可以在微调过程中更有效地更新模型参数。例如,可以使用较小的学习率开始微调,以避免破坏预训练得到的特征。 (4)选择性微调 只对模型中与任务最相关的部分进行微调,例如只微调输出层或者任务特定的注意力机制,而其他部分保持不变。 (5)知识蒸馏 使用一个大型模型(教师模型)来训练一个较小的模型(学生模型)。学生模型尝试模仿教师模型的输出,从而在保持性能的同时减少模型的大小。 (6)多任务学习 在多个相关任务上同时训练模型,可以使得模型学习到更通用的特征,从而在新的任务上微调时能够更快地适应。 (7)使用辅助数据 在微调过程中,可以使用额外的辅助数据来增强模型的表现,例如使用未标注的数据进行无监督预训练或者使用相关的任务来增强模型的能力。 (8)适配器层 在模型的现有层之间插入小的适配器模块,这些模块包含少量的参数,可以训练这些参数来适应新任务,而保持模型的主体结构不变。 通过这些方法,可以高效地利用语言大模型来解决特定的问题,同时减少训练成本和资源消耗。随着研究的深入,未来可能会出现更多高效微调的策略和技术。6.8.3P-Tuning微调P-Tuning微调又称为参数化微调,P-Tuning中的P代表参数化(Parameterized)。P-Tuning是一种参数化提示(ParameterizedPrompt)的方法,它通过学习一组可训练的提示参数来适应下游任务。这些提示参数被添加到输入序列中,以引导预训练模型生成更适合特定任务的输出。P-Tuning微调的主要思想是引入一些可学习的参数(通常是少量的),这些参数用于控制模型的行为,从而使模型能够适应新的任务。这种方法的核心优势在于,它大幅减少了需要训练的参数数量,从而降低了计算成本,并可能减少过拟合的风险。P-Tuning微调的步骤如下:(1)任务嵌入:
P-Tuning为模型的输入添加了额外的可学习参数,称为提示嵌入。这些嵌入可以被看作是特定于任务的指令,指导模型如何处理输入数据。(2)软提示: 将这些任务嵌入通常被添加到输入序列的开始或结尾,作为“软提示”,与硬编码的提示(如GPT-3中的“Let’sthinkstepbystep”这样的提示)不同,软提示是可学习的,可以在微调过程中根据特定任务进行调整。(3)参数更新: 在微调过程中,只有这些软提示嵌入,模型的最后一层(通常是输出层)的参数被更新。模型的其余部分保持冻结,不参与训练。(4)任务适应L: 通过这种方式,模型可以快速适应新的任务,因为只有一小部分参数需要学习。这使得P-Tuning非常适合于资源受限的环境,或者需要快速适应多个任务。P-Tuning已经被应用于各种NLP任务,如文本分类、命名实体识别、机器翻译等,并显示出良好的性能。这种方法不仅提高了微调的效率,还有助于模型在不同任务之间的泛化。随着NLP领域的不断发展,P-Tuning和其他参数高效微调技术将变得更加流行和有效。6.8.4指令微调指令微调(InstructionTuning)是NLP领域中的一种微调技术,指令微调的主要思想是训练模型理解一系列的指令,并生成相应的输出。这种方法使用特定的数据集,其中包含指令和预期的输出。通过在数据集上对模型进行微调,可以使其更好地理解和遵循指令。它能显著地提升模型在未知任务零样本条件下的表现。在使用预训练语言模型的基础上,通过进一步训练来优化模型对特定指令的理解和执行能力。1.指令微调过程(1)预训练模型:首先,使用大量的文本数据对语言模型进行预训练,使其能够捕捉到语言的通用特征和知识。(2)收集指令数据:然后,收集或创建一系列包含特定指令的样本数据。这些指令可以是各种不同的任务,比如问答、文本生成、情感分析等。(3其能够更好地理解和执行这些特定的指令。(4)评估和优化:在微调后,评估模型的性能,并根据需要对模型进行进一步的优化,以提高其对指令的响应质量和准确性。 指令微调的主要目的是改善模型在遵循指令方面的能力,使其能够更好地适应实际应用场景,例如聊天机器人、问答系统等。通过这种方式,模型可以更好地理解人类的意图,遵循指令方面的表现,并生成更加符合预期的输出,从而使其在实际应用中更加有用。然而,指令微调需要大量的人工编写指令,并且可能会使模型过度依赖于这些指令,从而在遇到未知指令时表现不佳。.
2.微调效果评估方法评估微调效果是确保语言模型适应特定任务的重要步骤。常用的评估方法如下。 (1)人类评估 人类评估可以直接评估模型的输出质量,提供定性的反馈。可以通过问卷调查、评分或者对模型输出进行排名来收集评估数据。这种方法虽然成本较高,但可以提供最直接、最真实的性能反馈。 (2)自动评价指标
·准确性:对于分类任务,准确性是一个直接的评估指标,它衡量模型正确分类的比例。
·精确率和召回率:对于信息检索和分类任务,这两个指标可以衡量模型输出相关信息的准确性和全面性。
·F1分数:是精确率和召回率的调和平均数,用于综合衡量模型的性能。 (3)特定任务指标 对于某些特定任务,可能需要设计专门的评估指标。例如,在对话系统中,可能需要评估对话的流畅性、相关性以及是否能够提供有用的信息。 指令微调已被应用于各种任务,如问答、对话生成、文本生成等。这种方法不仅提高了模型对指令的理解能力,还使其能够更好地适应特定的应用场景。随着NLP领域的不断发展,指令微调和其他微调技术可能会变得更加流行和有效。6.8.5LORA微调1.LORA的原理
LORA的原理很简单,语言大模型都是过参数化的,当用于特定任务时,其实只有一小部分参数起主要作用。也就是参数矩阵维度很高,但可以用低维矩阵分解近似。 具体做法是,在网络中增加一个旁路结构,旁路是A和B两个矩阵相乘。A矩阵的维度是dxr,B矩阵的维度是rxd,其中r<<d,一般r取1,2,4,8就够了。那么这个旁路的参数量将远小于原来网络的参数W。LoRA训练时,首先冻结原来网络的参数W,只训练旁路参数A和B。由于A和B的参数量远远小于W,那么训练时需要的显存开销就大约等于推理时的开销。对采用Adam优化器来说,需要的显存就大约相当于全参数微调的1/3,极大地减小了训练的代价。 采用这种旁路相加的方式,原网络的参数不变,在旁路上做些微小改变,适应特定新任务。这样就可以让网络基本保持原来的能力,在特定任务上更精进了一步。值得注意的是,LoRA微调并没有改变原有的预训练参数,只是针对特定任务微调出了新的少量参数,新的这些参数要与原有的预训练参数配合使用,实际使用时,都是把旁路的参数和原来的参数直接合并,也就是参数相加,这样就不会增加推理时间。可以很方便地针对不同的任务,都可以训练出自己的LoRA参数,然后与原本的预训练参数结合,做成插件式的应用,即SD+LoRA。全参数微调一般没这个条件,但LoRA微调还是可以的。如图6-10所示,就是冻结一个预训练模型的矩阵参数,并选择用A和B矩阵来替代,在下游任务时只更新A和B。.LoRA的实现流程如下:①在原始PLM(PLM)旁边增加一个旁路,做一个降维再升维的操作,来模拟内在秩。①训练的时候固定PLM模型参数,只训练降维矩阵A与升维矩阵B。②模型的输入输出维度不变,输出时将BA与PLM的参数叠加。③用随机高斯分布初始化A,用0矩阵初始化B,保证训练的开始此旁路矩阵依然是0矩阵。
LoRA的基本思想是保持预训练矩阵(即原始模型的参数)冻结(即处于固定状态),并且只在原始矩阵中添加一个小的增量,其参数量比原始矩阵少很多。总的来说,基于语言大模型的内在低秩特性,增加旁路矩阵来模拟全面微调,LoRA是一个能达成轻量级微调的简单有效的方案。目前该技术已经广泛应用于语言大模型的微调,如Alpaca,稳定扩散+LoRA,而且能和其它参数高效微调方法有效结合,例如最先进的参数高效微调。6.8.6前缀调优前缀调优(PrefixTuning)是轻量级③的优化方法,是基于提示词前缀优化的微调方法。其原理是:在原始模型基础上,增加一个可被训练的嵌入层,用于给提示词增加前缀,从而让模型更好的理解提示词意图,并在训练过程中不断优化这些参数。前缀调优既能够在模型结构上增加一些新的灵活性,又能够在模型使用上提供一种自动的、能够改进模型表现的提示机制。前缀调优是一种高效微调方法,旨在改进预训练模型以适应特定任务或领域。这种方法主要涉及调整模型的前几层,即前缀部分,以便更好地适应新的数据分布。前缀调优的优势在于,它只需对模型的一小部分进行修改,从而节省计算资源和时间。(1)前缀调优的具体步骤①选择预训练模型:选择一个预训练的模型作为基础模型,例如BERT、GPT等。②确定前缀层:根据任务需求,确定需要调整的模型前缀层。通常情况下,前缀层包括模型的初始几层,这些层负责捕捉数据的基本特征。③冻结其他层:为了保持预训练模型的其他层的参数不变,我们需要冻结这些层。这样,在训练过程中,只有前缀层的参数会更新。④训练前缀层:使用特定任务或领域的数据,对前缀层进行微调。这一步骤可以通过较小的学习率进行训练,以便更好地适应新的数据分布。⑤评估模型:在微调完成后,评估模型在目标任务或领域的性能。如果性能达到预期,则可以使用该模型进行预测和分析。⑥前缀调优高效微调方法在许多NLP任务中都取得了很好的效果,如文本分类、情感分析、命名实体识别等。这种方法可以快速适应新任务,同时节省计算资源和时间。然而,对于一些复杂的任务,可能需要调整更多的模型参数才能获得较好的性能。.(2)在文本分类任务的前缀调优步骤 ①选择预训练模型:选择一个适合文本分类任务的预训练模型,例如BERT、RoBERTa、XLNet等。 ②确定前缀参数:前缀调优的核心思想是在每个Transformer层的输入前添加一组可训练的参数(称为前缀)。这些前缀参数将与模型的原始输入(例如,词嵌入)一起送入Transformer层。确定前缀的长度和数量,这通常是一个较小的值,比如每个注意力头有一个长度为20的前缀。 ③冻结预训练模型:为了保持预训练模型的大部分知识,你需要冻结模型的参数,只允许前缀参数在训练过程中更新。 ④准备数据集:将你的文本分类数据集转换成模型可以理解的格式。对于BERT类模型,这意味着你需要将文本转换为BERT输入的格式,即[CLS]token、句子片段标识、词嵌入等。 ⑤微调前缀参数:使用文本分类数据集对模型进行训练,但只更新前缀参数。你可以使用较小的学习率来微调这些参数,以避免破坏预训练模型学到的知识。 ⑥评估和调整:在验证集上评估模型的性能,根据需要调整前缀的长度、数量或其他超参数。如果性能不理想,你可能需要进一步调整前缀参数或考虑其他微调策略。 ⑦模型部署:一旦模型性能令人满意,你可以将其部署到生产环境中进行实际的文本分类任务。 前缀调优的优势在于它减少了需要微调的参数数量,从而降低了计算成本,并可能减少过拟合的风险。然而,这种方法的有效性取决于具体任务和预训练模型的选择,因此在应用前缀调优时,可能需要根据实际情况进行调整和实验。.前缀调整固定PLM的所有参数,只更新优化特定任务的前缀。因此,在部署时,只需要存储一个大型PLM的副本和一个学习到的特定任务的前缀,每个下游任务只产生非常小的额外的计算和存储开销。如图6-11所示。6.8.6微调输出层在NLP中,大语言模型在大量文本上进行了预训练,然后在各种任务(如语言建模,问答和摘要等)上进行了微调,经过微调的模型在这些任务上取得了最好的性能。具体过程如图6-12所示。流行的语言大模型训练方法是将除了输出层以外的所有权重“冻结”(固定不变)。然后随机初始化输出层参数,再以迁移学习的方式训练,仅更新全连接输出层,其它层的权重不变。常用下述三种方法。应说明的是并不都存在完全隔离的界线。.1.微调刷新分类器/线性层 基于特征的方法如图6-13所示,其中使用带标签的训练集来预训练Transformer模型,然后预训练的Transformer模型保持不变,再进行下游任务训练,改变的是分类器/线性层。线性层的作用是将输入数据与权重矩阵相乘,然后加上偏置向量,最后输出一个新的特征表示。全连接层就是线性层。全连接层(fullyconnectedlayers,FC)在整个卷积神经网络中起到分类器的作用。全连接层则起到将学到的分布式特征表示映射到样本标记空间的作用。SVM一般指支持向量机,是一类按监督学习方式对数据进行二元分类的广义线性分类器,也可改为多分类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年学校后勤服务与资产管理校长试题含答案
- 《企业国际化经营面临的形势与对策分析》课件
- 2026年剧本杀运营公司新剧本引进评估管理制度
- 2026年可穿戴设备健康监测行业创新报告
- 2025年新能源车产业链变革与趋势创新报告
- 2026年基因编辑在医学研究创新报告
- 2025年预制菜调味地域特色适配与标准化生产分析报告
- 2025年特色小镇文化创意产业集群建设中的文化创意产业创新发展可行性研究
- 济源辅警面试题目及答案
- 当地辅警面试题目及答案
- 理塘县财政局(县国有资产监督管理局)关于公开招聘县属国有企业2名总经理及1名财务总监的参考题库完美版
- 2026年三亚交投产业发展有限公司招聘备考题库完整答案详解
- 管廊运维员培训课件
- 2026北京海淀初三上学期期末数学试卷和答案
- 2025杭州临平环境科技有限公司公开招聘49人笔试备考试题及答案解析
- 本霍根的五堂课中文版
- 环境保护体系框图
- 幼儿园课程标准要求
- 江河流域农业面源污染综合治理项目初步设计
- 基坑开挖施工方案-自然放坡
- GB/T 36964-2018软件工程软件开发成本度量规范
评论
0/150
提交评论