🔬 LoRA 低秩适应 · 完整可视化

四个核心概念:参数对比 · 矩阵分解 · 权重变化 · 秩的影响

🧊 第一部分:冻结大模型 vs 训练小矩阵

左侧灰色大正方形代表预训练权重 W(4096×4096,约1670万参数),完全冻结不更新。 右侧两个金色小矩形代表 LoRA 插入的矩阵 A(4096×16)和B(16×4096),合计仅13万参数。
❄️ W (4096×4096)
16,777,216 参数 · 冻结
🔥 A (4096×16)
65,536 参数 · 可训练
🔥 B (16×4096)
65,536 参数 · 可训练
冻结(不更新)
可训练(更新)
直观感受: 如果 W 是一个足球场,那么 A 和 B 加起来只有球场边的一个篮球大小。
参数量差距 ≈ 128 倍,LoRA 仅训练总参数的 0.78%

🧩 第二部分:矩阵分解 ΔW = B × A

完整的更新量 ΔW(4096×4096)由两个低秩矩阵相乘逼近。秩 r=16 即可捕捉大部分信息。
B × A = ΔW
B 行向量
A 列向量
乘积贡献
秩 r = 16 意味着信息被压缩到 16 维子空间,足以捕捉任务相关的权重变化。

📊 第三部分:微调前后,权重矩阵发生了什么变化?

什么是"权重变化"? 神经网络由大量参数(权重)组成。微调就是在原有权重基础上做调整。 下面的步骤展示了这个过程:
1 原始权重
W₀(预训练好的)
+
2 权重变化量
ΔW(微调学到的)
=
3 新权重
W = W₀ + ΔW
热力图展示的就是步骤2中的 ΔW —— 每个小格子代表一个权重参数的变化大小。 红色表示权重增加,蓝色表示权重减少,白色/灰色表示几乎没变。
全量微调的 ΔW
所有1640万参数都大幅调整
LoRA微调的 ΔW
只有13万参数在调整
权重增加
轻微增加
几乎不变
轻微减少
权重减少
关键区别: 全量微调修改了所有参数(左图红蓝遍布), 而LoRA只修改了极少数参数(右图大部分是白色,只有少数红蓝点)。

🎯 第四部分:LoRA 中"秩"的直观对比

秩(r)决定了"自由度" —— 就像用多少种颜色来画一幅画。
r=2:只能用2种模式组合,变化非常受限(像2支笔)
r=8:8种模式,变化更丰富(像8支笔)
r=16:16种模式,变化最灵活(像16支笔)
LoRA 微调 ΔW (秩 r=2)
16,384 参数可训练
全量微调 ΔW(基准)
所有1640万参数都更新
r=2:16,384 参数
r=8:65,536 参数
r=16:131,072 参数
权重增加
轻微增加
几乎不变
轻微减少
权重减少
💡 当前 r=2: 左侧热力图非常稀疏——只有极少数区域有颜色(红/蓝),大部分是白色。 这是因为只有2个"模式"可以组合,权重变化非常受限。 可训练参数仅 16,384 个(占总数0.1%)。