大模型系列课程学习-大预言模型微调方法介绍

本文详细介绍了大语言模型的基本概念、涌现能力、构建流程,特别是针对大模型的训练阶段(预训练、微调、奖励模型和强化学习),以及各种参数微调方法,如全参数微调、有监督微调、prompt-tuning和adaptertuning等。
摘要由CSDN通过智能技术生成

1.大语言模型相关基本概念综述

语言模型指对语言进行建模,其起源于语音识别(speech recognition),输入一段音频数据,语音识别系统通常会生成多个句子作为候选,究竟哪个句子更合理?
学术上表达为:描述一段自然语言的概率或给定上文时下一个词出现的概率
在这里插入图片描述
根据之前的介绍,语言模型经过四个阶段的发展,详情请参考上一节学习分享博客
毫无疑问,大语言模型是一种由包含数百亿以上参数的深度神经网络构建的语言模型,通常使用自监督学习方法通过大量无标注文
本进行训练。大模型发展的时间线可以参考下图
在这里插入图片描述

1.1 大语言模型的涌现能力

大语言模型的涌现能力(Emergent Capability)指的是随着模型规模的增加,模型展现出超出预期的能力和表现,这种能力使得大语言模型成为能够解决负责任务和推动人工智能进步的重要工具。涌现一般体现在如下几个方面:

  • 学习能力提升:大语言模型具备更大的空间参数和表征能力,能够学习到更复杂、抽象的模式和特征,自然语言理解能力更强,能够捕捉数据的细微差异
  • 语言理解和生成能力:在自然语言任务重,大模型能够理解更丰富的语义和语法知识,并具备更好的语言理解和生成能力
  • 创新和探索:大语言模型能力不仅体现在已知任务重,而且在一些创新探索领域仍然可以发挥自己的创造性

1.2 大模型的推理能力

大模型的推理能力指的是逻辑推理、推断和推理问题解决方面的能力,一般体现在如下5个方面:

  • 逻辑推理:具备一定的逻辑推理能力,掌握逻辑推理的规则和方法
  • 推断和推理问题解决:可以通过已有知识的推理和推断,填补不完整的信息,解决模糊和宽泛的问题。
  • 关联和关系理解:大模型具备强大的关联和关系理解能力,能够识别多个要素直接的关系
  • 多步推理:大模型能够完成多步推理,在推理过程汇总进行多个步骤的演绎和推断;
  • 常识推理:因大模型学习过海量知识,具备一定的常识推理能力

2.大语言模型构建流程

大模型的训练阶段主要包含四个阶段:预训练阶段、有监督微调阶段、奖励模型阶段和强化学习阶段,这四个学习阶段都需要不同规模的数据集合以及不同的算法,而且需要不同的机器资源和相关策略。
在这里插入图片描述
接下来介绍不同阶段的细节及特点

2.1预训练阶段

预训练阶段:需要利用海量的训练数据,包括互联网网页、维基百科、书籍、GitHub、论文、问答网站等,构建包含数千亿甚至数万亿单词的具有多样性的内容。该阶段可以理解为使模型能够理解和生成各种不同类型的文本,相当于广泛学习,具备通识知识。

2.2 有监督微调(指令微调)阶段

有监督学习阶段:为指令微调,利用少量高质量数据集合,包含用户输入的提示词(Prompt)和对应的理想输出结果。用户输入包括问题、闲聊对话、任务指令等多种形式和任务。该阶段可以理解为使用人工标注的数据集来训练模型,使得大模型具备特定问题生成回复是更加准确和有针对性。

2.3 奖励建模阶段

奖励建模阶段:目标是构建一个文本质量对比模型,对于同一个提示词,SFT模型给出的多个不同输出结果的质量进行排序。奖励模型(RM 模型)可以通过二分类模型,对输入的两个结果之间的优劣进行判断。该阶段可以理解为用户区分模型生成内容质量的高低,引导模型向好的方向靠齐。

2.4 强化学习阶段

强化学习阶段:根据数十万用户给出的提示词,利用在前一阶段训练的 RM 模型,给出 SFT 模型对用户提示词补全结果的质量评估,并与语言模型建模目标综合得到更好的效果。该阶段和奖励模型一起,不断的优化大模型自己的生成策略,是的大模型能够生成更加流畅、准确的回复内容。

由上述的四个阶段,也衍生出不同的使用者的四个阶段。一般情况下对于纯粹的使用者来说,可以使用prompt快速使用入门;对于应用开发人员,可以使用langchain等工具快速开发出一个智能体,从而完成特定流程的实现;对于算法人员来说,额外关注大模型的落地应用,这块往往需要掌握大模型微调技术;对于深度算法使用人员来说,一般更关注于底座大模型的训练,从而提成底座能力。对于大模型感兴趣的人员,可以从prompt指令入手,开始用起来,可以参考prompt指令入门。本次主要分享微调技术,其他的技术阶段待后续更新。
在这里插入图片描述

3.大语言模型参数微调方法

在了解微调方法之前,我们先了解下为什么需要微调大模型,而不是直接预训练模型?首先是预训练模型的成本比较高,其次提示工程存在一定的限制,不能够完全解决下游问题,此外对于下游任务,特别是特定领域数据,大模型在预训练时,并没有见到过,所以这部分场景往往需要微调从而实现下游任务。
大模型的微调一般包含 全量微调方式微调其他
全量微调方式:全量微调(Full Fine-Tune,FFT)
其他微调方式

  • 高效微调方式(Parameter-Efficient Fine-Tune,PEFT)
  • 有监督微调(Supervice Fine-tune,SFT)
  • 基于人类反馈的强化学习(RLHF)
  • 基于AI反馈的强化学习(RLAIF)
    在这里插入图片描述
    一般情况下,对于个人来说,PEFT为当下主流的应用方式,如上图所示,PEFT高效微调方法可以按照如下结果方面划分:
    (1)围绕Token做文章:语言模型不变,额外添加token
  • Prompt tuning
  • Prefix tuning
  • P-tuning
    (2)特定场景任务:训练“本质”的低秩模型
  • Lora
  • QLora
  • AdaLora
    (3)少量数据类等
  • IA3
  • UniPELT
    为了方便进一步理解上述微调方法,接下来使用图例进行解释。对于输入x 和输入y,模型需要做的就是建立输出y与x之间的映射关系,即y = f(x) = Wx
    在这里插入图片描述

对于上述的图示中,W表示模型参数,X表示输入,Y表示输出,上述的高效微调方法可以分为改变输入X(如prompt-tuning),额外替代W参数(如lora)以及对于W进行参数存储量化。

3.1 全参数微调

全参数微调(Full Fine-Tune,FFT)是一种常用的大语言模型微调方法,它对模型中所有可训练的参数进行更新和优化,全参数微调能够充分利用预训练模型在大模型数据上学到的知识,并通过针对特定的微调来优化模型性能。这种方法适用于问答对话和其他自然语言处理任务,通过全参数微调中调整模型的权重和参数,可以使得模型更好的适应新任务的模式以及数据分布,从而提高下游任务的泛化性。其和SFT的区别在于是否进行有监督,有监督学习会更加注重下游任务微调的细节,达到人为把控,比如金融场景的关键要素抽取,而全参数微调只是适应下游任务,比如金融场景。

3.2 有监督微调

同上述介绍,有监督微调,又叫指令微调,利用少量高质量数据集合,包含用户输入的提示词(Prompt)和对应的理想输出结果。其更适合下游的具体任务。

3.3 围绕token做文章

在向大语言模型之前,通过添加提示作为前缀来引导模型完成相应的任务,常见的方法有prefix tuning、prompt tuning等。前缀微调的核心思想是在输入序列中添加与特定任务相关的连续嵌入向量作为前缀,而这些向量并不与真正的标记相对应,这样的连续嵌入可以传播到transofomer的激活层,并向后续的标记喘息信息。与离散的表示相比,这种连续的嵌入表示更具备表达性,原因在于其不需要与离散的词向量做一一对应。
对于该部分感兴趣的小伙伴,可以参考链接

3.3.1 Prefix Tuning 前缀微调

在这里插入图片描述
prefix tuning:是特定任务的指令集引导模型特定任务的输出。其具体作为未,在预训练的transfomrers前额外增加prefix模块,训练时,冻结transformers全部参数,只训练prefix部分。
在这里插入图片描述
在微调过程中,语言模型的参数并未发生改变,主要是额外添加了训练参数

3.3.2 Prompt Tuning 提示微调

在这里插入图片描述
prompt tuning:是一种轻量级的微调大语言模型技术,通过调整模型输入中的提示信息表示来提高生成质量的相关性。该方法并不改变模型参数,而是引入专门的参数来表示提示信息,并通过反向传播算法更新这些参数,可以调整提示信息的输入表示指导模型的生成行为。
在这里插入图片描述
通过上述的图可以看出prompt tuning 和prefix tuning微调的区别,prompt tuning主要是引入额外的输入信息表示,不调整语言模型参数,从而达到微调的目的,而prefix tuning是额外引入前缀参数进行微调。

3.3.3 P-Tuning & P-Tuning V2

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/017a48f7979e4223be8d9f9b35cd5b9f.png
在这里插入图片描述大模型的 Prompt 构造方式严重影响下游任务的效果,好的prompt会激发大模型下游适配能力,P-Tuning 方法主要用于解决该问题,其主要是将将 Prompt 转换为可以学习的 Embedding 层(一般为利用多层感知机和 LSTM 对 Prompt 进行编码,编码之后与其他向量进行拼接之后正常输入 LLM),在大模型微调过程中,仅仅微调这部分embedding层,最开始主要是对标Finetuning方法。因为P-Tuning在小参数量模型上表现差,而且只在某一层上进行编码,为了解决这一问题,提出了P-Tuning v2 微调方法,其目标就是要让 Prompt Tuning 能够在不同参数规模的预训练模型、针对不同下游任务的结果上都达到匹敌 Fine-tuning (此处的Fine-tuning可以理解为FFT)的结果,其在模型的每一层上都引入了prompt的embedding层,从而达到Fine-tuning的效果
在这里插入图片描述

通过上述的介绍,我们发现P-Tuning 方法和prefix 微调有着本质的区别,只不过prefix微调一般可调节参数为开头,而且参数在模型内部,而p-tuning的位置不固定,可调节的参数在模型输入和模型内部。

3.4 Adapter Tuning 适配器微调

适配器微调是在预训练模型中引入适配器模块,通过冻结预训练模型主题,让适配器学习特定下游任务的知识。适配器模块由两个前馈自增组成,通过投影操作,蒋输入降低到一个很小的维度,在将其恢复到原始维度作为输出。适配器一般集成到每个transformer层。
在这里插入图片描述
在微调的过程中,只对适配器模块进行参数优化,从而减少微调的计算资源需求。适配器微调对于下游任务适配非常方便,对于不同的下游任务,只需要通过添加适配器即可避免全模型微调带来的灾难性以往问题,而且引入的参数相对较少。
其参数应用模式与prefix tuning 比较相似,只不过是在模型内部增加额外参数。
在这里插入图片描述

3.5 Lora 低秩适配微调

在这里插入图片描述
低秩微调的方法主要四在原始大语言模型权重旁边,假如一个旁路进行降维和升维操作,类似于矩阵分解,使用两个矩阵之间的运算达到原始参数矩阵的效果,其中降维矩阵A用随机高斯分布初始化,升维矩阵使用0举证进行初始化。
在这里插入图片描述
如上图所示,lora微调相当于额外引入等效矩阵参数,通过调节这部分参数,从而达到微调的目的。在此基础上,演变出Qlora(引入参数量化)、AdaLora(对下游任务分配不同的权重)等变体。

3.6 Bitfit

https://zhuanlan.zhihu.com/p/659715110

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值