当前位置: 首页 > news >正文

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


目录

    • 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.dtcms.com/a/90115.html

相关文章:

  • spring 核心注解整理
  • Windows 和 Linux 操作系统架构对比以及交叉编译
  • 网络华为HCIA+HCIP 交换机
  • ⭐算法OJ⭐连接所有点的最小费用【最小生成树】(C++实现)Min Cost to Connect All Points
  • 申报视频材料要求!第三批南充西充县非物质文化遗产代表性项目(增补)条件时间和申请程序
  • 原生后台GPS位置限制,降低功耗
  • HarmonyOS NEXT图形渲染体系:重新定义移动端视觉体验
  • 中学数学几百年重大错误:将无穷多各异假R误为R——两数集相等的必要条件
  • ABC391题解
  • 笔试专题(三)
  • 26考研——图_图的代码实操(6)
  • uv包简单使用案例
  • 在 Mac 上使用 Poetry 配置环境变量
  • 【外设】之STIM210陀螺仪学习记录
  • 大数据学习(86)-Zookeeper去中心化调度
  • Python_电商日报_不同数据来源清洗整理成一张表
  • javaweb自用笔记:Mybatis
  • 案例实践 | 招商局集团以长安链构建“基于DID的航运贸易数据资产目录链”
  • 基于大模型预测的初治菌阳肺结核诊疗方案研究报告
  • ORBITVU 欧保图,开启自动化摄影新时代
  • 【精心整理】2025 DeepSeek 精品学习资料合集-共50份(教程+原理解读+行业应用+技术实践).zip
  • 关于瑞芯微开发工具(RKDevTool)刷机下载Boot失败原因的研究
  • 2025-3-25算法打卡
  • H3C交接机初始基本配置
  • 论文评估指标
  • 敏捷需求分析之INVEST原则
  • 手机销售终端MPR+LTC项目项目总体方案P183(183页PPT)(文末有下载方式)
  • 《Python全栈开发》第14课:项目部署 - Docker与云服务实战
  • Android设计模式之工厂方法模式
  • 全面讲解python的uiautomation包