论文阅读笔记——Adapter,AdapterFusion,AdapterDrop

Adapter

Adapter 论文

Adapter 是一组轻量级的参数,被添加到模型的中间层,以保护原有预训练模型的参数。

Adapter:少量参数近似恒等初始化 。注意:仍然增加了网络深度!!!

Adapter模块由两个前馈子层构成。第一个子层接收 Transformer 块的输出,并将原始输入维度 d 映射到较小的维度 m(通常m远小于d),以此限制模块的参数量。第二个子层则负责将维度m重新映射回d,作为模块的最终输出。这种设计使得 Adapter 模块能够在不调整整个模型参数的情况下,灵活适应新的下游任务,有效避免了全模型微调带来的计算负担和灾难性遗忘问题。通过引入少量任务特定的参数,Adapter 方法能够高效存储任务相关知识,显著降低模型微调所需的计算资源。

AdapterFusion

AdapterFusion 论文

将 Adapter 扩展到了多任务


AdapterFusion 将学习过程划分为两个阶段:

  1. 知识提取阶段:在此阶段,训练Adapter模块以捕捉下游任务的特定知识,并将这些知识编码到 Adapter 模块的参数中。
  2. 知识组合阶段:在此阶段,固定预训练模型参数和特定任务的 Adapter 参数,同时引入新的参数 Ψ,用于学习如何融合多个 Adapter 模块中的知识,从而提升模型在目标任务上的性能。

具体而言,首先针对 N 个不同的下游任务 分别训练 N 个独立的 Adapter 模块。随后,AdapterFusion 通过固定预训练参数 Θ 和所有 Adapter 参数 Φ,并引入新参数 Ψ,利用 N 个下游任务的数据集进行训练,学习如何组合这些 Adapter 模块以解决特定任务 。参数Ψ在每一层中包含 Key、Value和Query(如右侧架构所示)。在 Transformer 的每一层中,前馈网络子层的输出作为 Query,而各个 Adapter 模块的输出分别作为 Key 和 Value。通过计算 Query 与 Key 的点积并输入 SoftMax 函数,AdapterFusion 能够根据上下文动态加权不同的 Adapter 模块。在给定上下文中,AdapterFusion 学习如何混合已训练 Adapter 模块的参数,并根据输入激活最相关的 Adapter 模块。

优势与挑战

  • 通过将Adapter的训练分为知识提取和知识组合两个阶段,AdapterFusion 有效解决了灾难性遗忘、任务间干扰和训练不稳定的问题。
  • 然而,Adapter模块的引入增加了模型的整体参数量,可能会对推理性能产生一定影响。

AdapterDrop

AdapterDrop 论文

Adapter 和 AdapterFusion 推理加速版

为了提升推理效率,可以在推理时对某些层的 Adapter 进行剪枝。作者提出了一种策略,即在推理时剪掉最靠近输入的前 n 层 Adapter。为了尽可能减少性能损失,作者设计了两种训练方案:

  1. Specialized AdapterDrop:在训练时固定剪枝层数 n,推理时也固定剪掉前 n 层 Adapter。
  2. AdapterDrop(Robust AdapterDrop :在训练时,每个 batch 随机选择不同的 n 值进行训练,使得训练后的模型能够适应多种剪枝配置。
    由于模型的其他参数在训练过程中是固定的,梯度只需回传到保留的最早一层 Adapter 即可。这种设计不仅减少了计算量,还能在推理时灵活调整 Adapter 的使用,从而在加速推理的同时尽可能保持模型性能。

对于 AdapterFusion 进行剪枝:

  • 去除前几层 AdapterFusion(AF)层对模型性能的影响因任务而异。例如,在 RTE 任务中,去除 AF 层对性能影响较小,而在 CoLA 任务中,模型对去除 AF 层非常敏感。这表明,直接去除 AF 层并不是一种通用的优化方法。
  • 为了更有效地提升推理速度,作者提出了一种基于贡献度的剪枝策略:通过测量每个 Adapter 在训练集上的平均激活水平(即加权后的输出),识别出每层中对输出贡献较小的 Adapter。具体实现中,每层仅保留两个贡献最高的 Adapter,其余 Adapter 被剪枝。实验表明,这种方法在几乎不损失模型性能的情况下,可以将推理速度提升 68%。这种策略不仅显著加速了推理过程,还保持了模型的整体性能,是一种更为精细和高效的优化方法。*
相关推荐
_Kayo_3 小时前
node.js 学习笔记3 HTTP
笔记·学习
Moshow郑锴4 小时前
人工智能中的(特征选择)数据过滤方法和包裹方法
人工智能
TY-20255 小时前
【CV 目标检测】Fast RCNN模型①——与R-CNN区别
人工智能·目标检测·目标跟踪·cnn
CareyWYR6 小时前
苹果芯片Mac使用Docker部署MinerU api服务
人工智能
失散136 小时前
自然语言处理——02 文本预处理(下)
人工智能·自然语言处理
mit6.8246 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
人工智能·python
sinat_286945196 小时前
AI应用安全 - Prompt注入攻击
人工智能·安全·prompt
星星火柴9367 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
迈火8 小时前
ComfyUI-3D-Pack:3D创作的AI神器
人工智能·gpt·3d·ai·stable diffusion·aigc·midjourney
Moshow郑锴8 小时前
机器学习的特征工程(特征构造、特征选择、特征转换和特征提取)详解
人工智能·机器学习