LoRA:约束的是更新,而非整个模型
分解权重更新、计算可训练参数,并解释第一次梯度的不对称性。
LoRA: Low-Rank Adaptation of Large Language Models · Hu et al. · arXiv:2106.09685
Token Lab 原创学习解读 · 来源核对 2026-10-25 · 区分论文主张与合成教学例子。
01 · 论文提出了什么
LoRA 冻结预训练权重,学习低秩加性更新。论文研究了多个语言模型与适配任务;经验上的有效性不等于所有有用更新都具有同样的小秩。
一手来源:论文摘要 ↗学习指南与本课目录
LEARNING CONTRACT理解 → 实现 → 研究
目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。
- 理解层:写明假设、形状/单位和一个反例。
- 实现层:复算数值例子并检查边界。
- 研究层:在匹配预算下比较一个替代方法。
02 · 核心机制
Text / 原始公式
W ∈ Rᵈˣᵏ, A ∈ Rʳˣᵏ, B ∈ Rᵈˣʳ W′ = W + (α/r)BA Trainable parameters = r(k+d) ∂L/∂A = (α/r)BᵀG; ∂L/∂B = (α/r)GAᵀ
基座矩阵可以保持满秩,受约束的只是学习到的变化。两个瘦矩阵形成更新瓶颈。B 初始化为零、A 非零时,初始函数不变,A 的梯度为零而 B 可以开始更新;两者都置零会使两个梯度都被阻断。
符号与直觉为教学解释,完整假设及实现细节请对照原论文方法。
机制图与逐步推导
| 符号 | 含义 |
|---|---|
| W ∈ ℝᵈˣᵏ | 冻结的基座权重 |
| A ∈ ℝʳˣᵏ, B ∈ ℝᵈˣʳ | 可训练低秩因子 |
| 有效权重接收的梯度 |
- 链式法则给出
′)。代入 ·A+B·dA),收集系数即可得到两个因子梯度。 - 取 α/
, ,2]、 ,0]ᵀ、 ,则 ∂L/∂ ,2]ᵀ,∂L/∂ ,0]。初始更新为零仍能通过 B 开始学习。 - 学习率 0.1 后,
,−0.2]ᵀ, -0.1,-0.2],[-0.2,-0.4]],秩至多为 1。下一步 A 就可能获得非零梯度。
断言 W 不变,初始输出与基座一致。先测梯度,再测下游质量。
改变一个变量,解释结果为什么变。
原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。
04 · 手算一个例子
原创算例:4096×4096 矩阵有 16,777,216 个元素。rank 8 增加 8×8192=65,536 个可训练元素,占稠密参数的 0.390625%。这是参数比例,不是总训练内存比例。平方误差矩阵逼近的最优 rank-r 残差为剩余奇异值平方和,而神经网络任务损失是另一目标。
05 · 设计实验
先运行本站小矩阵拟合实验,固定目标矩阵与种子扫描 rank,并与奇异值下界比较。真实语言模型研究还需固定目标模块、适配器缩放、token 预算和验证选择。在相近参数预算下,比较增大 rank 与覆盖更多模块。
写出一个假设,保存配置与原始结果,提出替代解释,只报告证据支持的结论。关联实验是本地起点,不是完整论文复现。
打开关联课程/实验 →06 · 局限与审稿式追问
分析提醒:可训练权重更少,并未移除基座正向计算或激活存储。将 BA 合并进兼容稠密权重可去掉独立适配器路径,但多适配器服务或量化基座还有其他约束。只报告 rank 不足以描述实验。
为什么两个因子都零初始化不合适?
两个梯度都包含另一个因子。
07 · 阅读原文
低秩参数化和初始化,然后是 rank 与目标模块实验。
年份采用首次 arXiv 投稿年份。未锁定版本的链接随修订变化,复现报告请记录准确版本。此处 DeepSeek-R1 明确固定为 v1。
继续学习本主题
QLoRA:显存预算不能只看权重位宽
区分存储权重、计算精度、适配器与训练状态,建立完整内存账本。
Dettmers et al. · arXiv:2305.14314
DPO:通过相对对数概率学习偏好
推导成对偏好 margin,并观察 β 对单个偏好样本的影响。
Rafailov et al. · arXiv:2305.18290