问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

微调方法对比:LoRA、P-tuning、Freeze

创作时间:
2025-03-10 14:23:30
作者:
@小白创作中心

微调方法对比:LoRA、P-tuning、Freeze

引用
CSDN
1.
https://blog.csdn.net/m0_52965867/article/details/140998082

在大语言模型的微调领域,LoRA、P-tuning和Freeze是三种主流的微调方法。它们各有优劣,适用于不同的场景。本文将详细介绍这三种方法的原理、优势和适用场景,帮助读者更好地理解它们的特点。

LoRA 微调方法的主要优势

预训练模型参数可以被共享,用于为不同的任务构建许多小的 LoRA 模块。冻结共享模型,并通过替换矩阵 A 和 B 可以有效地切换任务,从而显著降低存储需求和多个任务切换的成本。

当使用自适应优化器时,由于不需要计算梯度以及保存太多模型参数,LoRA 使得微调效果更好,并将微调的硬件门槛降低了 3 倍。

低秩分解采用线性设计的方式使得在部署时能够将可训练的参数矩阵与冻结的参数矩阵合并,与完全微调的方法相比,不引入推理延迟。

LoRA 与其它多种微调方法不冲突,可以与其它微调方法相结合,比如下节实训将要介绍的前缀调优方法等。

Prefix-tuning 微调方法

在模型中加入 prefix,即连续的特定任务向量,微调时只优化这一小段参数

p ϕ ( z i + 1 ∣ h ≤ i ) = s o f t m a x ( W ϕ h i ( n ) ) pϕ(zi+1∣h≤i)=softmax(Wϕhi(n))pϕ(zi+1∣h≤i)=softmax(Wϕhi(n))

其中ϕ是语言模型的参数。在自回归语言模型前添加 prefix 后,z=[prefix;x;y]或者z=[prefix;x;prefix;y],Pidx表示 prefix 的索引,|Pidx|表示 prefix 的长度。

Prefix-tuning 通过初始化可训练矩阵Pθ(维度为∣Pidx×dim(hi)∣) 来存储 prefix 参数:

h i = { P θ [ i , : ] , i f i ∈ P i d x L M ϕ ( z i , h < i ) , o t h e r w i s e } hi={Pθ[i,:],ifi∈PidxLMϕ(zi,h<i),otherwise}hi={Pθ[i,:],if i∈Pidx LMϕ(zi,h<i),otherwise}

训练对象与 Fine-tuning 相同,但语言模型的参数ϕ固定,仅 prefix 参数θ是可训练的参数。因此hi是可训练的Pθ的函数。

P-tuning v1 微调方法

将 Prompt 加入到微调过程中,只对 Prompt 部分的参数进行训练,而语言模型的参数固定不变

P-tuning v1 设计一个自动的生成连续 prompt 的方法来提升模型的微调效果。

{ h 0 , … , h i , e ( x ) , h i + 1 , … , h m , e ( y ) } {h0,…,hi,e(x),hi+1,…,hm,e(y)}{h0,…,hi,e(x),hi+1,…,hm,e(y)}

其中h代表 P-tuning v1 的连续 prompt 表征,e代表一个预训练的语言模型,x代表数据的原始输入,y代表数据的标签。在面对下游任务微调时,通过优化h的参数来进行模型微调:

h 0 : m = a r g m i n L ( M ( x , y ) ) h^0:m=argminL(M(x,y))h0:m=argminL(M(x,y))

注意:p-tuning不是随机初始化几个token直接训练,而是通过一个小型的LSTM模型把这几个Embedding算出来,并且将这个LSTM模型设为可学习的。

表现:

超过 100 亿个参数时,P-tuning v1 可以与全参数微调方法相媲美 但对于那些较小的模型,P-tuning v1 方法和全参数微调方法的表现有很大差异,效果很差

同时,P-tuning v1 缺少跨任务的通用性,在序列标注任务中的有效性没有得到验证

P-tuning v2 微调方法

采用了 prefix-tuning 的做法,在输入前面的每一层都加入可微调的参数。

每一层的 transformer 的 embedding 输入都需要被微调,而 P-tuning v1 只在第一层进行微调

同时,对于 prefix 部分,每一层 transformer 的输入不是从上一层输出,而是随机初始化的 embedding 作为输入。

P-Tuning v2 还包括以下改进:

移除 Reparamerization 加速训练方式;

采用多任务学习优化:基于多任务数据集的 Prompt 进行预训练,然后再适配的下游任务。

舍弃词汇 Mapping 的 Verbalizer 的使用,重新利用 [CLS] 和字符标签,跟传统微调方法一样利用 cls 或者 token 的输出做自然语言理解,以增强通用性,可以适配到序列标注任务。

Freeze微调

Freeze 微调方法为什么只微调 Transformer 后几层的全连接层参数呢?下面对其原因进行展开讲述。

Transformer 模型主要由自注意力层和全连接层(FF 层)构成。对于 Transformer 的每一层结构,自注意力层的参数量为4⋅d2,即WQ、WQ、WQ和WQ ∈Rd×d;FF 层的参数量为8⋅d2,即W1∈Rd×4d,W2∈Rd×4d。因此 FF 层占据了模型的32的参数,具有重要的研究价值。

对于各类不同的 NLP 任务,浅层特征往往是具有 “共性”,而主要区别在于各自深层次的语义特征

因此,通过仅微调 Transformer 后几层的全连接层参数,在保证参数高效微调的前提下,可以最大程度的发挥大语言模型的微调作用。

优势:

大量减少了大语言模型的微调参数,是一种参数高效的微调方法;

由于只需微调高层特征,加快了模型的收敛,节约了微调的时间;

最大程度地保留了大语言模型预训练所学习到的语言的 “共性”,可解释性较强。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号
微调方法对比:LoRA、P-tuning、Freeze