趋近智
适配器微调是一种高效的微调方法,最初由Houlsby等人(2019)提出。它是早期的附加型PEFT方法之一。与低秩适配 (LoRA) 修改现有权重不同,适配器微调是在预训练模型架构中引入新的、小的、可训练的模块,同时保持原始模型参数冻结。这种方法大幅减少了微调时需要更新的参数数量。
适配器微调的基本原理简洁而巧妙:冻结预训练模型绝大多数参数(通常有数十亿个),并在模型的每一层或选定层中插入紧凑的、任务专用的“适配器”模块。微调时,只有这些新添加的适配器模块的参数会被训练。大语言模型(LLM)的原始权重保持不变。
这种模块化提供了显著优点:
标准适配器模块通常采用瓶颈架构,旨在降低计算成本,同时提供足够的适应表达能力。它通常按顺序放置在Transformer块内,经常处理多头注意力或前馈网络等子层的输出。
结构通常包含:
数学上,如果 是适配器模块的输入,该操作可表示为:
这里 是下投影的权重矩阵, 是上投影的权重矩阵, 是非线性激活函数。线性层中可以选择性地包含偏置项。
适配器模块处理后的最终输出 ,包括残差连接,为:
初始化: 一种常见做法是随机初始化 (例如使用标准的Kaiming或Xavier初始化),但将 初始化为接近零。这确保了在训练开始时(),适配器模块的输出 接近零,使 。这种策略有助于保留预训练模型的初始能力并有助于稳定训练,因为适配器会逐步学习必要的任务专用变换。
适配器模块需要策略性地放置在Transformer架构内。常见位置包含:
通常,适配器在每个Transformer块内的注意力子层和FFN子层之后插入。下图展示了这些典型插入位置。
Transformer块的简化视图,突出显示了适配器模块在主要子层(注意力层和FFN)之后的典型插入位置。基础模型组件保持冻结。
适配器微调的参数效率源于适配器模块相对于完整模型层的小尺寸。对于一个输入/输出维度为 、瓶颈维度为 的单个适配器模块,可训练参数的数量大约是 (来自 和 ),再加上可能的少量偏置项(下投影为 个,上投影为 个)。
如果我们考虑一个有 层的模型,并在每层插入两个适配器(一个在MHSA之后,一个在FFN之后),可训练参数总数大约是 。鉴于 ,这个数量远小于原始模型层中的参数,后者通常与 成比例(例如在前馈网络和注意力投影中)。例如,如果 且 ,每个适配器大约有 个参数(忽略偏置项),而一个单一的FFN层可能拥有数百万个参数。这种减少使得在内存有限的硬件上微调大型模型成为可能。
这些简单的模块如何适应一个大型预训练模型呢?适配器学习任务专用函数,这些函数作用于由冻结的LLM层生成的中间表示。它们充当轻量级的“引导”机制,精细地修改通过网络的信息流,以更好地适应目标任务的要求。通过以特定方式调整注意力层和前馈层的输出,适配器可以使模型的行为专用化,而无需改变其在预训练期间捕获的核心知识。残差连接确保适配器最初提供近似恒等映射(如果 接近零),这使得模型能够从其预训练状态开始,并逐步融入所学习的适配器变换。
虽然这里描述的基本架构是常见的,但存在一些变体,例如在适配器内放置层归一化或研究并行适配器配置。然而,插入带有残差连接的小型、可训练瓶颈模块的主要原理仍是适配器微调方法的核心。在下一节中,我们将介绍实际实现细节。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造