AiPaper
论文状态:已完成

LoRA: Low-Rank Adaptation of Large Language Models

发表:2021/06/18
原文链接PDF 下载
价格:0.10
价格:0.10
已有 1 人读过
本分析由 AI 生成,可能不完全准确,请以原文为准。

TL;DR 精炼摘要

论文提出了一种名为LoRA的低秩适配方法,旨在解决大型语言模型的微调问题。该方法通过冻结预训练模型权重并在每层注入可训练的秩分解矩阵,显著减少了需要训练的参数数量,其效果在RoBERTa、DeBERTa、GPT-2及GPT-3模型上表现优异。

摘要

An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.

思维导图

论文精读

中文精读

1. 论文基本信息

1.1. 标题

LoRA: Low-Rank Adaptation of Large Language Models (LoRA: 大型语言模型的低秩适配)

标题直接点明了论文的核心内容:提出了一种名为 LoRA 的新方法,其关键技术是低秩适配 (Low-Rank Adaptation),专门用于大型语言模型 (Large Language Models)。标题简洁且信息量大,清晰地概括了研究的技术核心与应用对象。

1.2. 作者

Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen.

所有作者均来自微软公司 (Microsoft Corporation),其中一些作者也与学术机构(如卡内基梅隆大学)有关联。这是一个由工业界研究团队主导的工作,体现了解决大规模模型在实际部署中遇到的工程挑战的强烈动机。

1.3. 发表期刊/会议

该论文最初于 2021 年 6 月作为预印本在 arXiv 上发布。后被 ICLR 2022 (International Conference on Learning Representations) 接收,这是深度学习领域的顶级会议之一,享有极高的学术声誉和影响力。被该会议接收表明了这项工作在创新性、有效性和影响力方面得到了学术界的广泛认可。

1.4. 发表年份

2021 年 (预印本发表年份)

1.5. 摘要

大型语言模型(如 GPT-3 175B)的适配范式通常是在通用数据上进行大规模预训练,然后在特定任务或领域上进行微调。然而,随着模型规模的急剧增大,全量微调 (full fine-tuning)(即重新训练所有模型参数)变得越来越不可行,因为为每个任务都部署一个独立的、拥有 1750 亿参数的模型实例,其成本是极其高昂的。

为解决此问题,论文提出了低秩适配 (Low-Rank Adaptation, LoRA) 方法。该方法冻结 (freezes) 预训练模型的权重,并在 Transformer 架构的每一层中注入 (injects) 可训练的秩分解矩阵 (rank decomposition matrices)。这种做法极大地减少了下游任务需要训练的参数数量。

与使用 Adam 优化器进行全量微调的 GPT-3 175B 相比,LoRA 能够:

  • 将可训练参数的数量减少 10,000 倍。

  • 将 GPU 显存需求降低 3 倍。

    尽管可训练参数更少、训练吞吐量更高,但 LoRA 在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上的模型质量与全量微调相当甚至更好。与 Adapter 等其他参数高效方法不同,LoRA 不引入额外的推理延迟 (inference latency)。论文还通过实证研究探讨了语言模型适配中的秩亏损 (rank-deficiency) 现象,为 LoRA 的有效性提供了理论解释。

1.6. 原文链接

2. 整体概括

2.1. 研究背景与动机

随着深度学习的发展,自然语言处理领域形成了一个主流范式:先在海量通用文本数据上预训练一个巨大的语言模型,然后针对特定的下游任务(如文本摘要、情感分析、问答等)对这个模型进行微调。这种“预训练-微调”模式极大地提升了模型在各种任务上的性能。

然而,当模型规模达到 GPT-3 的 1750 亿参数级别时,这个范式遇到了一个巨大的工程和成本瓶颈:

  1. 存储成本高昂: 如果为每一个下游任务都进行全量微调,就需要为每个任务保存一份完整的模型副本。一个 175B 模型的副本大小约为 350GB (FP16),如果有成百上千个定制化任务,存储开销将是天文数字。

  2. 训练成本高昂: 全量微调一个 175B 模型的计算资源和时间成本非常高,需要大量的顶级 GPU 并行训练,这使得许多中小型组织无法承受。

  3. 部署与切换困难: 在实际服务中,如果需要频繁地在不同任务模型之间切换,加载数百 GB 的模型权重会导致严重的服务中断和延迟。

    为了解决这些问题,研究界提出了多种参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT) 方法。这些方法的目标是在微调时只更新模型的一小部分参数,而冻结大部分预训练参数。当时主流的 PEFT 方法主要有两类:

  • Adapter Tuning:Transformer 层的固定位置插入一些小的、额外的网络模块(称为 Adapter)。微调时只训练这些 Adapter 的参数。但它的主要缺点是这些额外的模块增加了模型的计算深度,从而引入了推理延迟

  • Prefix Tuning: 不改变模型结构,而是在输入序列前添加一些可训练的、连续的向量(称为 prefix)。这种方法虽然参数高效,但会占用输入序列的长度,并且优化过程不稳定,性能有时不如全量微调。

    因此,该领域存在一个明确的空白 (Gap)是否有一种方法,既能像 PEFT 方法一样极大地减少训练参数,又能像全量微调一样不引入任何额外的推理延迟,同时还能保持与全量微调相媲美的性能?

这篇论文的切入点正是为了填补这一空白。作者的创新思路来源于一个观察和假设:大型模型在适应新任务时,其权重的变化量 (update) 本身可能具有一个很低的“内在秩” (intrinsic rank)。这意味着,尽管权重矩阵本身是高维且满秩的,但从一个任务适配到另一个任务所需的“知识增量”是结构化的、低维的。基于这个假设,作者提出了 LoRA,用两个小的、低秩的矩阵来模拟这个权重的变化量。

2.2. 核心贡献/主要发现

这篇论文最核心的贡献是提出了 LoRA (Low-Rank Adaptation),一种全新的、高效的、高质量的大模型适配方法。其主要发现和贡献可以总结为以下几点:

  1. 提出了 LoRA 方法: 一种新颖的参数高效微调技术,它通过将权重更新矩阵 ΔWΔW 分解为两个低秩矩阵 BBAA (即 ΔW=BAΔW = BA) 来模拟微调过程。在训练中,只更新 BBAA,而巨大的预训练权重 WW 保持不变。

  2. 实现了极高的参数效率: LoRA 将可训练参数的数量降低了数千甚至上万倍。例如,在 GPT-3 175B 上,LoRA 仅用约 0.01% 的参数量就达到了与全量微调相当的性能,这极大地降低了训练和存储成本。

  3. 消除了推理延迟: 这是 LoRA 相比于 Adapter 等方法的关键优势。在部署时,学习到的低秩矩阵 BBAA 可以与其对应的原始权重矩阵 WW 线性相加(即 W=W+BAW' = W + BA),从而形成一个新的权重矩阵。整个模型的结构和计算量与原始模型完全相同,因此不引入任何额外的推理延迟。同时,任务切换也变得极为高效,只需进行简单的矩阵加减法即可。

  4. 实证验证了 LoRA 的高性能: 论文在包括 RoBERTa、DeBERTa、GPT-2 和 GPT-3 在内的多种模型和一系列 NLU(自然语言理解)与 NLG(自然语言生成)任务上进行了广泛实验。结果表明,LoRA 的性能与全量微调相当,甚至在某些任务上更优。

  5. 为模型适配提供了新的理论视角: 论文通过实验深入探究了模型适配过程中的权重更新矩阵 ΔWΔW 的特性,发现 ΔWΔW 确实是低秩的。一个极小的秩(如 r=1r=1r=2r=2)就足以捕获任务适配所需的大部分信息。这一发现为“为什么大型模型可以被高效适配”提供了深刻的解释。


3. 预备知识与相关工作

3.1. 基础概念

3.1.1. Transformer 架构

Transformer 是目前绝大多数大型语言模型(如 BERT、GPT 系列)的基础架构。它完全基于自注意力机制 (self-attention mechanism) 来处理序列数据。理解 LoRA 的工作位置,需要了解 Transformer 的基本组件:

  • 自注意力层 (Self-Attention Layer): 这是 Transformer 的核心。对于输入序列中的每个词元 (token),该层会计算其与序列中所有其他词元的关联度(即“注意力分数”),然后根据这些分数对所有词元的信息进行加权求和,从而得到该词元的新表示。这个过程涉及三个关键的权重矩阵:查询 (Query, Wq)键 (Key, Wk)值 (Value, Wv)。输入向量会分别与这三个矩阵相乘,得到 Q, K, V 向量,用于计算注意力。此外,多头注意力的输出还会经过一个输出投影矩阵 (Output Projection, Wo)

  • 前馈神经网络 (Feed-Forward Network, FFN): 在自注意力层之后,每个词元的表示会经过一个简单的全连接前馈网络,通常包含两个线性层和一次非线性激活。

    LoRA 主要作用于这些线性层中的权重矩阵,尤其是自注意力层中的 WqWkWvWo

3.1.2. 预训练-微调 (Pre-training & Fine-tuning) 范式

这是现代 NLP 的标准流程:

  1. 预训练 (Pre-training): 在一个巨大的、通用的文本语料库(如整个互联网的文本)上训练一个大型语言模型。这个阶段的目标是让模型学习通用的语言知识,如语法、常识、推理能力等。
  2. 微调 (Fine-tuning): 将预训练好的模型在一个规模较小、针对特定任务的数据集上继续训练。这个阶段的目标是让模型利用其通用知识来适应和解决这个特定任务。全量微调 (Full fine-tuning) 指的是在这个阶段更新模型的所有参数。

3.1.3. 矩阵的秩 (Rank of a Matrix)

在线性代数中,一个矩阵的秩 (rank) 是其列向量(或行向量)所张成的线性空间的最大维度。直观上,秩衡量了矩阵所包含的“信息”的维度。

  • 满秩 (Full-rank): 如果一个 d x k 矩阵的秩是 min(d, k),则称其为满秩。
  • 低秩 (Low-rank): 如果一个矩阵的秩 rr 远小于 min(d, k),则称其为低秩。一个关键性质是,任何秩为 rr 的矩阵 MM (尺寸为 d x k) 都可以被分解为两个更小的矩阵的乘积:M=BAM = B * A,其中 BB 的尺寸为 d x rAA 的尺寸为 r x k
    • 例如,一个 1000 x 1000 的矩阵,如果其秩为 2,那么它可以用一个 1000 x 2 的矩阵和一个 2 x 1000 的矩阵相乘得到。原始矩阵有 10001000=1,000,0001000*1000 = 1,000,000 个参数,而分解后的两个矩阵总共只有 10002+21000=4,0001000*2 + 2*1000 = 4,000 个参数。这正是 LoRA 实现参数效率的核心数学原理。

3.2. 前人工作

3.2.1. Adapter Tuning

Adapter Tuning (Houlsby et al., 2019) 是最早的参数高效微调方法之一。它在 Transformer 块的内部,通常是在自注意力层和前馈网络之后,串行地 (serially) 插入一些小的、瓶颈结构的网络模块,称为 Adapter

  • 结构: 一个 Adapter 模块通常由一个下采样全连接层、一个非线性激活函数(如 ReLU)和一个上采样全连接层组成。
  • 工作方式: 微调时,冻结所有原始的 Transformer 参数,只训练新插入的 Adapter 模块的参数。
  • 缺点: Adapter 增加了模型的计算深度。虽然每个 Adapter 的计算量不大,但在推理时,这些额外的计算是无法避免的,必须按顺序执行,因此会引入额外的推理延迟。对于延迟敏感的应用场景,这是一个显著的缺点。

3.2.2. Prefix-Tuning

Prefix-Tuning (Li & Liang, 2021) 探索了另一种不同的思路。它不改变模型内部的任何权重,而是为每个任务学习一个特定的、连续的任务前缀 (prefix)

  • 工作方式: 这个前缀是一系列可训练的向量,被添加到 Transformer 的每一层的键 (Key) 和值 (Value) 向量之前。模型在处理输入时,会像处理普通输入一样关注到这些可训练的前缀向量,从而引导模型的行为以适应特定任务。
  • 变体: Prompt Tuning (Lester et al., 2021) 是其简化版本,只在输入层添加可训练的 prompt 词元。
  • 缺点:
    1. 占用序列长度: 这些前缀或 prompt 会占用模型可处理的最大序列长度,从而减少了可以用于处理实际任务输入的空间。
    2. 优化困难: 实验表明,这类方法的训练过程有时不稳定,其性能对超参数(如前缀长度、学习率)非常敏感。

3.3. 技术演进

PEFT 技术的发展脉络可以看作是在不断地权衡性能、效率(参数、计算、存储)和灵活性

  1. 早期(全量微调): 性能最好,但效率最低。
  2. 第一波 PEFT (Adapter): 通过增加模块实现了参数效率,但牺牲了推理速度。
  3. 第二波 PEFT (Prefix/Prompt Tuning): 通过修改输入实现了参数效率,避免了推理延迟,但牺牲了一部分序列长度,且优化不稳定。
  4. LoRA 的出现: 通过重参数化权重更新 (re-parameterizing weight updates),LoRA 巧妙地实现了参数效率无推理延迟的统一,同时保持了与全量微调相当的高性能,代表了 PEFT 技术的一个重要演进方向。

3.4. 差异化分析

LoRA 与之前工作最核心的区别在于其作用方式和部署形态

  • 与 Adapter 的区别:
    • 作用方式: Adapter串行添加模块,增加了计算路径的深度。LoRA 是并行添加一个分支,其输出与主干分支相加。
    • 推理延迟: Adapter 额外的推理延迟。LoRA 没有额外的推理延迟,因为学习到的低秩矩阵可以被合并回原始权重中。
  • 与 Prefix-Tuning 的区别:
    • 作用对象: Prefix-Tuning 作用于模型的激活值 (activations),通过修改输入来影响模型行为。LoRA 直接作用于模型的权重 (weights),学习对权重进行增量修改。

    • 序列长度: Prefix-Tuning 减少可用序列长度。LoRA 不会影响序列长度。

      LoRA 的设计哲学是:不改变模型的基础架构,而是学习对现有权重的低秩增量更新。这一简洁而强大的思想使其在效率和效果之间取得了前所未有的平衡。


4. 方法论

本章节将详细拆解 LoRA 的技术方案。LoRA 的核心思想是,在模型适配过程中,权重的变化量 ΔWΔW 是一个低秩矩阵,因此可以用两个更小的矩阵 BBAA 的乘积来近似它。

4.1. 方法原理

在一个神经网络中,许多层都执行矩阵乘法。例如,一个全连接层的正向传播可以表示为 h=Wxh = Wx,其中 WW 是权重矩阵,xx 是输入。在对一个大型预训练模型进行全量微调时,我们实际上是在学习一个更新矩阵 ΔWΔW,使得新的权重 W=W0+ΔWW' = W_0 + \Delta W 在新任务上表现更好,其中 W0W_0 是预训练的权重。

LoRA 的核心直觉是,这个巨大的 ΔWΔW 矩阵(例如,在 GPT-3 中可能是 12288 x 12288)虽然维度很高,但其“内在秩”(intrinsic rank) 可能非常小。这意味着 ΔWΔW 中大部分信息可以用一个远低于其维度的子空间来表示。

基于这个假设,LoRA 提出不直接学习 ΔWΔW,而是学习它的一个低秩分解。一个秩为 rr 的矩阵 ΔWΔW 可以被分解为 BA,其中 BB 是一个 d×rd \times r 的矩阵,AA 是一个 r×kr \times k 的矩阵(对于一个 d×kd \times k 的权重矩阵 WW)。当秩 rr 远小于 ddkk 时,学习 BBAA 的参数量会远小于学习 ΔWΔW

4.2. 核心方法详解 (逐层深入)

4.2.1. LoRA 的重参数化 (Reparameterization)

LoRA 的实现非常简洁,它通过修改模型的正向传播路径来引入可训练的低秩矩阵。

步骤 1: 原始正向传播 一个标准的预训练模型中的某个线性层(如 nn.Linear),其正向传播计算如下: h=W0xh = W_0 x 其中,W0Rd×kW_0 \in \mathbb{R}^{d \times k} 是冻结的预训练权重矩阵,xRkx \in \mathbb{R}^{k} 是输入,hRdh \in \mathbb{R}^{d} 是输出。

步骤 2: 引入低秩分解 在微调过程中,该层的权重更新被限制为一个低秩矩阵 ΔWΔW。因此,更新后的正向传播变为: h=(W0+ΔW)xh = (W_0 + \Delta W) x LoRA 的关键步骤就是用低秩分解 BA 来替代 ΔWΔW,其中 BRd×rB \in \mathbb{R}^{d \times r}ARr×kA \in \mathbb{R}^{r \times k},且秩 rmin(d,k)r \ll \min(d, k)。 将 BA 代入上式,我们可以得到 LoRA 修改后的正向传播公式: h=W0x+ΔWx=W0x+BAx h = W_0 x + \Delta W x = W_0 x + B A x 这个过程的图示如下(原文 Figure 1):

Figure 1: Our reparametrization. We only train \(A\) and \(B\) .

公式与符号解释:

  • W0W_0: 原始的、被冻结的预训练权重矩阵。在整个训练过程中,它的值保持不变,不参与梯度更新。

  • xx: 该层的输入向量。

  • AA: 可训练的低秩矩阵。论文中将其称为 down-projection matrix,因为它将输入维度从 kk 降到 rr

  • BB: 可训练的低秩矩阵。论文中将其称为 up-projection matrix,因为它将维度从 rr 升回到 dd

  • rr: LoRA 的秩 (rank),这是一个非常重要的超参数,直接控制了 LoRA 模块的参数量大小和表达能力。

    在训练期间,只有矩阵 AABB 接收梯度更新并被优化器更新,而庞大的 W0W_0 保持不变。这极大地减少了需要存储的梯度和优化器状态(如 Adam 的一阶和二阶矩),从而将 GPU 显存需求降低了高达 2/3。

4.2.2. 初始化与缩放

为了保证训练的稳定性,LoRA 的初始化和缩放策略非常重要。

  • 初始化 (Initialization):

    • 矩阵 AA 采用随机高斯分布 (random Gaussian) 进行初始化。
    • 矩阵 BB 初始化为全零 (zero)
    • 这样的初始化策略使得在训练开始时,ΔW=BAΔW = BA 也为零矩阵。这意味着,在训练的第一步,LoRA 模型与原始的预训练模型完全等价,保证了适配过程是从一个稳定、良好的起点开始的。
  • 缩放 (Scaling):

    • 论文中提到,BAx 的输出会通过一个缩放因子 αr\frac{\alpha}{r} 进行调整。这里的 αα 是一个常数超参数,rr 是 LoRA 的秩。
    • 因此,最终的计算公式更准确地说是:h=W0x+αrBAxh = W_0 x + \frac{\alpha}{r} B A x
    • 这个缩放操作的目的是为了在调整秩 rr 时,不需要重新调整其他超参数(如学习率)。当 rr 变化时,梯度的量级会相应变化,通过除以 rr 可以将其归一化,从而使得 αα 的调整与学习率的调整大致等价。在实践中,作者通常将 αα 固定为某个值(例如,等于第一个尝试的 rr 值),然后只调整学习率。

4.2.3. 部署时的融合 (Merging During Inference)

LoRA 的一个核心优势是它在推理时不引入任何额外的延迟。这是通过将学习到的 AABB 矩阵合并回原始权重 W0W_0 实现的。

在训练完成后,AABB 都是固定的矩阵。我们可以直接计算出最终的权重更新矩阵 ΔW=BAΔW = BA。然后,将这个 ΔWΔW 加到原始权重上,得到一个新的、完整的权重矩阵: W=W0+BAW' = W_0 + B A 在部署时,我们直接使用这个合并后的权重矩阵 WW'。模型的架构和大小与原始模型完全一样,因此其计算过程和推理速度也完全相同。

当需要切换到另一个任务时,这个过程也非常高效:

  1. 从当前权重中减去当前任务的 BAW0=WBAW_0 = W' - BA

  2. 加上新任务的 B'A'W=W0+BAW'' = W_0 + B'A'

    这个操作只涉及一次矩阵减法和一次矩阵加法,非常快速且内存开销极小。

4.2.4. 在 Transformer 中的应用

论文中,作者主要将 LoRA 应用于 Transformer 模型中的自注意力模块的权重矩阵,即 Wq(查询)、Wk(键)、Wv(值)和 Wo(输出)。他们发现,仅适配这些注意力权重就足以获得非常好的性能,而冻结更庞大的 FFN 模块可以进一步提高参数效率。在大部分实验中,作者甚至发现仅适配 WqWv 就能达到最佳效果。


5. 实验设置

5.1. 数据集

论文在多个模型和多种任务上进行了广泛的实验,以验证 LoRA 的通用性和有效性。

  • GLUE Benchmark: 一个用于评估自然语言理解 (NLU) 模型的综合性基准测试,包含多种任务。

    • MNLI (Multi-Genre Natural Language Inference): 判断一对句子的逻辑关系(蕴含、矛盾、中立)。
    • SST-2 (Stanford Sentiment Treebank): 电影评论的情感分类(正面/负面)。
    • MRPC (Microsoft Research Paraphrase Corpus): 判断两个句子是否是释义关系(语义相同)。
    • CoLA (Corpus of Linguistic Acceptability): 判断一个句子在语法上是否可接受。
    • QNLI (Question NLI): 判断一个问题和一个句子是否构成一个正确的问答对。
    • QQP (Quora Question Pairs): 判断两个问题是否是重复问题。
    • RTE (Recognizing Textual Entailment): 文本蕴含判断。
    • STS-B (Semantic Textual Similarity Benchmark): 预测两个句子的语义相似度得分(1-5分)。
    • 选择 GLUE 是因为它覆盖了多种核心 NLU 能力,是评估 RoBERTa 和 DeBERTa 这类编码器模型的标准。
  • E2E NLG Challenge: 一个数据到文本生成 (Data-to-Text) 任务,要求根据餐厅的一系列属性(如名称、价格、食物类型)生成一段流畅的描述性文本。

    • 样本示例:
      • 输入 (属性-值对): name[The Wrestlers], eatType[pub], priceRange[cheap]
      • 输出 (自然语言描述): "The Wrestlers is a cheap pub."
    • 选择此数据集是为了评估 LoRA 在自然语言生成 (NLG) 任务上的表现。
  • WebNLG & DART: 另外两个更复杂的数据到文本生成任务,用于进一步验证 NLG 性能。

  • WikiSQL: 一个自然语言到 SQL (NL2SQL) 的任务,要求将用户的自然语言问题转换成可以在数据库上执行的 SQL 查询语句。这是一个结构化查询生成任务。

  • SAMSum: 一个对话摘要数据集,包含日常聊天对话和其对应的人工撰写的摘要。这是一个抽象式摘要 (abstractive summarization) 任务。

5.2. 评估指标

论文中使用了多种评估指标,针对不同任务的特性进行衡量。

5.2.1. NLU 指标 (GLUE)

  • 准确率 (Accuracy):

    • 概念定义: 模型正确预测的样本数占总样本数的比例。这是分类任务最常用的指标。
    • 数学公式: Accuracy=Number of Correct PredictionsTotal Number of Predictions \text{Accuracy} = \frac{\text{Number of Correct Predictions}}{\text{Total Number of Predictions}}
    • 符号解释: 无。
  • 马修斯相关系数 (Matthew's Correlation Coefficient, MCC):

    • 概念定义: 用于衡量二元分类器性能的指标,特别适用于数据集类别不平衡的情况。它的取值范围在 -1 到 +1 之间,+1 表示完美预测,0 表示随机预测,-1 表示完全错误的预测。它综合考虑了真阳性 (TP)、真阴性 (TN)、假阳性 (FP) 和假阴性 (FN)。
    • 数学公式: MCC=TP×TNFP×FN(TP+FP)(TP+FN)(TN+FP)(TN+FN) \text{MCC} = \frac{TP \times TN - FP \times FN}{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}}
    • 符号解释:
      • TP: 真阳性 (True Positive)
      • TN: 真阴性 (True Negative)
      • FP: 假阳性 (False Positive)
      • FN: 假阴性 (False Negative)
  • 皮尔逊相关系数 (Pearson Correlation Coefficient):

    • 概念定义: 用于衡量两个连续变量之间线性关系强度的指标,取值范围在 -1 到 +1 之间。在 STS-B 任务中,它用于衡量模型预测的相似度得分与人类标注的真实得分之间的相关性。
    • 数学公式: ρX,Y=cov(X,Y)σXσY=i=1n(XiXˉ)(YiYˉ)i=1n(XiXˉ)2i=1n(YiYˉ)2 \rho_{X, Y} = \frac{\text{cov}(X, Y)}{\sigma_X \sigma_Y} = \frac{\sum_{i=1}^n (X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum_{i=1}^n (X_i - \bar{X})^2} \sqrt{\sum_{i=1}^n (Y_i - \bar{Y})^2}}
    • 符号解释:
      • X, Y: 分别代表模型预测得分和真实得分两个变量。
      • cov(X,Y)\text{cov}(X, Y): XXYY 的协方差。
      • σX,σY\sigma_X, \sigma_Y: XXYY 的标准差。
      • Xi,YiX_i, Y_i: 第 ii 个样本的预测值和真实值。
      • Xˉ,Yˉ\bar{X}, \bar{Y}: 预测值和真实值的平均值。

5.2.2. NLG 指标

  • BLEU (Bilingual Evaluation Understudy):

    • 概念定义: 最常用的机器翻译和文本生成评估指标之一。它通过计算模型生成的文本与参考文本之间 n-gram(通常是 1 到 4-gram)的重合度来衡量文本的质量。BLEU 得分越高,说明生成的文本与参考文本越接近。
    • 核心思想: 精度(Precision)导向,即生成的词组有多少出现在了参考文本中。
  • ROUGE (Recall-Oriented Understudy for Gisting Evaluation):

    • 概念定义: 主要用于自动摘要任务的评估。与 BLEU 相反,它更关注召回率 (Recall),即参考摘要中的词组有多少被生成摘要所覆盖。常见的有 ROUGE-1ROUGE-2(基于 unigram 和 bigram)和 ROUGE-L(基于最长公共子序列)。
  • METEOR, NIST, CIDEr:

    • 这些都是对 BLEU 的改进或补充。METEOR 考虑了同义词和词干匹配,更注重语义。NIST 在 n-gram 匹配的基础上增加了对信息量(罕见词)的权重。CIDEr 专门为图像描述生成设计,通过 TF-IDF 对 n-gram 进行加权,衡量生成描述的一致性和信息量。

5.3. 对比基线

论文将 LoRA 与多种主流的适配方法进行了比较:

  • Fine-Tuning (FT): 全量微调,即更新模型的所有参数。这是性能的黄金标准,但也是资源消耗最大的基线。

  • BitFit (Bias-only): 一种极简的 PEFT 方法,只微调模型中所有层的偏置项 (bias terms),而冻结所有权重矩阵。

  • Adapter Tuning (AdapterH, AdapterL, etc.): 几种不同变体的 Adapter 方法。AdapterH 指的是 Houlsby et al. (2019) 的原始设计,在 Transformer 块中插入两个 Adapter 层。AdapterL 是 Lin et al. (2020) 提出的更高效的设计。

  • Prefix-Embedding Tuning (PreEmbed): 即 Prompt Tuning,只在输入层添加可训练的 prompt 词元。

  • Prefix-Layer Tuning (PreLayer): 即 Prefix-Tuning,在 Transformer 的每一层都添加可训练的前缀。

    选择这些基线非常有代表性,覆盖了从全量微调到各种主流 PEFT 方法,可以全面地评估 LoRA 在性能和效率上的相对优势。


6. 实验结果与分析

6.1. 核心结果分析

论文通过一系列详尽的实验,展示了 LoRA 在不同模型和任务上的强大性能。

6.1.1. 在 RoBERTa 和 DeBERTa 上的表现

以下是原文 Table 2 的结果,展示了在 GLUE 基准测试上的性能对比。由于该表格包含跨列的复杂表头,这里使用 HTML <divclass="tablewrapper"><table><div class="table-wrapper"><table> 来精确还原。

Model & Method # Trainable Parameters MNLI SST-2 MRPC CoLA QNLI QQP RTE STS-B Avg.
RoBbase (FT)* 125.0M 87.6 94.8 90.2 63.6 92.8 91.8 78.7 91.2 86.4
RoBbase (BitFit)* 0.1M 84.7 93.7 84.0 62.0 91.5 90.8 81.5 90.8 85.2
RoBbase (AdptD)* 0.3M 87.1±.0 94.2±.1 88.5±1.1 60.8±.4 93.1±.1 90.2±.0 71.5±2.7 89.7±.3 84.4
RoBbase (AdptP)* 0.9M 87.3±.1 94.7±.3 88.4±.1 62.6±.9 93.0±.2 90.6±.0 75.9±2.2 90.3±.1 85.4
RoBbase (LoRA) 0.3M 87.5±.3 95.1±.2 89.7±.7 63.4±1.2 93.3±.3 90.8±.1 86.6±.7 91.5±.2 87.2
RoBlarge (FT)* 355.0M 90.2 96.4 90.9 68.0 94.7 92.2 86.6 92.4 88.9
RoBlarge (LoRA) 0.8M 90.6±.2 96.2±.5 90.9±1.2 68.2±1.9 94.9±.3 91.6±.1 87.4±2.5 92.6±.2 89.0
... (其他 Adapter 基线) ...
DeBxxL (FT)* 1500.0M 91.8 97.2 92.0 72.0 96.0 92.7 93.9 92.9 91.1
DeBxxL (LoRA) 4.7M 91.9±.2 96.9±.2 92.6±.6 72.4±1.1 96.0±.1 92.9±.1 94.9±.4 93.0±.2 91.3

分析:

  • 性能优越: 无论是 RoBERTa-base、RoBERTa-large 还是 DeBERTa-XXL,LoRA 的平均分都超过了全量微调 (FT)。例如,在 DeBERTa-XXL 上,LoRA (91.3) 超过了 FT (91.1),但其可训练参数量仅为 4.7M,相比 FT 的 1500M,减少了超过 300 倍。
  • 参数高效: 与其他 PEFT 方法(如 Adapter)相比,在参数量相近或更少的情况下,LoRA 表现出显著的优势。例如,在 RoBERTa-base 上,LoRA (0.3M 参数) 的平均分 (87.2) 远高于 AdptD (0.3M 参数) 的 84.4 和 AdptP (0.9M 参数) 的 85.4。
  • 可扩展性: LoRA 的优势随着模型规模的增大而保持。即使在 1.5B 参数的 DeBERTa-XXL 模型上,LoRA 依然能够以极小的参数代价匹配甚至超越全量微调,证明了其强大的可扩展性。

6.1.2. 在 GPT-2 上的 NLG 表现

以下是原文 Table 3 的结果,展示了在 E2E NLG Challenge 任务上的性能。

Model & Method # Trainable Parameters E2E NLG Challenge
BLEU NIST MET ROUGE-L CIDEr
GPT-2 M (FT)* 354.92M 68.2 8.62 46.2 71.0 2.47
GPT-2 M (AdapterL)* 0.37M 66.3 8.41 45.0 69.8 2.40
GPT-2 M (PreLayer)* 0.35M 69.7 8.81 46.1 71.4 2.49
GPT-2 M (LoRA) 0.35M 70.4±.1 8.85±.02 46.8±.2 71.8±.1 2.53±.02
GPT-2 L (FT)* 774.03M 68.5 8.78 46.0 69.9 2.45
GPT-2 L (PreLayer)* 0.77M 70.3 8.85 46.2 71.7 2.47
GPT-2 L (LoRA) 0.77M 70.4±.1 8.89±.02 46.8±.2 72.0±.2 2.47±.02

分析:

  • 在 NLG 任务上同样出色: 结果表明,LoRA 不仅在 NLU 任务上表现优异,在 NLG 任务上也同样强大。
  • 超越全量微调和 Prefix-Tuning: 在 GPT-2 Medium 和 Large 模型上,LoRA 在所有评估指标上都一致地超越了全量微调。与参数量相近的 PreLayer (Prefix-Tuning) 相比,LoRA 也取得了更好的结果。这证明了 LoRA 作为一种通用适配方法的有效性。

6.1.3. 在 GPT-3 175B 上的终极测试

以下是原文 Table 4 的结果,这是对 LoRA 方法在超大规模模型上有效性的最有力证明。

Model&Method # Trainable Parameters WikiSQL MNLI-m SAMSum
Acc. (%) Acc. (%) R1/R2/RL
GPT-3 (FT) 175,255.8M 73.8 89.5 52.0/28.0/44.5
GPT-3 (BitFit) 14.2M 71.3 91.0 51.3/27.4/43.5
GPT-3 (PreEmbed) 3.2M 63.1 88.6 48.3/24.2/40.5
GPT-3 (PreLayer) 20.2M 70.1 89.5 50.8/27.3/43.5
GPT-3 (AdapterH) 40.1M 73.2 91.5 53.2/29.0/45.1
GPT-3 (LoRA) 4.7M 73.4 91.7 53.8/29.8/45.9
GPT-3 (LoRA) 37.7M 74.0 91.6 53.4/29.2/45.1

分析:

  • 惊人的效率与性能: 在 1750 亿参数的 GPT-3 上,LoRA 仅用 37.7M 的可训练参数(约占总参数的 0.02%)就在 WikiSQL 和 SAMSum 任务上超越了全量微调。在 MNLI 任务上,仅用 4.7M 参数就取得了 91.7% 的惊人准确率,远超全量微тов的 89.5%。

  • 对比其他 PEFT 方法: LoRA 的性能全面优于 Prefix-Tuning 的变体,并且在参数效率上远超 AdapterH

  • 扩展性验证: 下图(原文 Figure 2)直观地展示了不同方法在 GPT-3 上的性能与参数量的关系。LoRA 的性能随着参数增加而稳定提升,而 Prefix-Tuning 方法在参数超过某个点后性能反而下降,显示出 LoRA 更好的可扩展性和稳定性。

    Figure 2: GPT-3 175B validation accuracy vs. number of trainable parameters of several adaptation methods on WikiSQL and MNLI-matched. LoRA exhibits better scalability and task performance. See Section F.2 for more details on the plotted data points. 该图像是一个图表,展示了在WikiSQL和MultiNLImatched上,几种适配方法的验证准确率与可训练参数数量的关系。LoRA在参数效率和任务性能方面优于其他方法。

6.2. 消融实验/参数分析

论文的第 7 节进行了深入的分析,以理解 LoRA 为何有效。

6.2.1. 应该对哪些权重矩阵应用 LoRA?

实验比较了在固定的参数预算下(18M),对自注意力模块中不同权重矩阵 (Wq, Wk, Wv, Wo) 应用 LoRA 的效果。

以下是原文 Table 5 的结果:

Weight Type, Rank r Wq, 8 Wk, 8 Wv, 8 Wo, 8 Wq, Wk, 4 Wq, Wv, 4 Wq, Wk, Wv, Wo, 2
WikiSQL (±0.5%) 70.4 70.0 73.0 73.2 71.4 73.7 73.7
MultiNLI (±0.1%) 91.0 90.8 91.0 91.3 91.3 91.3 91.7

分析:

  • 结论: 结果表明,同时适配 WqWv 的效果最好。将有限的参数预算分配给更多的矩阵类型(即使每个矩阵的秩 rr 更小),通常比将所有预算集中在单一矩阵类型上(即使 rr 更大)效果更好。这说明适配需要更广而不是更“深”的低秩更新。

6.2.2. LoRA 的最佳秩 rr 是多少?

实验探究了不同秩 rr 对性能的影响。

以下是原文 Table 6 的部分结果:

Weight Type r = 1 r = 2 r = 4 r = 8 r = 64
WikiSQL (±0.5%) Wq, Wv 73.4 73.3 73.7 73.8 73.5
MultiNLI (±0.1%) Wq, Wk, Wv, Wo 91.2 91.7 91.7 91.5 91.4

分析:

  • 极低的秩就足够: 令人惊讶的是,一个非常小的秩,如 r=1r=1, r=2r=2, 或 r=4r=4 就足以在这些任务上取得极具竞争力的性能。这强有力地证明了论文的核心假设:模型适配的权重更新矩阵 ΔWΔW 确实是极度低秩的。
  • 性能饱和:rr 增加到一定程度后,性能趋于饱和甚至略有下降。这表明更大的 rr 可能会引入不必要的参数,导致过拟合或训练噪音。

6.2.3. 低秩子空间分析

为了进一步验证低秩假设,作者分析了不同设置下学到的 ΔWΔW 的子空间相似性。

下图(原文 Figure 3)比较了使用 r=8r=8r=64r=64 训练得到的 ΔWΔW 的子空间。

Figure 3: Subspace similarity between column vectors of \(A _ { r = 8 }\) and \(A _ { r = 6 4 }\) for both \(\\Delta W _ { q }\) and \(\\Delta W _ { v }\) . u uT directions in \(r = 8\) are included in \(r = 6 4\) , and vice versa.

分析:

  • 核心方向的重合: 图中显示,r=8r=8r=64r=64 学到的最重要的方向(对应最大奇异值的方向)高度重合(相似度 > 0.5)。然而,其他方向的重合度很低。

  • 解释: 这说明 ΔWΔW 中真正有用的信息被集中在了一个维度极低的子空间里(可能只有 1 维)。增加秩 rr 只是在学习更多可能包含噪音的次要方向。这解释了为什么 r=1r=1 就能表现得那么好。


7. 总结与思考

7.1. 结论总结

这篇论文成功地提出并验证了 LoRA,一种简单、高效且高质量的大型语言模型适配方法。其主要结论和贡献如下:

  1. 解决了 PEFT 的核心矛盾: LoRA 首次在参数高效微调领域实现了高性能极低参数量无推理延迟三者的统一,解决了 Adapter 方法的延迟问题和 Prefix-Tuning 方法的稳定性与序列长度问题。
  2. 验证了低秩假设: 论文通过大量实验证明,大型模型在进行任务适配时,其权重的更新矩阵 ΔWΔW 具有非常低的“内在秩”。这一发现不仅解释了 LoRA 的成功,也为理解大模型的适配机制提供了深刻的洞见。
  3. 极大地降低了微调门槛: LoRA 将微调大型模型的硬件和存储成本降低了几个数量级,使得个人研究者和中小型企业也能够负担得起对超大模型的定制化微调,极大地推动了 LLM 技术的普及和应用。

7.2. 局限性与未来工作

论文作者也指出了该研究的一些局限性和未来值得探索的方向:

  1. 与其他 PEFT 方法的结合: LoRA 的设计是正交的,可以与其他方法(如 Prefix-TuningAdapter)结合,可能会带来互补的性能提升。
  2. 适配机制的深入理解: 尽管 LoRA 证明了低秩更新的有效性,但其背后的根本机理——预训练学到的特征是如何通过低秩变换来适应下游任务的——仍不完全清楚,有待进一步研究。
  3. 矩阵选择的原则性方法: 目前选择哪些权重矩阵应用 LoRA 主要是基于经验和启发式搜索。未来可以研究更具原则性的方法来自动确定最优的适配矩阵子集。
  4. 预训练权重的秩亏损: ΔWΔW 的低秩特性可能暗示了预训练权重 WW 本身也可能存在某种形式的秩亏损或结构冗余,这可能为模型压缩和加速提供新的思路。

7.3. 个人启发与批判

LoRA 无疑是近年来深度学习领域,特别是大模型方向最具影响力的工作之一。它的成功给我带来了以下几点启发:

  • 简单即是美 (Simplicity is the Ultimate Sophistication): LoRA 的核心思想——用低秩分解来模拟权重更新——非常简单,数学上也很优雅。然而,正是这种简单的思想,精准地抓住了问题的本质,并带来了巨大的工程和应用价值。它提醒我们,突破性的创新不一定需要极其复杂的结构,对问题本质的深刻洞察更为重要。

  • 从“加法”到“变化”的思维转变: 在 LoRA 之前,很多 PEFT 方法的思路是“在原有模型上增加点什么”(如加 Adapter 层,加 prefix),而 LoRA 的思路是“如何更高效地描述模型的变化”。这种对“增量”或“变化”本身进行建模的思路,在很多领域都具有借鉴意义。

  • 理论假设与工程实践的完美结合: LoRA 的提出并非空穴来风,而是基于“过参数化模型的内在维度很低”这一理论观察。作者将这一理论洞察巧妙地应用到模型微调这一具体的工程问题上,并取得了巨大的成功,是理论指导实践的典范。

潜在问题与可以改进的地方:

  • 超参数的敏感性: 尽管 LoRA 表现出色,但其性能仍然依赖于几个关键超参数的选择,尤其是秩 rr、缩放因子 αα 以及应用 LoRA 的层。如何自适应地或更高效地确定这些超参数是一个值得研究的问题。

  • 秩的静态性: 在整个训练过程中,LoRA 的秩 rr 是固定的。是否存在一种动态调整秩的机制,让模型在训练初期使用更大的秩来探索,在后期减小秩来进行精调和正则化?

  • 更复杂的结构化稀疏性: 低秩是权重更新矩阵的一种结构化稀疏性假设。未来是否可以探索其他类型的结构,如更复杂的张量分解,来实现更高的参数效率或更好的性能,例如后来的 COMPACTER 等工作就是沿着这个方向的探索。

    总而言之,LoRA 是一篇里程碑式的工作,它不仅提供了一个极其有用的工具,也为我们思考和理解大型模型的本质提供了新的视角。它的出现,真正开启了“人人都能微调大模型”的时代。

相似论文推荐

基于向量语义检索推荐的相关论文。

暂时没有找到相似论文。