这段话主要描述了 LoRA(Low-Rank Adaptation)技术的关键思想,下面我用更简单的方式解释一下每个部分:
1. 矩阵乘法和全秩权重矩阵:
神经网络中的很多层是通过矩阵乘法来计算的,而这些层的权重矩阵通常是全秩的,也就是说,权重矩阵的秩与其行列数无关,所有数据都被充分利用。
2. 低秩的假设:
论文提到 Aghajanyan 等人在 2020 年的研究发现,预训练语言模型的权重矩阵在特定任务中的更新可能有一个较低的“内在维度”(intrinsic dimension),意思是即使权重的某些参数被投影到更小的子空间,模型仍然能够有效学习。这表明不需要所有的权重参与更新,模型仍然能表现出不错的效果。
基于这个发现,LoRA 的作者假设在适应新任务时,权重更新所需要的秩也是很低的,权重变化可以通过低秩矩阵来表示。
3. 权重更新的低秩分解:
4. 冻结预训练权重:
在训练过程中,预训练的权重矩阵 (W_0) 被冻结,不再更新,而是只更新低秩矩阵 ( A ) 和 ( B ),通过这两个矩阵对权重进行细微调整。这减少了需要训练的参数数量,同时仍能获得足够的适应能力。
5. 前向传播过程:
6. 矩阵初始化:
- 矩阵 ( A ) 采用随机高斯分布初始化,这是为了给模型提供合理的初始值。
- 矩阵 ( B ) 则初始化为零,这样在训练初期,更新项 ( \Delta W = BA ) 为零,保证模型刚开始时跟原来的预训练模型是一样的。
7. 缩放因子:
为了控制更新的幅度,论文引入了一个缩放因子 ( \alpha ),并将其应用于 ( \Delta W x ),这个缩放因子根据秩 ( r ) 来调节。作者还指出,在使用 Adam 优化器时,调整 ( \alpha ) 与调整学习率的作用类似,因此 ( \alpha ) 通常取一个合理的初始值,不需要过多调优。
总结:
- LoRA 通过低秩矩阵 ( B ) 和 ( A ) 对预训练模型的权重更新进行有效压缩,从而减少参数量。
- 预训练模型的权重矩阵 ( W_0 ) 不参与更新,只是通过低秩矩阵对其进行补充更新。
- 使用缩放因子 ( \alpha ) 来控制这些更新的幅度。
这段解释了 LoRA 如何通过低秩矩阵对预训练模型进行高效的参数调整,进而降低训练复杂度,同时保留模型的适应能力。
As a result, we simply set α to the first r we try and do not tune it.
这句话请给我详细解释一下
lora微调时常用的a和r分别是多少