趋近智
对拥有数十亿参数的预训练模型进行适配,会遇到一些特别的难题。尽管完全微调效果好,但它需要为每个后续任务存储并管理模型的完整副本,这通常难以实现。此外,在有限的少样本数据上训练所有参数,可能导致过拟合以及预训练权重中宝贵知识的灾难性遗忘。低秩适配 (LoRA) 是一种高效且实用的参数高效微调 (PEFT) 技术,专门为解决这些问题而设计。
LoRA 的主要思想是,将预训练模型适配到特定任务所需的调整存在于一个低固有秩子空间中。LoRA 不修改层的整个高维权重矩阵 W(例如,在注意力或前馈网络中),而是建议使用低秩分解来表示权重的变化 ΔW。
考虑一个预训练的权重矩阵 W0∈Rd×k。在适配过程中,LoRA 保持 W0 不变,并引入两个较小的、可训练的“更新”矩阵:B∈Rd×r 和 A∈Rr×k。其中,秩 r 比原始维度 d 和 k 小很多(即 r≪min(d,k))。对原始权重的更新由这些矩阵的乘积表示:
ΔW=BA使用这个适配后的权重矩阵 W=W0+ΔW 的层的前向传播可以表示为:
h=W0x+ΔWx=W0x+BAx重要的是,在适配过程中只有 A 和 B 的参数得到优化;原始权重 W0 保持不变。这大大减少了可训练参数的数量,从 d×k 减少到 r×(d+k)。 r 的典型取值范围是 4 到 64,使得可训练参数的数量比原始模型大小小几个数量级。
为了控制适配的幅度并保证其稳定,LoRA 通常会引入一个缩放因子 α。组合后的权重矩阵变为 W=W0+rαBA。矩阵 B 通常用零初始化,而 A 则使用随机高斯分布初始化。这种初始化策略保证了在训练开始时 (t=0),ΔW=BA 为零,这意味着适配过程从预训练模型的状态准确开始,随着 A 和 B 的学习逐渐引入任务相关的更新。
LoRA 的一个图示。原始权重矩阵 W0 保持固定。适配通过低秩分解矩阵 B 和 A 进行学习,它们相乘并(经过缩放后)加到 W0 上,从而构成有效权重矩阵 W。只有 B 和 A 得到训练。
LoRA 为适配大型预训练模型提供了多项优势:
在实现 LoRA 时,需要考虑几个选择:
r: 这是一个主要的超参数。更高的秩 r 允许更强的适配能力(ΔW 的更大容量),但会增加可训练参数的数量。较低的 r 参数使用更少,但可能限制模型有效适配的能力。4、8、16、32 等值是常见的初始选择,通常根据验证性能与参数数量的平衡进行调整。alpha: 这个超参数用于缩放 LoRA 更新 BA 的影响。它在一定程度上像是适配矩阵的学习率。通常的做法是将 α 设置为首次尝试的秩 r 的值,但它也可以独立调整。与完全微调相比,LoRA 在可训练参数和存储方面带来巨大节省。与适配器模块相比,LoRA 通过允许权重合并来避免引入推理延迟。虽然与 MAML 等元学习算法(它们学习优化快速适配的初始化)不同,但 LoRA 本身提供了一种直接的适配方法。它着重于提高特定任务适配步骤的效率,而不是在元训练阶段学习一个适用于多任务的通用适配流程。不过,LoRA 可以被视为一种补充;LoRA 的高效性甚至可能通过减轻内循环更新的计算压力,使某些元学习方法对预训练模型变得更实用。
总而言之,LoRA 为大型预训练模型的少样本适配提供了一种简单、有效且实用的方法。它能够大幅减少可训练参数和存储成本,同时保持性能且不引入推理延迟,使其成为参数高效微调 (PEFT) 领域一个很有用的工具。本章后面的实践部分将提供将 LoRA 用于适配预训练模型的具体操作指导。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造