大模型微调(面经总结)
目录
- 一、LORA篇
- 1、介绍一下Lora的原理
- 2、LoRA 是为了解决什么问题提出的?哪些模型适合用 LoRA 微调?什么是低秩分解?
- **低秩分解:用小矩阵逼近大矩阵**
- 3、LoRA初始化
一、LORA篇
1、介绍一下Lora的原理
LoRA 是一种参数高效微调方法,其核心思想是将原始权重矩阵的更新限制在一个低秩空间内,从而显著减少训练参数量。
不同于传统微调,LoRA 将权重的更新项 Δ W \Delta W ΔW 表示为两个低秩矩阵 A ∈ R r × d A \in \mathbb{R}^{r \times d} A∈Rr×d 和 B ∈ R d × r B \in \mathbb{R}^{d \times r} B∈Rd×r 的乘积:
W ′ = W + Δ W = W + B A W' = W + \Delta W = W + BA W′=W+ΔW=W+BA
训练阶段只更新两个低秩矩阵 A A A 和 B B B ,原始模型权重 W W W 保持不变;
2、LoRA 是为了解决什么问题提出的?哪些模型适合用 LoRA 微调?什么是低秩分解?
- LoRA 的核心目标:降低大模型微调成本 参数量从 O ( d 2 ) O(d^2) O(d2) → O ( r d ) O(rd) O(rd)
- 适合含大量线性层的 Transformer 架构模型 比如注意力模块的
Q/K/V
投影矩阵、FFN前馈神经网络
等
低秩分解:用小矩阵逼近大矩阵
定义:低秩分解是将高维矩阵近似为两个低维矩阵的乘积,以降低表示复杂度。
数学形式:对于 d × d d \times d d×d 的高维矩阵 W W W,找到两个低维矩阵 A ∈ R r × d A \in \mathbb{R}^{r \times d} A∈Rr×d 和 B ∈ R d × r B \in \mathbb{R}^{d \times r} B∈Rd×r 的乘积,使得:
W ≈ B A W \approx BA W≈BA
- (A) 是 降维矩阵:将原始 d d d 维空间映射到 r r r 维子空间(提取关键特征)。
- (B) 是 升维矩阵:将 $r$ 维特征恢复到 d d d 维空间(重构原始空间的更新)。
- 优势:通过仅优化 (A) 和 (B) 的 2 r d 2rd 2rd 个参数(远小于 d 2 d^2 d2),即可近似表达 (W) 的主要变化,大幅减少计算量。
3、LoRA初始化
LoRA 的初始化通常遵循以下原则:
原始模型权重 W 不变
LoRA 的矩阵:
- A A A 通常使用正态分布初始化:
nn.Linear(..., bias=False)
默认初始化- B B B 通常初始化为 全零矩阵,这样一开始 Δ W = B A = 0 \Delta W = B A = 0 ΔW=BA=0,模型输出不会被扰动,保证收敛稳定性