【大模型基础_毛玉仁】4.2 参数附加方法

ops/2025/3/29 15:10:28/

目录

    • 4.2 参数附加方法
      • 4.2.1 加在输入
      • 4.2.2 加在模型
        • 1)Prefix-tuning(前缀微调)
        • 2)Adapter-tuning(适配器微调)
        • 3)AdapterFusion(适配器融合)
      • 4.2.3 加在输出


4.2 参数附加方法

参数附加方法通过增加新的参数或模块对大语言模型进行微调,按附加位置分为三类:

  • 加在输入、

  • 加在模型、

  • 加在输出。

.

4.2.1 加在输入

加在输入的方法:

  • 额外参数附加到模型的输入嵌入Embedding)中,最经典的方法是 Prompt-tuning。

Prompt-tuning通过在模型输入中引入可微分的连续张量即软提示Soft prompt),与文本数据一起输入模型,微调时仅更新软提示参数,达到参数高效微调目的。

给定输入文本序列,经嵌入层转化成输入嵌入矩阵X,引入软提示嵌入矩阵P,将P与X拼接成新矩阵[P;X],输入Transformer模型,通过反向传播最大化输出概率似然训练模型,且仅更新软提示参数P。

图 4.3: Prompt-tuning 示意图
在这里插入图片描述

软提示长度通常在1到200之间,20以上有性能保证。

软提示初始化对性能有影响,使用词表中的 token 或在分类任务中用类名进行初始化会优于随机初始化。

Prompt-tuning最初为自动学习提示词,而非参数高效微调。

前面介绍的常见提示工程是硬提示Hard prompt),大语言模型输出质量依赖提示词构建,找最佳提示词费时,故采用可微分方式通过反向传播自动优化提示词更有效。

Prompt-tuning优势:

  • 内存效率高,显著降低内存需求,如T5-XXL模型经Prompt-tuning后参数量大幅减少;

  • 多任务能力,单一冻结模型可适应多任务,只需存储小的任务提示模块,还能混合任务推理;

  • 缩放特性好,模型参数量增加时性能增强,10B参数量下性能接近全参数微调。

.

4.2.2 加在模型

加在模型的方法:

  • 额外的参数或模型添加到预训练模型的隐藏层中。

  • 经典的方法有:Prefix-tuning(前缀微调)、Adapter-tuning(适配器微调) 和 AdapterFusion(适配器融合)。

1)Prefix-tuning(前缀微调)

Prefix-tuning 将一系列连续的可训练前缀(Prefixes,即 Soft-prompt)插入到输入嵌入以及 Transformer 注意力模块中。

图 4.4: Prefix-tuning 示意图
在这里插入图片描述

Prefix-tuning引入可学习向量Pk和Pv,添加到Transformer的键K和值V前,但存在参数更新不稳定、优化难收敛的问题。实际应用中,输入Transformer前需经多层感知机(MLP)重参数化,训练参数包括MLP和前缀矩阵,训练后丢弃MLP参数,仅保留前缀参数。

  • MLP重参数化的作用:是通过MLP对前缀参数进行处理,生成更适合Transformer模型的参数形式,有助于优化过程的稳定性和模型的最终性能。

Prefix-tuning有三大优势:

  • 参数效率:只有前缀参数在微调过程中被更新,这显著减少了训练参数量;

  • 任务适应性:前缀参数可以针对不同的下游任务进行定制,微调方式灵活;

  • 保持预训练知识:由于预训练模型的原始参数保持不变,Prefix-tuning 能够保留预训练过程中学到的知识。

.

2)Adapter-tuning(适配器微调)

Adapter-tuning 向预训练语言模型中插入新的可学习的神经网络模块,称为适配器Adapter)。

图 4.5: Adapter-tuning 示意图
在这里插入图片描述

适配器采用瓶颈结构,包含下投影层、非线性映射和上投影层。下投影层将信息压缩到低维表示,经非线性映射后,上投影层将其扩展回原始维度。

Adapter-tuning 在 Transformer 的每一个多头注意力层(Multi-head Attention Layer)和全连接层(Feed-forward Network Layer)之后添加适配器。

与 Transformer 的全连接层不同,由于采用了瓶颈结构,适配器的隐藏维度通常比输入维度小

.

Adapter-tuning 适配器公式

适配器模块由下投影矩阵 W d ∈ R d × r W_d \in \mathbb{R}^{d \times r} WdRd×r、上投影矩阵 W u ∈ R r × d W_u \in \mathbb{R}^{r \times d} WuRr×d 及残差连接组成,其计算公式为:

A ( l ) = σ ( W d ∗ H ( l − 1 ) ) W u + H ( l − 1 ) A^{(l)} = \sigma(W_d * H^{(l-1)}) W_u + H^{(l-1)} A(l)=σ(WdH(l1))Wu+H(l1)

其中:

  • σ ( ⋅ ) \sigma(\cdot) σ() 是激活函数(如 ReLU 或 Sigmoid)

  • A ( l ) A^{(l)} A(l) 是适配器的输出

  • H ( l − 1 ) H^{(l-1)} H(l1) 是第 (l-1) 层的隐藏状态

适配器中,下投影矩阵将 d 维输入压缩到低维 r,上投影矩阵再将其投回 d 维。因此,每层总参数量为 2dr + d + r,设置 r ≪ d 可减少任务参数量。

适配器模块可设计得更复杂,如多投影层、不同激活函数和参数初始化。Adapter-tuning 变体包括调整模块位置和剪枝等策略,以减少可训练参数。

.

3)AdapterFusion(适配器融合)

Adapter-tuning 通过适配器参数学习单个任务知识,无需更新预训练模型。若要结合多任务知识,可“融合”(Fusion)多个适配器参数。AdapterFusion 提出两阶段学习法:知识提取和知识组合。

AdapterFusion 的两阶段步骤如下:

(1)知识提取: 对每个任务分别训练适配器模块,学习特定任务的知识。该阶段有两种训练方式:

  • Single-Task Adapters (ST-A):独立优化每个任务的适配器,互不干扰。

  • Multi-Task Adapters (MT-A):联合优化多个任务的适配器。

(2)知识组合:

  • 引入融合模块,搜索多个任务适配器的最优组合,实现任务泛化。

  • 该阶段,语言模型的参数以及 N 个适配器的参数被固定,仅微调 AdapterFusion 模块的参数。

.

AdapterFusion 公式

在知识组合阶段,AdapterFusion 引入融合模块,通过优化以下损失函数来搜索多个任务适配器模块的最优组合:

Ψ ← a r g m i n Ψ L n ( D n ; Θ , Φ 1 , … , Φ N , Ψ ) \Psi \leftarrow argmin_{\Psi} L_n(D_n; \Theta, \Phi_1, \ldots, \Phi_N, \Psi) ΨargminΨLn(Dn;Θ,Φ1,,ΦN,Ψ)

其中:

  • L n L_n Ln 是第 n 个任务的损失函数

  • D n D_n Dn 是第 n 个任务的训练数据

  • Θ \Theta Θ 表示预训练模型参数

  • Φ i \Phi_i Φi 表示第 i 个任务的适配器模块参数

  • Ψ \Psi Ψ 是融合模块参数

图 4.6: AdapterFusion 示意图
在这里插入图片描述

AdapterFusion 模块每层包含可学习的 Key、Value 和 Query 投影矩阵。全连接层输出作为 Query,适配器输出作为 Key 和 Value,计算注意力得到联合多个适配器的输出结果。此外,在不同的适配器模块间参数共享融合模块,可以进一步减少参数数量。

.

4.2.3 加在输出

在微调大语言模型时,面临模型参数庞大(如LLaMA最大模型有70B参数)和无法访问模型权重(黑盒模型)的问题。

为解决这些问题,代理微调Proxy-tuning)提出一种轻量级解码时(Decoding-time)算法,允许在不直接修改模型权重、仅访问模型输出词汇表预测分布的情况下,实现对大语言模型的定制化调整。

图 4.7: Proxy-tuning 示意图
在这里插入图片描述

如图所示,在代理微调中,给定代理模型 M M M 和较小的反专家模型 M − M^{-} M,二者词汇表需相同。微调 M − M^{-} M 得到专家模型 M + M^{+} M+。在自回归生成每步中,计算 M + M^{+} M+ M − M^{-} M 的 logits 分布差异,并将其加到 M M M 下一词预测的 logits 分布中。

.

Proxy-tuning公式

在代理微调中,给定代理模型 M \mathcal{M} M、专家模型 M + \mathcal{M}^+ M+ 和反专家模型 M − \mathcal{M}^- M,针对每一时间步 t 的输入序列 x < t x_{<t} x<t,从三个模型中获取输出分数 s M , s M + , s M − s_{\mathcal{M}}, s_{\mathcal{M}^+}, s_{\mathcal{M}^-} sM,sM+,sM。通过以下公式调整目标模型的输出分数 s ~ \tilde{s} s~

s ~ = s M + s M + − s M − \tilde{s} = s_{\mathcal{M}} + s_{\mathcal{M}^+} - s_{\mathcal{M}^-} s~=sM+sM+sM

然后,使用 softmax 函数对其进行归一化,得到输出概率分布:

p M ~ ( X t ∣ x < t ) = softmax ( s ~ ) p_{\tilde{\mathcal{M}}}(X_t | x_{<t}) = \text{softmax}(\tilde{s}) pM~(Xtx<t)=softmax(s~)

最后,在该分布中采样得到下一个词的预测结果。

在实际使用中,专家模型通常较小(如LLaMA-7B),而代理模型较大(如LLaMA-13B或70B)。通过代理微调,将小模型的知识以解码时约束的方式迁移到大模型中,节省计算成本,且适用于黑盒模型。

.


其他参考:【大模型基础_毛玉仁】系列文章


声明:资源可能存在第三方来源,若有侵权请联系删除!


http://www.ppmy.cn/ops/169928.html

相关文章

mapbox进阶,添加鹰眼图控件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️mapboxgl-minimap 鹰眼控件二、🍀添加…

PortAudio--PCM播放与采集

PortAudio 是一款跨平台音频 I/O 库,支持 Windows、Linux、macOS 等系统,其核心设计基于异步回调机制,适用于实时音频采集与播放场景。主要负责‌音频流的采集与播放‌,其原生接口仅支持‌PCM格式‌的原始音频数据处理,不包含内置的音频编码模块‌。 官网:https://www.p…

当了5年牛马,我开始划水了。。。

我现在的这份工作&#xff0c;比上一份要好很多&#xff0c;首先薪资直接涨了一倍&#xff0c;7k到16.5k&#xff0c;13薪&#xff0c;朝九晚六&#xff0c;从不加班&#xff0c;项目也简单&#xff0c;包括我在内测试组一共有6个同事&#xff0c;但是每个人分到的任务真的很少…

FACTR赋能Franka机器人:触觉-视觉融合决策的颠覆性突破

机器人触觉感知的瓶颈与突破 在接触密集型任务&#xff08;如易碎品抓取、面团揉捏、精密装配&#xff09;中&#xff0c;触觉与力反馈是保障操作安全性与适应性的核心。传统系统存在两大瓶颈&#xff1a;数据获取割裂&#xff1a;传统遥操作缺乏双向力觉耦合&#xff0c;示范…

数据库数值函数详解

各类资料学习下载合集 ​​https://pan.quark.cn/s/8c91ccb5a474​​ 数值函数是数据库中用于处理数值数据的函数,可以用于执行各种数学运算、统计计算等。数值函数在数据分析及处理时非常重要,能够帮助我们进行数据的聚合、计算和转换。在本篇博客中,我们将详细介绍常用的…

数据类设计_图片类设计_矩阵图类型和像素图类型设计的补充

前言 以矩阵图类型和像素图类型作为图像类数据的基础,但在使用过程中有个问题:矩阵图形和像素图形的尺寸---长和高没有表现出来,本贴对此做出分析. 引入 原帖数据类设计_图片类设计之7_矩阵图形类设计更新_实战之页面简单设计&#xff08;前端架构&#xff09;-CSDN博客里有对…

【Linux文件IO】Linux中文件属性与目录操作的API介绍和用法

Linux中文件属性与目录操作的API介绍和用法 一、文件属性1、获取文件属性信息的函数接口2、文件的设备号示例代码&#xff1a; 3、类型与权限4、其他简单文件信息 二、目录操作1、基本概念2、相关的接口函数(1) 打开目录(2) 读取目录(重点)示例代码&#xff1a; (3) 新建目录示…

飞书只有阅读权限的文档下载,飞书文档下载没有权限的文件

wx搜索公zhong号&#xff1a;"狮心王"回复"飞书文档保存"下载chrome扩展文件 拿到扩展文件之后给chrome添加扩展