论文阅读笔记——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%。这种策略不仅显著加速了推理过程,还保持了模型的整体性能,是一种更为精细和高效的优化方法。*
相关推荐
Pandaconda1 分钟前
【新人系列】Golang 入门(七):闭包详解
开发语言·经验分享·笔记·后端·golang·go·闭包
卧式纯绿14 分钟前
目标检测20年(二)
人工智能·深度学习·算法·yolo·目标检测·机器学习·目标跟踪
xiaocao_102321 分钟前
可以高效记录工作生活琐事的提醒APP工具
人工智能·生活·提醒
无极低码32 分钟前
基于deepseek的智能语音客服【第二讲】后端异步接口调用封装
java·人工智能·deepseek
梓羽玩Python39 分钟前
3天内猛涨2.6k+ Star!LangManus:用自然语言操控全网数据,复杂任务一键执行
人工智能·python·github
Honeysea_701 小时前
TensorFlow和Pytorch在功能上的区别以及优势
人工智能·pytorch·tensorflow
点我头像干啥1 小时前
TensorFlow深度学习实战项目:从入门到精通
人工智能·深度学习·tensorflow
成都纵横智控科技官方账号1 小时前
高性能边缘计算网关-高算力web组态PLC网关
大数据·人工智能·边缘计算
ZhuBin3651 小时前
测试Claude3.7 sonnet画蛋白质
人工智能·机器学习·自动化·agi
Bigger1 小时前
Tauri(十四)—— Coco AI 到底能干什么?
人工智能·搜索引擎·openai