LoRA+
《LoRA+: Efficient Low Rank Adaptation of Large Models》 (opens new window)
为了使LoRA的效果尽可能接近最优,权重
论文解读
给LoRA的两个矩阵分配不同的学习率,LoRA的效果还能进一步提升。该结论出自论文《LoRA+: Efficient Low Rank Adaptation of Large Models》 (opens new window)(下称“LoRA+”)。咋看之下,该结论似乎没有什么特别的,因为配置不同的学习率相当于引入了新的超参数,通常来说只要引入并精调超参数都会有提升。“LoRA+”的特别之处在于,它从理论角度肯定了这个必要性,并且断定最优解必然是右矩阵的学习率大于左矩阵的学习率。简而言之,“LoRA+”称得上是理论指导训练并且在实践中确实有效的经典例子,值得仔细学习一番。
结论简析
假设预训练参数为

注意LoRA通常都是用于Dense层,但原论文的分析是基于权重左乘输入的,而实现中基本上都是输入右乘权重,为了避免理解上的困难,本文的记号跟实现对齐,即假设层的输入是
“LoRA+”的结论是**:为了使LoRA的效果尽可能接近最优,权重
注意,为了使初始模型等价于原始预训练模型,LoRA通常会将
- 数值稳定:模型每一层的输出值都应该是数值稳定的,跟网络宽度无关;
- 贡献相当:为了使LoRA最优,
两个矩阵对效果应该有同等程度的贡献。
数值稳定
首先,数值稳定说的是
这个数值稳定性条件容易让我们联想到“LeCun初始化 (opens new window)”,它说的是如果
当然,前面说了LoRA为了保证初始化的恒等性,
贡献相当
接着,我们来看第二个假设:
这里使用了一阶线性近似,其中
既然要考虑每一步的更新量,那么就引导我们到了优化器的方向上。当前预训练和微调的主流优化器都是Adam,那么我们就以Adam为主要分析对象。我们知道,Adam优化器有两组滑动平均状态以及对应的超参
其中
将SignSGD的增量
这里的
快速推导
进一步的分析需要求出梯度的具体形式。再次设
不了解矩阵求导的读者可能会困惑于以上结果的推导,其实笔者也不熟悉,但这里有个简单的技巧可以用。比如
求出
考虑到实际使用时常有
但是还没完,我们要检查一下结果是否自洽,因为我们用到的条件之一是“前向的数值稳定性”,至今为止还只是一个理想的假设。如何让假设尽可能成立呢?战胜一个假设的方法是引入另一个假设: 在Adam优化器中,如果两个参数的学习率之比是
根据Adam的近似式
原论文的结果跟上述结果略有不同,它给出的答案是
当然,具体是
文章小结
这篇文章中,我们介绍并推导了一个名为“LoRA+”的结果,它支持LoRA的两个低秩矩阵