深入浅出剖析 LoRA 技术原理( 五 )


4.4 超参
我们先来看论文对的解释:
这段话大致意思是说,在我们采用Adam做优化器时,调整的作用就相当于调整 rate 。一般而言,我们把设置为我们第一次做实验时设置的,然后就把固定下来,之后只调整即可,这样做的好处是当我们尝试不同的时,我们不需要再去调整别的超参了 。
不知道大家第一次读到这段话是什么感受,反正我是没有读懂 。搜了一遍,也没找到具体的解释 。直到我按顺序捋了一遍LoRA低秩适配的设计思想后,我好像领悟了一些,下面我来谈谈我的个人见解 。
首先,回顾一下我们的输出计算方法为:
其中,表示预训练权重(旧知识),表示增量权重的近似(新知识) 。理论上说,当较小时,我们提取的是中信息含量最丰富的维度,此时信息精炼,但不全面;当较大时,我们的低秩近似越逼近,此时信息更加全面,但带来的噪声也越多(含有很多冗余无效的信息) 。
基于这个猜想,当我们第一次做实验时,我们会尽量把调得大些,例如:32、64,并假设在这个秩下,低秩权重已经非常近似了,因此这时我们设置,意味着我们假定LoRA低秩微调的效果和全参数微调持平 。
那么接下来,我们肯定就要往小的进行尝试了 。这时我们把固定住,意味着随着的减小,会越来越大,我们这样做的原因是:
好,到这里,我们已经一起学完了LoRA低秩适配的核心思想了 。我们前面说过,因为无法用SVD做直接分解,所以作者寄希望于LoRA能“学习”到真正的低秩分解矩阵,但是怎么证明LoRA学到的东西就和SVD分解出来的东西有关系呢?接下来,我们一起来解读作者的实验 。
五、LoRA实验:验证低秩矩阵的有效性 5.1 整体效果
首先,作者将LoRA和其余微调方法(全参数微调,等)做了比较 。纵列表示不同的微调模型,横列表示不同的数据集,加粗部分表示最好的效果指标 。可以发现,无论是在各个数据集微调准确率指标上,还是在最后平均微调准确率指标上(Avg.),LoRA都取得了不错的表现,而且它可训练的参数量也非常小 。
5.2 低秩矩阵信息量验证
我们前面说过,当越小时,低秩矩阵所含的信息越精炼,但同时也可能越不全面 。那么到底要取多少才合适呢?
5.2.1 直接验证不同r值下的微调效果
尽管理论上我们可以在模型的任意一层嵌入低秩适配器(比如,,MLP等),但LoRA中只选咋在层嵌入,并做了相关实验(论文中也鼓励读者可以多做别的尝试),我们来看下层的实验效果:
和是用于微调的数据集,Type指明在的哪一部分做了低秩适配 。可以发现,于的效果几乎持平,甚至还略优于 。这更加说明了“低秩”的有效性 。为了更具象化地验证这一点,我们进一步来看和这两个低秩空间的相交程度 。
5.2.2 不同低秩空间的相交程度
假设和分别是在和下训练出来的低秩矩阵,我们现在想做这么一件事:
欸那我怎么找出top个信息最丰富的维度呢?别忘了,我们有SVD方法,且这回和都是确定的了 。所以,我们可以对低秩矩阵,再做SVD分解,然后分别得到这两者的右奇异矩阵(也就是前文说的),但LoRA论文里,用来表示右奇异矩阵,那么我们也入乡随俗把,令:
好,明确了这些定义后,我们可以来看的个特征维度,与的个特征维度的相交程度计算了,这个相交指标也被称为" " 。
从上式可知,相交程度( )位于之间,该值越大,表示相应的两个子空间越相似 。感兴趣的朋友,可以参考论文附录G部分的相关证明 。我们这里只关注结论 。
好,把这个指标计算完了,那就可视化一波呗,所以作者继续给出了如下四张图: