在学习大模型、Transformer 和参数高效微调时,经常会遇到三个概念:

  • 矩阵是什么?
  • 矩阵的秩(Rank)是什么意思?
  • LoRA 和 DoRA 为什么都与低秩矩阵有关?

这些概念并不只是数学知识,它们直接决定了模型如何表示信息、如何进行参数更新,以及为什么 LoRA 能够减少微调成本。


一、矩阵:模型中的“信息变换器”

在机器学习中,矩阵可以理解为一个信息变换器。

一个线性层通常表示为:

y=Wx+b y=Wx+b y=Wx+b

其中:

  • (x):输入向量;
  • (W):参数矩阵;
  • (b):偏置;
  • (y):输出向量。

输入向量 x

参数矩阵 W

线性变换 Wx+b

输出向量 y

例如:

W=[2001] W= \begin{bmatrix} 2&0\\ 0&1 \end{bmatrix} W=[2001]

它会将:

x=[x1x2] x= \begin{bmatrix} x_1\\ x_2 \end{bmatrix} x=[x1x2]

变换为:

Wx=[2x1x2] Wx= \begin{bmatrix} 2x_1\\ x_2 \end{bmatrix} Wx=[2x1x2]

这表示:

  • 第一个特征被放大 2 倍;
  • 第二个特征保持不变。

因此,矩阵可以完成:

  • 特征放大;
  • 特征缩小;
  • 不同特征混合;
  • 空间旋转;
  • 维度压缩;
  • 信息投影。

二、大模型为什么大量使用矩阵?

Transformer 中最核心的计算,基本都离不开矩阵。

以 Attention 为例:

Q=XWQ Q=XW_Q Q=XWQ

K=XWK K=XW_K K=XWK

V=XWV V=XW_V V=XWV

其中:

  • (X):输入 token 的向量表示;
  • (W_Q):Query 参数矩阵;
  • (W_K):Key 参数矩阵;
  • (W_V):Value 参数矩阵。

Token 表示 X

WQ

WK

WV

Query Q

Key K

Value V

Attention

Feed-Forward Network 同样是矩阵变换:

H=σ(XW1+b1) H=\sigma(XW_1+b_1) H=σ(XW1+b1)

Y=HW2+b2 Y=HW_2+b_2 Y=HW2+b2

因此,Transformer 可以简单理解为:

Token 向量
    ↓
矩阵变换
    ↓
Attention / FFN
    ↓
新的 Token 表示

模型训练的本质,就是不断调整这些矩阵中的参数。


三、矩阵的 Rank 是什么?

矩阵的 Rank,也叫矩阵的秩,可以理解为:

矩阵中真正独立的信息方向或变化模式的数量。

例如:

A=[1224] A= \begin{bmatrix} 1&2\\ 2&4 \end{bmatrix} A=[1224]

第二行是第一行的 2 倍:

[2,4]=2[1,2] [2,4]=2[1,2] [2,4]=2[1,2]

因此,第二行没有提供新的独立方向:

rank(A)=1 rank(A)=1 rank(A)=1

虽然矩阵中有 4 个数字,但真正独立的信息只有一个方向。

再看:

B=[1001] B= \begin{bmatrix} 1&0\\ 0&1 \end{bmatrix} B=[1001]

它的两行和两列都相互独立:

rank(B)=2 rank(B)=2 rank(B)=2


四、Rank 的几何含义

矩阵也可以看成一种空间变换。

二维平面

矩阵 Rank

Rank=2:仍是二维区域

Rank=1:压缩成一条线

Rank=0:压缩成一个点

因此:

  • Rank=2:保留两个独立方向;
  • Rank=1:只保留一个有效方向;
  • Rank=0:没有有效变化。

所以 Rank 也可以理解为:

矩阵变换之后,信息保留下来的有效维度。


五、矩阵大小和 Rank 不是一回事

一个 (n\times n) 的矩阵拥有:

n2 n^2 n2

个参数,但它的 Rank 最大只有:

n n n

例如:

项目 含义
矩阵大小 (10000\times10000)
参数数量 1 亿
最大 Rank 10000
Rank 的含义 独立信息方向数量

因此:

参数很多,不代表信息方向同样多。

对于任意 (n\times n) 矩阵:

0≤rank(W)≤n 0\leq rank(W)\leq n 0rank(W)n

所以一个 (n\times n) 的矩阵完全可能满足:

rank(W)<n rank(W)<n rank(W)<n


六、Rank=1 的矩阵能表达什么?

Rank=1 的矩阵可以写成两个向量的外积:

A=uvT A=uv^T A=uvT

例如:

u=[12],v=[34] u= \begin{bmatrix} 1\\ 2 \end{bmatrix}, \quad v= \begin{bmatrix} 3&4 \end{bmatrix} u=[12],v=[34]

那么:

A=uvT=[3468] A=uv^T= \begin{bmatrix} 3&4\\ 6&8 \end{bmatrix} A=uvT=[3648]

矩阵中的 4 个位置都发生了变化,但第二行是第一行的 2 倍。

这说明:

Rank=1 并不是只能修改一个参数,而是所有变化必须共享同一种模式。

基础方向 1

组合后的 Rank=1 矩阵

基础方向 2

多个参数同步变化

但变化之间存在固定关联


七、为什么 Rank=1 不能表达所有变化?

假设我们想要:

ΔW=[100−1] \Delta W= \begin{bmatrix} 1&0\\ 0&-1 \end{bmatrix} ΔW=[1001]

这个变化表示:

  • 左上角增加 1;
  • 右下角减少 1;
  • 其他位置不变。

这是两个相互独立的变化方向,因此:

rank(ΔW)=2 rank(\Delta W)=2 rank(ΔW)=2

如果使用 Rank=1 的矩阵,就无法精确表达它,只能得到一个近似结果。

所以:

  • Rank=1:只能表达一个主要变化模式;
  • Rank=2:可以表达两个独立变化模式;
  • Rank=8:可以组合八个基础变化方向。

注意:

Rank=8 不是只能修改 8 个参数,而是所有参数变化都由 8 个基础方向组合而来。


八、矩阵分解可以是精确的,也可以是近似的

矩阵分解不一定只能近似。

如果目标矩阵的 Rank 不超过分解使用的 Rank,就可以精确表示:

ΔW=BA \Delta W=BA ΔW=BA

如果目标矩阵的 Rank 大于分解使用的 Rank,则只能近似:

ΔW≈BA \Delta W\approx BA ΔWBA

例如,目标矩阵的 Rank 是 2:

分解 Rank 结果
(r=1) 只能近似
(r=2) 可以精确表示
(r>2) 也可以精确表示,但可能存在冗余

因此,低秩分解的核心是:

用较少的独立方向,表示一个可能更复杂的矩阵。


九、LoRA:用低秩矩阵表示参数更新

LoRA 的基本公式是:

W′=W+ΔW W'=W+\Delta W W=W+ΔW

LoRA 不直接训练完整的 (\Delta W),而是将它表示为:

ΔW=BA \Delta W=BA ΔW=BA

因此:

W′=W+BA W'=W+BA W=W+BA

其中:

  • (W):原始模型参数,保持冻结;
  • (A,B):可训练的小矩阵;
  • (r):LoRA 的 Rank。

原始权重 W

最终权重 W+BA

低秩矩阵 A、B

冻结

训练


十、LoRA 为什么能减少参数?

假设原始矩阵为:

W∈R4096×4096 W\in\mathbb{R}^{4096\times4096} WR4096×4096

如果直接训练完整更新矩阵,需要:

4096×4096≈16.8 million 4096\times4096\approx16.8\text{ million} 4096×409616.8 million

个参数。

如果使用 LoRA,并设置:

r=8 r=8 r=8

那么只需训练:

4096×8+8×4096=65,536 4096\times8+8\times4096=65,536 4096×8+8×4096=65,536

个参数。

对比:

方法 可训练参数量
全量微调 约 1680 万
LoRA,(r=8) 约 6.5 万

因此,LoRA 具有:

  • 显存占用低;
  • 训练速度快;
  • 参数量少;
  • Adapter 易于保存;
  • 多个任务可以共享基础模型。

十一、LoRA 中 Rank 小意味着什么?

LoRA 的 (r) 不是“只能学习 (r) 个参数”,而是:

最多使用 (r) 个基础变化方向。

例如:

任务微调需求

变化方向 1

变化方向 2

变化方向 3

变化方向 4

LoRA Rank=2

无法完整表达

如果任务只需要一个主要变化模式,(r=1) 可能就够。

如果任务同时涉及:

  • 中文语义;
  • 代码保护;
  • JSON 结构;
  • 工具调用;
  • 专业术语;
  • 风格变化;

这些变化可能更加独立,就需要更大的 Rank,或者直接使用全量微调。


十二、LoRA 的问题是什么?

LoRA 直接使用:

ΔW=BA \Delta W=BA ΔW=BA

但实际权重变化通常包含两部分:

  1. 权重大小变化;
  2. 权重方向变化。

可以把权重想象成一个箭头:

  • 箭头长度:权重大小;
  • 箭头方向:权重方向。

例如:

原始权重:长度 10,方向 30°
微调权重:长度 12,方向 35°

这包含两种变化:

长度:10 → 12
方向:30° → 35°

LoRA 需要用同一个低秩更新同时学习这两种变化。

当 Rank 较小或训练数据较少时,不同变化可能争夺有限的低秩表达空间:

一个更新方向同时负责:
- 增强某些特征
- 改变某些语义方向
- 保留某些结构信息

这可能导致:

  • 某些变化学得不充分;
  • 不同任务之间互相干扰;
  • 在训练数据上有效,但泛化不稳定。

十三、DoRA:将大小和方向分开学习

DoRA 的核心思想是:

将权重大小和权重方向拆开学习。

它将权重表示为:

W=mV∥V∥ W=m\frac{V}{\|V\|} W=mVV

其中:

  • (m):权重大小;
  • (V/|V|):权重方向。

微调后的权重可以写成:

W′=m′W+BA∥W+BA∥ W'=m'\frac{W+BA}{\|W+BA\|} W=mW+BAW+BA

其中:

  • (m’):单独训练的大小参数;
  • (BA):使用 LoRA 学习方向变化。

原始权重 W

方向分支

大小分支

LoRA BA

可训练 magnitude m

归一化方向

权重大小

最终权重 W'

可以简单理解为:

LoRA:
一个补丁同时负责“改变大小”和“改变方向”

DoRA:
一个模块负责“改变大小”
一个 LoRA 模块负责“改变方向”

十四、LoRA 和 DoRA 的区别

对比项 LoRA DoRA
基本公式 (W’=W+BA) (W’=m’\frac{W+BA}{|W+BA|})
学习内容 整体权重变化 权重大小与方向
参数量 略多
训练复杂度 较低 略高
工程成熟度 很高 相对较低
适合定位 默认高效微调 LoRA 的增强方案

DoRA 的优化点是:

减少“大小变化”和“方向变化”之间的相互干扰,使模型能够更细致地学习参数变化。

但 DoRA 并不意味着:

  • 一定比 LoRA 好;
  • 一定不会遗忘;
  • 一定降低显存;
  • 可以替代高质量训练数据。

十五、如何选择全量微调、LoRA、QLoRA 和 DoRA?

开始微调

显存是否紧张?

优先 QLoRA

模型规模和数据量是否可控?

先做全量微调基线

优先 LoRA

LoRA 效果是否不足?

尝试 DoRA

继续使用 LoRA

一般建议:

方法 适用场景
全量微调 模型较小、数据充足、追求效果上限
LoRA 通用生产首选
QLoRA 显存不足时使用
DoRA LoRA 效果不足时尝试
QDoRA 量化模型上使用 DoRA

十六、如何增强新能力又保留原始能力?

如果只使用新领域数据进行全量微调,可能出现灾难性遗忘。

例如:

中文能力提升
英文能力下降
代码能力下降
原始领域泛化能力下降

更稳妥的方式是:

方案一:使用独立 Adapter

基础模型
├── 中文 Adapter
├── 英文 Adapter
└── 代码 Adapter

根据请求语言和任务类型选择不同 Adapter。

方案二:混合新旧数据

训练数据同时包含:

新领域数据 + 原始能力数据 + 多领域数据

损失函数可以表示为:

L=λLnew+(1−λ)Loriginal L=\lambda L_{\text{new}}+(1-\lambda)L_{\text{original}} L=λLnew+(1λ)Loriginal

这样模型在学习新能力的同时,也会复习原始能力。

方案三:建立回归评测集

需要分别评估:

  • 新领域任务效果;
  • 原始任务效果;
  • 不同语言表现;
  • 代码能力;
  • 工具调用能力;
  • 推理延迟;
  • 显存和训练成本。

十七、最终总结

矩阵是大模型进行特征变换和信息传递的基本工具。

Rank 表示矩阵中真正独立的信息方向数量,也可以理解为矩阵变换后保留下来的有效维度。

LoRA 的核心是:

W′=W+BA W'=W+BA W=W+BA

它假设:

ΔW=W′−W \Delta W=W'-W ΔW=WW

可以用较低的 Rank 近似表示。

DoRA 则进一步将权重变化拆成:

权重大小变化
+
权重方向变化

从而减少两类变化之间的相互干扰。

可以用一句话概括:

矩阵负责变换信息,Rank 表示独立信息方向,LoRA 用低秩矩阵高效学习任务变化,DoRA 则把权重大小和方向分开学习。

更多推荐