一.Prompt-Tuning(提示-微调)方法入门
1. 什么是NLP四范式
目前学术界一般将NLP任务的发展分为四个阶段,即NLP四范式:
- 第一范式:基于「传统机器学习模型」的范式,如TF-IDF特征+朴素贝叶斯等机器算法
- 第二范式:基于「深度学习模型」的范式,如 word2vec特征+LSTM等深度学习算法, 相比于第一范式,模型准确有所提高, 特征工程的工作也有所减少
- 第三范式:基于「预训练模型+fine-tuning」的 范式,如Bert+fine-tuning的NLP任务,相比于第二范式,模型准确度显著提高,模型也随之变得更大,但小数据集就可训练出好模型
- 第四范式:基于「预训练模型+Prompt+预测」的 范式,如Bert+Prompt的范式相比于 第三范式,模型训练所需的训练数据显著减少
在整个NLP领域,整个发展历程是朝着精度更高、少监督,甚至无监督的方向发展的,而Prompt-Tuning是目前学术 界向这个方向进军最新也是最火的研究成果
2.Fine-Tuning(微调)回顾
Fine-Tuning属于一种迁移学习方式,在自然语言处理(NLP)中,Fine-Tuning是用于将预训练的语言模型适应于特定任务或领域。Fine-Tuning的基本思想是采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它
解决方法:Prompt-Tuning 通过添加模板的方法来避免引入额外的参数,从而让模型可以在小样本(few-shot)或者零样本(zero-shot)场景下达到理想的效果
3. Prompt-Tuning技术介绍
基于Fine-Tuning的方法是让预训练模型去迁就下游任务,基于Prompt-Tuning的方法可以让下游任务去迁就预训练模型,其目的是将Fine-tuning的下游任务目标转换为Pre-training的任务
Prompt-Tuning是一种参数高效微调(PEFT)方法,其核心思想是在输入序列前添加一组可学习的“软提示”(Soft Prompts),通过仅优化这些提示的嵌入向量来适配下游任务,而冻结预训练模型的全部权重。
技术原理与实现方式
- 软提示机制:不同于人工设计的离散文本提示(如“请总结以下内容”),Prompt-Tuning 使用连续的、可训练的虚拟 token 作为提示。这些 token 在模型输入阶段与真实文本拼接,但其嵌入向量是随机初始化并通过反向传播优化的。
- 参数冻结策略:整个预训练模型的权重(如 Qwen2.5 的 7B 参数)保持不变,仅训练新增的软提示参数(通常仅几千到几万个),从而大幅降低显存占用和计算开销。
- 任务适配能力:通过在输入端注入任务特定的语义信号,软提示能有效弥合预训练目标(如因果语言建模)与下游任务(如分类、摘要)之间的语义鸿沟,提升小样本或零样本场景下的表现。
与相关技术的对比
- vs. P-Tuning:P-Tuning 在 Prompt-Tuning 基础上引入了 LSTM 或MLP 编码器对软提示进行重参数化,使提示更具表达能力;而原始 Prompt-Tuning 直接优化嵌入层,结构更简单。
- vs. LoRA:LoRA 通过在注意力层的权重矩阵上叠加低秩适配器来微调,而 Prompt-Tuning 仅在输入端操作,不修改模型内部结构,更适合需要保持模型纯净性的场景。
- vs. 全量微调:全量微调更新所有参数,效果上限高但成本巨大;Prompt-Tuning 以极小代价实现快速适配,特别适合资源受限或多任务并行部署。
实际应用建议
- 适用场景:当你的数据集较小、算力有限,或需要在同一基座模型上快速切换多个下游任务时,Prompt-Tuning 是理想选择。例如,为 Qwen3.7-Plus 快速适配法律合同审查、医疗报告生成等垂直领域。
- 工具支持:主流框架如 Hugging Face PEFT、Llama-Factory 均支持 Prompt-Tuning,可通过配置
PromptEncoderConfig快速启动训练。- 性能预期:在小样本任务中,Prompt-Tuning 常能接近甚至超越全量微调的效果;但在大规模数据下,其性能上限可能低于 LoRA 或全量微调,需根据实际需求权衡
MLP 介绍
在深度学习和大模型(如 Prefix-Tuning 和 P-Tuning)的语境下,MLP的全称是Multi-Layer Perceptron(多层感知机)。
简单来说,它是神经网络中最基础、最核心的前馈神经网络结构。你可以把它理解为一个“特征提取与转换的黑盒”或一个“复杂的数学函数”。
1. MLP 的核心结构
一个标准的 MLP 通常由以下几个部分组成:
- 输入层:接收原始数据或向量。
- 隐藏层:一层或多层神经元。每一层都会对输入数据进行线性变换(乘以权重矩阵并加上偏置),然后经过一个非线性激活函数(如 ReLU、GELU 等)。
- 输出层:输出最终的结果向量。
2. 为什么 Prefix-Tuning 和 P-Tuning 要用 MLP?
在参数高效微调(PEFT)中,如果我们直接随机初始化可训练的提示参数(Soft Prompts),模型在训练初期可能会因为找不到正确的优化方向而崩溃(即梯度不稳定)。
因此,研究者引入了 MLP 作为“重参数化(Reparameterization)”的编码器:
- 在 P-Tuning 中:
它没有直接去优化 Embedding 层的离散向量,而是随机初始化一个小型的LSTM + MLP网络。训练时,只更新这个 LSTM+MLP 的参数,然后由这个网络输出一组连续的 Prompt Embeddings 喂给大模型。MLP 在这里起到了“平滑映射”的作用,让生成的提示向量在语义空间中更加连续和稳定。- 在 Prefix-Tuning 中:
它在每一层都添加了可学习的参数,但这些参数也是通过一个MLP来生成和初始化的。MLP 能够根据极少量的初始参数,映射出适合每一层 Attention 机制的 Key 和 Value 前缀向量。如果把大模型比作一台极其精密、参数被锁死的超级计算机,而你想让它适应新任务:
- 直接随机调参就像是在键盘上胡乱敲击,很难敲出正确的指令。
- MLP 的作用就像是一个“智能翻译官”或“指令编译器”。你只需要给这个翻译官输入几个简单的指令(极少的初始参数),翻译官(MLP)就能通过它学到的复杂逻辑,将其翻译成超级计算机能完美理解的、连贯的底层指令(Prompt Embeddings)。
总结:在这两种微调技术中,MLP 本质上是一个小型的、可训练的神经网络模块,它的任务是生成和优化那些用来引导大模型的提示向量(Prompts),而不是直接去修改大模型本身的庞大参数
那么具体如何工作呢?接下来将以一个二分类的情感分析为例子,进行简单理解:
- 定一个句子: [CLS] I like the Disney films very much. [SEP]
- 传统的Fine-tuning方法 : 将其通过BERT模型获得 [CLS] 表征之后再喂入新增加的MLP分类器进行二分类,预测该句子是积极的(positive)还是消极的(negative),因此需要一定量的训练数据来训练
Prompt-tuning执行步骤:
- 构建模板 (Template) :生成与给定句子相关的一个含有[MASK]标记的模板. 例如It was [MASK], 并拼接到原始的 文本中,获得Prompt-Tuning的输入: [CLS] I like the Disney films very much. [SEP] It was [MASK]. [SEP]. 将其喂入BERT模型中,并复用预训练好的MLM分类器,即可直接得到[MASK]预测的各个token的概率分布
- 标签词(字典:{"positive": ["great", "good", nice"] {"negative": ['bad', "terrible",'ugly'])})映射(Verbalizer): 因为[MASK]只对部分词感兴趣,因此需要建立一个映射关系. 例如如果[MASK]预测的词 是“great ”,则认为是positive类,如果是“terrible ”,则认为是negative类
- 训练:根据Verbalizer,则可以获得指定label word的预测概率分布,并采用交叉信息熵进行训练。此时因为只对预训练好的MLM head进行微调,所以避免了过拟合问题
不同的任务应该有不同的template和label word,因此如何最大化的寻找当前任务更加合适的template和label word是Prompt-tuning非常重要的挑战
总结:
- 1.NLP任务四范式?
- 1.传统机器学习;2.深度学习模型;3.预训练+fine-tuning;4.预训练+prompt+预测
- 2. 什么是Fine-Tuning?
- 采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它
- 3. Prompt-Tuning的实现?
- 1.构建模版;2.标签词映射;3.训练
4. Prompt-Tuning入门方法
4.1 Prompt-Tuning的鼻祖-GPT3
GPT-3开创性的提出了In-context Learning(ICL)的思想:即无须修改模型即可实现few-shot、zero-shot的 learning,同时引入了Demonstrate Learning(示范学习),即让模型知道与标签相似的语义描述,提升推理能力
4.2 PET模型
PET(Pattern-Exploiting Training)出自《Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference》 (EACL2021),根据论文题目则可以看出,Prompt-Tuning启发于文本分类任务, 并且试图将所有的分类任务转换为与MLM一致的完形填空.
PET模型提出两个很重要的组件(简称PVP) :
- Pattern(Template): 记作T, 即上文提到的Template,其为额外添加的带有[mask]标记的短文本,通常一个样本只有一个Pattern, 由于不同的任务、不同的样本可能会有其更加合适的pattern,因此如何构建合适的pattern是Prompt-Tuning的研究点之一
- Verbalizer :记作V, 即标签词的映射,对于具体的分类任务,需要选择指定的标签词(label word).例如情感分析中,期望Verbalizer可能是 (positive和negative是类标签). 同样,不同的任务有其相应的label word,但需要注意的是,Verbalizer的构建需要取决于对应的Pattern, 因此如何构建Verbalizer是另一个研究挑战
基于Pattern-Verbalizer-Pair(PVP)组件训练目标:
目前基于PVP框架, 最需要关注的问题是如何选择或构建合适的Pattern(模板)和Verbalizer(标签词映射),一种简单的方法是根据特定任务的性质和先验知识人工设计模板
注意:在同样的数据集和训练条件下,选择不同的Pattern和Verbalizer会产生差异很大的结果
缺陷:
人工设计方法缺陷:
- 采用人工构建的方法成本高,需要与领域任务相关的先验知识
- 人工设计的Pattern和Verbalizer不能保证获得最优解,训练不稳定,不同的PVP对结果产生的差异明显,方差大
- 在预训练阶段MLM任务并非完全按照PVP的模式进行训练的,因此人工构建的Pattern和Verbalizer使得Prompt-Tuning与MLM在语义和分布上依然存在差异
因此如何能够自动地挑选合适的PVP? 接下来根据使用场景的不同,分别介绍几种成熟的Prompt-Tuning方法
4.3 Prompt-Oriented Fine-Tuning(提示词-对象 微调)
Prompt-Oriented Fine-Tuning训练方法的本质是将目标任务转换为适应预训练模型的预训练任务,以适应预训练模型的学习体系
以情感分析任务为例:
Prompt-Oriented Fine-Tuning方法中,预训练模型参数是可变的, 本质是Prompt-Tuning+Fine-Tuning的结合体,该方法在Bert类相对较小的模型上表现较好,但是随着模型越来越大,如果每次针对下游任务,都需要更新预训练模型的参数,资源成本及时间成本都会很高,因此后续陆续提出了不更新预训练模型参数,单纯只针对prompt进行调优的方法,针对Prompt调优方法的分类:Hard Prompt(离散提示目标模板) 和 Soft Prompt(连续提示模板)常见下游任务的Prompt设计:
模板类别
Hard Prompt(离散提示目标模板)
Hard Prompt 离散提示: 是一种固定的提示模板,通过将特定的关键词或短语(真实的文本字符串) 直接嵌入到文本中,引导模型生成符合要求的文本.
特点: 提示模板是固定的,不能根据不同的任务和需求进行调整.
缺陷: 依赖人工,改变prompt中的单个单词会给实验结果带来巨大的差异
Soft Prompt(连续提示模板)
Soft Prompt 连续提示:是指通过给模型输入一个可参数化的提示模板,从而引导模型生成符合特定要求的文本.
特点:提示模板中的参数可以根据具体任务和需求进行调整,以达到最佳的生成效果
优点:不需要显式地指定这些模板中各个token具体是什么,而只需要在语义空间中表示一个向量即可
Soft Prompt理解
基于Soft Prompt, 不同的任务、数据可以自适应地在语义空间中寻找若干合适的向量,来代表模板中的每一个词,相较于显式的token,这类token称为伪标记(Pseudo Token).下面给出基于连续提示的模板定义 :
假设针对分类任务,给定一个输入句子x,连续提示的模板可以定义为T=[x], [v1], [v2],..., [vn] [MASK]:其中[vn] 则是伪标记,其仅代表一个抽象的token,并没有实际的含义,本质上是一个向量.
总结来说:
Soft Prompt方法, 是将模板变为可训练的参数,不同的样本可以在连续的向量空间中寻找合适的伪标记, 同时也增加模型的泛化能力. 因此, 连续法需要引入少量的参数并在训练时进行参数更新,但预训练模型参数是不变的,变的是prompt token对应的词向量(Word Embedding)表征及其他引入的少量参数. 接下来,将基于Prompt-Tuning讲解三种典型方法:
4.4 Prompt Tuning方法 (NLG任务)
4.4.1 方法介绍
Prompt Tuning 是2021年谷歌在论文《The Power of Scale for Parameter-Efficient Prompt Tuning》 中提出的微调方法,该方法基于T5模型(最大参数11B)为每一个输入文本假设一个固定前缀提示,该提示由神经网络参数化,并在下游任务微调时进行更新,整个过程中预训练的大模型参数被冻结
4.4.2 Prompt Tuning方法的特点
- 优点
- 大模型的微调新范式
- 模型参数规模大了之后,可以将大模型参数固定,指定附加参数来适配下游任务, 而且适配性能基本和全参数微调相当
- 缺点
- 在小样本学习场景上表现不太行
- 收敛速度比较慢
- 调参比较复杂
4.5 P-Tuning V1方法(NLU任务)
P-Tuning V1 直接对Embedding 参数进行优化会存在两个挑战:
- Discretenes(不连续性): 对输入正常语料的 Embedding 层已经经过预训练,而如果直接对输入的 prompt embedding进行随机初始化训练,容易陷入局部最优
- Association(关联性分析):没法捕捉到 prompt embedding 之间的相关关系
P-Tuning的特点
与Prompt-Tuning的区别:
- Prompt Tuning 是将额外的 embedding 加在开头,看起来更像是模仿 Instruction 指令;而P-Tuning 的位置则不固定
- Prompt Tuning 需要加入MLP来参数初始化;而 P-Tuning 通过LSTM+MLP来初始化
4.6 P-Tuning V2
P-Tuning V2是升级版本,主要解决P-Tuning V1 在小参数量模型上表现差的问题,详细信息可参考《[P-Tuning v2 : Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》
P-Tuning v2 方法的核心思想:在模型的每一层都应用连续的 prompts, 并对 prompts 参数进行更新优化. 同时, 该方法也是针对NLU任务优化和适配的
总结:
- 1.什么是Prompt-Tuning?
- 通过添加模板的方法来避免引入额外的参数,从而让模型可以在小样本(few-shot)或者零样本(zero-shot)场景下达到理想的效果
- 2.PET模型的主要组件?
- Pattern(模板)与Verbalizer(标签词映射)
- 3.P-tuning V1 的核心思想?
- P-tuning固定 LLM 参数, 利用多层感知机 (MLP)和 LSTM 对Prompt 进行编码,编码之后与其他向量进行拼接之后正常输入LLM,注意,训练之后只保留Prompt 编码之后的向量即可无需保留编码器
二.Prompt-Tuning方法进阶
1. 超大规模参数模型Prompt-Tuning方法
近两年来,随着Prompt-Tuning技术的发展,对于超过10亿参数量的模型来说,Prompt-Tuning所带来的增益远远高于标准的Fine-tuning.如GPT-3模型, 只需要设计合适的模板或指令即可以实现免参数训练的零样本学习.
根本原因:模型参数量足够大,训练过程中使用了足够多的语料,同时设计的预训练任务足够有效.面向超大规模的模型的Prompt-Tuning方法:
- 上下文学习 In-Context Learning(ICL):直接挑选少量的样本作为该任务的提示
- 指令学习 Instruction- Tuning:构建任务指令集,促使模型根据任务指令做出反馈
- 思维链 Chain-of- Thought(COT):给予或激发模型具有推理和解释的信息,通过线性链式的模式指导模型生成合理的结果
2.上下文学习 In-Context Learning(ICL)方法的应用
In-Context learning(ICL)最早在GPT3中提出, 旨在从训练集中挑选少量的标注样本,设计任务相关的指令形成提示模板,用于指导测试样本生成相应的结果
- zero-shot learning:给出任务的描述, 然后提供测试数据对其进行预测,直接让预训练好的模型去进行任务测试
- one-shot learning:给出任务的描述, 在进行新数据预测前,插入一个样本做指导,相当于给一个例子让模型理解,然后再提供测试数据对其进行预测
- few-shot learning:给出任务的描述, 在进行新数据预测前,插入N个样本做指导,相当于给N个例子让模型理解, 然后再提供测试数据对其进行预测
3. 指令学习方法的应用
指令学习 Instruction- Tuning:
其实Prompt-Tuning本质上是对下游任务的指令,简单的来说:就是告诉模型需要做什么任务,输出什么内容. 上文提及到的离散或连续的模板,本质上就是一种对任务的提示, 因此, 在对大规模模型进行微调时, 可以为各种类型的任务定义指令, 并进行训练,来提高模型对不同任务的泛化能力.
Prompt VS Instruction:
Instruction-Tuning和Prompt-Tuning的核心一样,就是去发掘语言模型本身具备的知识. Instruct-Tuning的形式(以电影评论二分类举例):
在对电影评论进行二分类的时候,最简单的提示模板(Prompt)是“. It was [mask]. ”,但是其并没有突出该任务的具体特性,可以为其设计一个能够突出该任务特性的模板(加上 Instruction),例如“The movie review is . It was [mask]. ”,然后根据mask位置的输出结果通过Verbalizer映射到具体的标签上,这一类具备任务特性的模板可以称之为指令 Instruction.
如何实现Instruction-Tuning?
指令学习和提示学习的不同点:
- Prompt是去激发语言模型的补全能力, 比如给出上半句生成下半句、或者做完形填空
- Instruction-Tuning则是激发语言模型的理解能力, 通过给出更明显的指令/指示,让模型去理解并做出正确的action
- Promp-Tuningt在没有精调的模型上也能有一定效 果,但是Instruct- Tuning则必须对模型精调, 让模型知道这种指令模式
总结:
- 1.什么是指令学习?
- 通过给出更明显的指令/指示,让模型去理解并做出正确的action.
- 2. 指令学习和Prompt的区别?
- 指令学习激发语言模型的理解能力;Prompt学习激发语言模型的补全能力.
4. 思维链方法的实现
思维链 Chain-of- Thought(COT)
思维链 (Chain-of-thought,CoT) 的概念是在 Google 的论文 "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" 中被首次提出
思维链(CoT)是一种改进的提示策略,用于提高 LLM 在复杂推理任务中的性能,如算术推理、常识推理和符号推理
思维链是一种离散式提示学习,更具体地,大模型下的上下文学习(即不进行训练,将例子添加到当前样本输入的前面,让模型一次输入这些文本进行输出完成任务),相比于之前传统的上下文学习(即通过x1,y1,x2,y2,....xtest作为输入来让大模型补全输出y test),思维链多了中间的推导提示.
Chain-of-Thought理解
求解一个数学题为例, 理解cot思想:
Chain-of-Thought分类:
- Few-shot CoT:ICL 的一种特殊情况,它通过融合CoT推理步骤,将每个演示〈input, output〉扩充为〈input,CoT, output〉
- Zero-shot CoT:直接生成推理步骤,然后使用生成的 CoT 来导出答案.(其中 LLM 首先由 “Let's think step by step ” 提示生成推理步骤,然后由 “Therefore, the answer is ” 提示得出最终答案。发现,当模型规模超过一定规模时,这种策略会大大提高性能,但对小规模模型无效,显示出显著的涌现能力模式)
Chain-of-Thought特点:
- 逻辑性:思维链中的每个思考步骤都应该是有逻辑关系的,它们应该相互连接,从而形 成一个完整的思考过程.
- 全面性:思维链应该尽可能地全面和细致地考虑问题, 以确保不会忽略任何可能的因素和影响
- 全面性:思维链中的每个思考步骤都应该是可行的,也就是说,它们应该可以被实际操作和实施
- 可验证性:思维链中的每个思考步骤都应该是可以验证的,也就是说,它们应该可以通过 实际的数据和事实来验证其正确性和有效性
总结:
- 1.什么是思维链方法?
- 相比于之前传统的上下文学习(即通过x1,y1,x2,y2,....xtest 作为输入来让大模型补全输出y test),思维链多了中间的推导提示
- 2. 思维链的分类
- Few-shot CoT以及Zero-shot CoT
4. PEFT大模型参数高效微调方法原理
PEFT(Parameter-Efficient Fine-Tuning)参数高效微调方法是目前大模型在工业界应用的主流方式之 一(PEFT其实就是一个库,里面有很多微调方法),PEFT方法仅微调少量或额外的模型参数,固定大部分预训练参数,大大降低了计算和存储成本,同时最先进的PEFT技术也能实现了与全量微调相当的性能
PEFT的优势:
该方法可以使PLM(预训练语言模型)高效适应各种下游应用任务,而无需微调预训练模型的所有参数,且让大模型在消费级硬件上进行全量微调(Full Fine-Tuning)变得可行.
PEFT 方法分类:
- Prefix/Prompt-Tuning:在模型的输入或隐层添加k个额外可训练的前缀伪tokens,只训练这些前缀参数
- Adapter-Tuning:将较小的神经网络层或模块插入预训练模型的每一层,这些新插入的神经模块称为adapter(适配器),下游任务微调时也只训练这些适配器参数
- LoRA:通过学习小参数的低秩矩阵来近似模型权重矩阵 W 的参数更新,训练时只优化低秩矩阵参数
Prefix-Tuning
2021年论文《Prefix-Tuning: Optimizing Continuous Prompts for Generation》中提出了 Prefix Tuning 方法,该方法是在输入 token 之前构造一段任务相关的 virtual tokens 作为 Prefix,然 后训练的时候只更新Prefix部分的参数,而Transformer 中的其他部分参数固定
Prefix-Tuning任务形式:
Prefix-Tuning特点
对比之前的微调方式:
- 对比P-Tuning
- Prefix-Tuning 是将额外的embedding加在开头,看起来更像模仿Instruction指令,而P- Tuning 位置不固定
- Prefix-Tuning 通过在每个层都添加可训练参数,通过MLP初始化, 而P-Tuning只在输入的时候加入embedding,并通过LSTM+MLP初始化
- 对比Prompt-Tuning
- Prompt Tuning 方式可以看做是 Prefix Tuning 的简化,只在输入层加入prompt tokens,并不需要加入MLP 进行调整来解决难训练的问题
总结:
- 1.什么是Prefix Tuning?
- 该方法是在输入 token 之前构造一段任务相关的 virtual tokens 作为 Prefix,然后训练的时候只更新 Prefix 部分的参数, 而 Transformer 中的其他部分参数固定..
- 2.Prefix-Tuning和P-Tuing的区别?
- 1.Prefix-Tuning 是将额外的embedding加在开头,而P-Tuning位置不固定;2.Prefix-Tuning 通过在每个层都添加可训练参数,通过MLP初始化,而P-Tuning只在输入的时候加入embedding, 并通过 LSTM+MLP初始化.
- 3.Prefix-Tuning和Prompt-Tuing的区别?
- Prompt Tuning 方式可以看做是Prefix Tuning 的简化,只在输 入层加入prompt tokens,并不需要加入MLP 进行调整来解决难训练的问题
Adapter Tuning
2019年谷歌的研究人员首次在论文《Parameter-Efficient Transfer Learning for NLP》提出针对BERT 的 PEFT微调方式,拉开了PEFT 研究的序幕. 不同于Prefix Tuning这类在输入前添加可训练prompt参数, 以少量参数适配下游任务,Adapter Tuning 则是在预训练模型内部的网络层之间添加新的网络层或模块来适配下游任务.当模型训练时,固定住原来 预训练模型的参数不变,只对新增的Adapter结构进行微调
LoRA
低秩适应(Low-Rank Adaptation)是一种参数高效的微调技术,其核心思想是对大型模型的权重矩阵进行隐式的低秩转换,也就是:通过一个较低维度的表示来近似表示一个高维矩阵或数据集.
LoRA的产生:
上述Adapter Tuning 方法在 PLM 基础上添加适配器层会引入额外的计算,带来推理延迟问题;而 Prefix Tuning 方法难以优化,其性能随可训练参数规模非单调变化,更根本的是,为前缀保留部分序列长度必然会减少用于处理下游任务的序列长度. 因此微软推出了LoRA方法
在 LoRA 技术中,B 矩阵被初始化为全零,其核心目的是确保模型在训练开始时完全保持预训练权重的原始行为,从而避免对模型造成任何初始扰动,保证训练的平稳启动。
为什么是 B 而不是 A?
LoRA 的更新公式为:ΔW = B × A,其中 A 是降维矩阵(d → r),B 是升维矩阵(r → d)。如果 B 初始化为 0,则无论 A 的值是多少,ΔW 都恒等于 0,这意味着模型在第一步前向传播时,输出与未加 LoRA 时完全一致。
而 A 矩阵必须使用高斯分布随机初始化(如 N(0, σ²)),原因如下:
- 保证梯度流动:如果 A 也初始化为 0,那么 A 的输出就是 0,导致 B 的输入梯度也为 0,B 无法被有效更新,整个 LoRA 路径会“死掉”。
- 提供探索空间:随机初始化的 A 为模型提供了足够的“探索方向”,使其能在训练初期快速找到有效的优化路径。
工程实践中的关键细节
在实际部署中,LoRA 通常会引入一个缩放因子 α(alpha),最终更新量为 (α/r) × B × A。这个缩放因子的作用是控制 LoRA 更新的幅度,防止低秩矩阵在训练后期对原模型造成过大冲击。即使 B 初始化为 0,随着训练进行,B 会逐渐学习到非零值,从而逐步“激活”LoRA 的适配能力。
这种“A 随机 + B 为零”的初始化策略,是 LoRA 能够在极小参数量下实现高效微调的关键设计之一,它巧妙地平衡了“保持原模型稳定性”和“允许新任务学习”之间的矛盾
总结:
- 1.什么是Adapter Tuning?
- 在预训练模型内部的网络层之间添加新的网络层或模块来适配下游任务
- 2.什么是LoRA?
- 一种特殊的adapter,一种高效参数微调方法,对大型模型的权重矩阵进行隐式的低秩转换
- 3.LoRA原理?
- 冻结预训练模型的权重,并在每个Transformer块中注入可训练层(称为秩分解矩阵),即在模型的Linear层的旁边增加一个“旁 支 ”A和B。其中,A将数据从d维降到r维,这个r是LoRA的秩,是一个重要的超参数;B将数据从r维升到d维,B部分的参数初始为0。模型训 练结束后,需要将A+B部分的参数与原大模型的参数合并在一起使用
【上一篇】【AI大模型应用开发】【基础】4.LLM主流开源大模型介绍
【下一篇】【AI大模型应用开发】【基础】6.LLM的提示词工程应用-金融行业动态方向评估项目