大模型参数高效微调技术原理综述(三)-Prefix Tuning

Prefix Tuning是LLM微调技术中另一个重要的技术分支,于2021年由Stanford提出。

本文通过解读论文**《Prefix-Tuning: Optimizing Continuous Prompts for Generation》**,与小伙伴们一起学习理解Prefix Tuning思想和方法。

image-20240329153821295

1.Abstract(摘要)

首先我们看一下论文摘要,快速理解论文的核心内容

  • 问题:**FFT(全参数微调)**针对不同的下游任务都需要产生一个新的微调后大模型,存在成本效率等诸多工程问题。

  • 解决方案:论文提出的Prefix Tuning,是一种使用Soft Prompt(软提示)进行迁移学习的方法。针对不同下游任务创建不同的Prefix(前缀向量模块),这样不同下游任务只需要在一套预训练大模型上加载不同Prefix小模型即可。

  • 实验效果

    • 在GPT-2的Table-To-Text(表格生成文本)下游任务中,Prefix模型参数仅占GPT-2参数的0.1%,即可达到GPT-2同等水平。
    • 在BART的Sumarization(摘要)下游任务中,Prefix模型参数仅占BART参数的0.1%,即可达到BART同等水平。
    • 在上述两种实验中,额外还观察到一定的泛化涌现能力,Prefix Tuning可外推到训练期间未见过的任务主题。

image-20240329111747247

2.Introduction(介绍)

  • 背景技术1Adapter Tuning是向预训练模型中增加新的小模型,仅微调小模型参数以达到高效微调的目的。实验效果证明仅需微调2%~4%的参数即可达到全参数微调的效果。

    • Adapter Tuning的详细解读可参见本技术专栏这篇文章《【chatGPT】学习笔记43-LLM微调技术之Adapter Tuning》
  • 背景技术2:GPT-3的一个重要贡献就是Context LearningPrompt Engineering,GPT-3是一套统一的大语言模型,用户不需要针对下游任务单独微调,直接通过提示词和上下文,影响GPT-3输出的答案。

  • Prefix Tuning的核心思想Prefix Tuning借鉴了Adapter TuningPrompt Engineering的思想:

    • Prefix Tuning也额外增加了N个小模型,这些小模型外挂于同一套预训练模型上,不同小模型解决不同的下游任务
    • Prefix Tuning增加的这些小模型的作用类似Prompt(提示词),它们会在用户输入的文本前额外增加针对不同下游任务的提示词前缀Prefix。这些前缀不是自然语言,而是Transformer架构中向量形式的Token,这种Token叫做虚拟Token
  • 实验效果:在GPT-2的Table-To-TextBART的Sumarization的测试效果:

    • GPT-2的Table-To-Text:在完整数据集上训练时,Prefix TuningFFT在表格到文本的下游任务的性能相当。
    • BART的Sumarization:在摘要方面,Prefix TuningFFT性能略有下降。
    • Low Data Settting:在数据量少的数据集上,Prefix Tuning能够克服数据集样本不足、提炼数据特征困难的问题,表现出了泛化涌现能力。在上述两项任务中性能表现优于FFT。

image-20240329113337615

3.Prefix Tuning

3.1.Problem Statement(问题陈述)

Prefix Tuning采用了严谨的数学描述来阐述待解决的问题,这也是算法工程中的算法建模环节,我们尽量通俗地理解这个问题模型,也感受一下算法工程师的思维模式。

  • x和y:x是大语言模型的输入,y是大语言模型的输出。

    • 如下图右侧上方所示,在摘要型下游任务中,人类输入的原始文本就是x,大语言模型输出的总结结果就是y。
    • 如下图右侧下方所示,在表格转文本的下游任务中,人类输入的结构化的表格字符串是x,大语言模型输出的表格描述就是y。
  • 自回归语言模型的问题子域(如下图左上所示):

    • pφ(y | x):根据Transformer这种自回归模型的网络结构,其本质可抽象为pφ(y | x),φ为大语言模型的参数,p就是在**“人类输入字符串x的条件下,大语言模型输出y的概率分布”**。
    • z = [x; y]:z被定义为x和y的序列,其中Xidx表示了x的索引,Yidx表示y的索引。
    • hi:hi表示时间步i的激活(activation),hi又是由第i个时间步中的n层激活组成的序列(即hi= [hi(1);···;hi(n)]),其中hi(n)表示在Transformer架构中的第i个时间步的第n层的激活。
    • hi=LMφ(zi, h<i):此数学公式表示——根据zi,以及h1~hi-1,计算当前的hi。展开解释一下就是,Transformer模型会根据第i个时间步的x、y,以及第1个时间步~第i-1个时间步计算的各时间步计算的各层激活向量,计算当前时间步下Transformer各层的激活。
    • pφ(zi+1 | h≤i) = softmax(Wφhi(n)):最后一层的hi是Transformer训练后获得的概率分布,用来根据当前Token预测下一个Token。其中,Wφ是一个用于将hi(n)映射到词汇表上logits的预训练矩阵。
    • 上述数学描述中,包含很多AI相关术语(如:自回归模型、时间步i的激活(activation)、各层激活向量、词汇表上logits等),可参见本技术专栏**《NLP底层原理》篇**的系列文章。
  • Encoder-Decoder模型的问题子域(如下图左下所示):

    • 与自回归语言模型的问题子域大部分数学描述相同。
    • 不同点在于基于Encoder-Decoder架构的结构特点,x和y被拆分开了。
  • Prefix Tuning的微调求解目标

    • maxφ log pφ(y | x) = Σi∈Yidx log pφ(zi | h<i):这个看着复杂的公式,就是在表达微调的最终目标就是在各个时间步的各时间步激活的条件下x和y序列的概率分布求和。说人话就是,微调后的模型能够根据x预测最大概率应该输出y

image-20240329125952458

3.2.Intuition(直觉)

论文在正式阐述Prefix Tuning的原理之前,描述了研究员的灵感来源:

  • Based on intuition from prompting:提示词被证明是可以影响大语言模型输出,提示词的思想本质是——大语言模型像一个什么都知道的老人,人类的输入需要使用一定的提示技巧唤醒老人的记忆,从而帮助他输出正确的答案。
  • z = [x; y]hi=LMφ(zi, h<i):再看3.1问题陈述章节的这两个数学公式,提示词有两个作用:
    • 作用1:提示词作为人类输入x的一部分,它起到了影响大语言模型关注x的哪些Token的作用。
    • 作用2:在作用1的驱动下,影响了大语言模型各层的激活计算结果hi,进而影响了在x条件下应该接什么y的概率
  • but fail for most pretrained LMs:虽然提示词从理论上可以影响大语言模型的输出,但论文进一步阐述了提示词的局限性——做过提示词工程的小伙伴应该知道,仅仅通过自然语言形式的提示词,对大语言模型输出的效果提升很有限。
  • continuous word embeddings:论文根据上述头脑实验,准备新增1个Prefix模型,在人类输入x词嵌入为向量后,在这个词嵌入向量前增加1个Prefix Token(前缀向量)(这种向量不同于离散向量,不会引发计算的困难)。为了保证Prefix Token有足够的提示性,论文在Transformer的所有层都增加了这种前缀向量。

3.3.Method/Parametrization of Pθ(原理)

论文至此,正式阐述了Prefix Tuning的实现方法:

  • z=[x;y]到z=[prefix;x;y]:给自回归模型和Encoder-Decoder模型的z向量增加了前缀PREFIX向量。其中Pidx表示了前缀的索引。(如:)

image-20240329142053466

  • 基于前缀向量,hi的数学公式表示为各层的激活包含前缀向量的计算和大语言模型预测的概率分布。

image-20240329143101780

  • |Pidx| × dim(hi):Pθ是Prefix Tuning新增的小模型的参数,参数的维数必然是有限的,因为它的维数等于前缀向量个数乘以hi的维度。这也解释了为什么Prefix Tuning新增的小模型参数规模仅占预训练模型的0.1%。

  • Pθ[i, :] = MLPθ(P ′θ[i, :]):论文还发现直接微调Pθ会导致训练效果不好,于是采用了重参数化方法,引入了前馈神经网络MLPθ。

4.Experiments(实验结果)

4.1.实验结果

论文的实验结论:Prefix Tuning在Table-To-Text下游任务表现良好、在外推涌现方面表现良好,具体如下:

  • Table-To-Text实验:用GPT2-Medium和GPT2-Large对比FFT和Prefix Tuning,Prefix Tuning都达到了SOTA水平。

image-20240329150136166

  • Low-Data-Setting实验:在少数据测试中,Prefix Tuning的性能表现和训练稳定度优于FFT。

image-20240329150354433

  • Summarization实验:使用XSUM数据集,Prefix Tuning性能略低于FFT。

image-20240329150524132

  • Extrapolation实验:外推涌现实验中,使用XSUM数据集,Prefix Tuning效果优于FFT。

image-20240329150541755

4.2.Intrinsic Evaluation(重要发现)

论文在前述实验结果下,有如下重要发现:

  • Prefix长度的影响
    • 不同下游任务需要增加不同长度的前缀向量。
    • Prefix长度越长,提示效果越好,但过犹不及——超过了一定的阈值,就会出现推理性能下降。

image-20240329151553754

  • 在哪些层做Prefix的影响:仅在词嵌入层做Prefix的效果远差于在Transformer各层做Prefx的效果。

image-20240329151830368

  • Prefix和Infix的影响:用前缀法的性能效果优于中缀法。
    • 研究员猜测,前缀法可能影响x和y,中缀法可能只影响y。

image-20240329152257513

  • Prefix的初始值选择的影响:随机初始化Prefix向量的效果远差于与下游任务相关联的Prefix向量初始化的效果。
    • 这种现象可能由于用与下游任务不相关的提示词向量,会导致更长时间的前缀神经网络的收敛(甚至不收敛)。

image-20240329152826581

5.总结

从上述论文解读中,我们收获了如下技术观点:

  • Prefix Tuning的价值:追求一套预训练模型,搞定多个下游任务。
  • Prefix Tuning的核心思想:增加一个新的具备提示能力的前缀向量小模型,微调小模型的少量参数,冻结预训练模型的海量参数。
  • Prefix Tuning的工程实践经验
    • Prefix长度不宜过长或过短,需根据下游任务实验获得。
    • 对Transformer做全层的Prefix效果更好。
    • Prefix会影响x和y,效果优于Infix。
    • Prefix的初始值需选择与下游任务相关的提示向量。

论文链接:https://arxiv.org/pdf/2101.00190.pdf

<think>嗯,用户想了解大型语言模型的微调方法和技术。首先,我需要回忆一下相关的知识。微调是指在预训练模型的基础上,用特定领域的数据进行进一步训练,以适应具体任务。常见的方法有全参数微调参数高效微调(PEFT)等。 全参数微调虽然有效,但计算资源消耗大,可能不适合资源有限的情况。这时候参数高效的方法就很重要,比如LoRA、Adapter Tuning、Prompt Tuning等。LoRA通过低秩矩阵分解来减少训练参数,而Adapter Tuning则在模型中插入小型网络模块。Prompt Tuning则通过优化输入提示来调整模型行为。 另外,用户提到的引用资料里有提到PEFT综述、LoRA等内容,需要结合这些引用中的信息。比如引用[1]讨论了参数高效微调方法,引用[3]详细解释了LoRA的原理。需要确保回答中正确引用这些内容,并举例说明。 还要考虑用户可能的实际需求,比如如何选择适合的微调方法,不同方法的优缺点,以及具体应用场景。可能需要分步骤说明不同技术,并比较它们的参数数量、训练效率、适用任务等。 另外,用户的问题生成部分需要生成相关问题,比如微调中的挑战、具体技术的比较、实际应用案例等。这部分需要根据回答内容自然延伸,帮助用户进一步探索。 最后,确保回答结构清晰,用中文表达,符合LaTeX格式要求,正确引用标注。检查是否有遗漏的重要方法,如Prefix Tuning或BitFit,并确认技术细节的准确性。</think>大型语言模型(LLM)的微调(Fine-Tuning)方法可分为全参数微调参数高效微调(PEFT)两大类,具体技术对比如下: ### 一、全参数微调(Full Fine-Tuning) 1. **定义**:更新模型所有参数以适应特定任务 2. **数学表示**: $$ \theta_{new} = \theta_{pre} - \eta \nabla_{\theta} \mathcal{L}(\theta; \mathcal{D}_{task}) $$ 其中$\theta$为模型参数,$\eta$为学习率,$\mathcal{L}$为损失函数 3. **优点**:性能最优 4. **缺点**: - 计算成本高(如175B参数的GPT-3需数千GPU小时[^1]) - 存在灾难性遗忘风险 ### 二、参数高效微调(PEFT) #### 1. LoRA(Low-Rank Adaptation) - **原理**:通过低秩矩阵分解注入可训练参数 $$ W' = W + \Delta W = W + BA $$ 其中$B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times k}$,秩$r \ll d$(通常$r=8$)[^3] - **参数占比**:仅需更新0.1%-1%的原始参数量[^1] - **代码示例**(HuggingFace实现): ```python from peft import LoraConfig, get_peft_model config = LoraConfig(r=8, lora_alpha=16) model = get_peft_model(model, config) ``` #### 2. Adapter Tuning - **结构**:在Transformer层间插入小型前馈网络 $$ h_{out} = h_{in} + f_{adapter}(h_{in}) $$ - **参数效率**:每个适配器约3.5%额外参数[^1] #### 3. Prompt Tuning - **方法**:优化连续提示向量代替修改模型参数 $$ \tilde{x} = [p_1;p_2;...;p_k;x] $$ 其中$p_i \in \mathbb{R}^d$为可训练提示向量 - **实验数据**:在T5模型上仅需0.1%参数达到全微调97%性能 ### 、技术选型建议 | 方法 | 参数量占比 | 训练速度 | 适用场景 | |------------|-----------|--------|------------------| | 全参数微调 | 100% | 慢 | 数据充足、计算资源丰富 | | LoRA | 0.1%-1% | 快 | 多任务适配、资源受限 | | Adapter | 3%-4% | 中 | 跨语言迁移 | | Prompt Tuning | <0.1% | 最快 | 小样本学习 | ### 四、最新进展 1. **QLoRA**:结合量化与LoRA,在单个GPU上微调65B模型[^1] 2. **DoRA**:将权重更新分解为幅度与方向分量,提升微调效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值