LoRA,全称 Low-Rank Adaptation,是一种用于微调大型预训练模型的技术。它的核心思想是通过低秩分解减少微调时的参数量,而不牺牲模型的性能。

论文原文:LoRA: Low-Rank Adaptation of Large Language Models

为什么需要 LoRA?

大型预训练模型的出现,为我们带来了强大的自然语言处理和计算机视觉能力,这是一个推动时代的成功。但大模型的“大”,不仅体现在其参数量上,更体现在我们无法轻松进行微调 :),全量微调一个预训练大模型的代价非常高,而且一般的设备根本训练不动。而 LoRA 提供了一种高效的微调方法,使得在小型设备上微调大模型成为可能。

根据论文中的描述:

相比于对 GPT-3 175B 模型使用全量参数的微调,LoRA 减少了训练参数量的 10,000 倍,GPU 显存需求的 3 倍。

LoRA 的可训练参数更少,但在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上的模型质量与全量微调相当甚至更好,而且不会增加推理延迟。

LoRA 的核心思想

「We take inspiration from Li et al. (2018a)1; Aghajanyan et al. (2020)2 which show that the learned over-parametrized models in fact reside on a low intrinsic dimension. 」

LoRA 的核心在于利用低秩分解来近似模型权重的更新,这一思想源自之前的研究12。这些研究表明:过参数化(over-parametrized)模型的学习特征位于一个低维的内在子空间中

低秩分解

「We hypothesize that the change in weights during model adaptation also has a low “intrinsic rank”, leading to our proposed Low-Rank Adaptation (LoRA) approach. 」

在 LoRA 中,作者提出了一个重要的假设:在模型适配(adaptation)或者说微调的过程中,权重的变化(即 ∆W)同样是“低秩”的。基于这个假设,权重矩阵 W 的更新 ΔW 可以近似表示为两个小矩阵 B 和 A 的乘积:

$$ \Delta W = BA $$

其中:

通过训练这两个小矩阵,我们可以近似地更新原始权重矩阵W,而无需训练整个大的W。

应用到神经网络中的线性层

在线性层中,前向传播的计算为:

$$ y = Wx + b $$

其中: