Xiang ZL · blog

菩提本无树,明镜亦非台;本来无一物,何处惹尘埃

大模型LoRA微调的核心思想

阅读:47

在讲到大模型微调之前,我们先简单讲解一下模型,一个大模型我们可以简单理解为一个巨大的函数,比如一个函数`4X + 3Y = 10`,这个时候函数有两个参数`X 和 Y`当然这是一个初中的函数。当输入一个`X`的时候会有一个对应的`Y`的值。这个参数也就可以间接的理解为大模型的参数。

要微调一个大模型,我们其实是对一个通用大模型加入一些数据再次进行训练得到一个新的大模型;本质上其实是对这个模型的参数进行微调。但是实际中一个大模型可能会有几十亿、几百亿甚至几千亿的参数。我们需要对这些参数进行一个调整。

1737015030965image.png

一个模型拥有巨大的参数量,我们可以把它写成一个几行几列的形式。这时候可以理解为一个矩阵,当然有人听到矩阵之后就会觉得很难,其实一点也不简单。

举个例子,我们有一个三行三列的矩阵,也就是`3x3=9`9 个参数的一个矩阵(下图左边的矩阵),在经过我们的数据训练之后变成下图右边的矩阵。

1737015230407image.png

在这个过程当中,我们其实是要把左边的矩阵变成右边的矩阵,那我们可以通过一个矩阵相加的形式,如下:

1737015408381image.png

总体来说我们其实是要得到中间这个橙色文字的矩阵,但这种微调的方式,我们要得到的是一个和基础模型一样大参数量的新矩阵,所以我们要计算的参数量也是巨大的。比如基础大模型是 70B(700 亿参数),我们就需要计算出 700 亿个新的参数。这种微调方式我们叫做“全量微调”。

但我们本文的重点是讲 LoRA微调,所以全量的就不展开讲。

在上面的基础上,我们就开始反思,我要计算这么多的参数,真的每个参数都要计算出来吗。

寄一个简单的例子,我们让小明来写一篇文章,小明写了 2000 字,但是小明是一个很啰嗦的人,其中有一大部分是废话,其实只需要 200 个字就可以把文章描述清楚,这时候我们是不是可以认为我只需要 200 个字就可以描述 2000字文章所描述的内容。

运用在模型中也是一样的道理,全量微调我们需要调大量的参数,我们的参数中是不是也有大量的废话(冗余的参数)。这时候我们会引入有一种高效微调技术(PEFT),其中的一种方法叫 LoRA

1737016164432image.png

我们希望在高效微调的过程中只改动我们有用的、有价值的信息。其余的模型能力保留不变。

如下图,比如我们要调整的参数如下图中第一个矩阵的形式,那么真正有效的参数是有第一行,第二行和第三行和第一行相同,我就不需要再算了。

下图第二个矩阵真正有用的参数也就第一行和第三行,第二行我也可以不用再算。

1737016249315image.png

这时候我是不是可以缩减掉这些不用再计算的参数,接下来我们假设我们要调整的参数`W = 100 x 100`的矩阵,如下图所示:如果这个矩阵具备以上的特征,根据线性代数的一个特诊,我们可以把它写成两个矩阵乘积的形式:`W = A * B`,这时,W 的参数是100 * 100 个,也就是 100 行、100 列,实际中的模型要比这个大很大。我们可以在代入`W = A * B `的公式我们可以写成 `W(100*100) = A(100*k) * B(k*100) `的形式,这里我们有一个 K,这个 K 的值的大小是可变的,比如我们的 K=2,那么我们只需要调整`A = 100 * 2 和 B = 2 * 100`,一共也就是 400 个参数,所以相比前面直接调整 10000 个参数,得到了大大的缩减。示例图如下:

1737016748320image.png

K 值的大小取决于我们微调中用到的数据与模型中总数据的占比,简单的来说就是你觉得数据重要,你可把 K 调整大一点,你觉得占比不高你可以把K 值调小一点,当然也不是一味的调大,如果你的 K 值太大,对原有模型的参数影响较大,那么结果也就是模型本身的一些能力就会丧失,这叫模型能力的遗忘,甚至是造成灾难性遗忘,如果你的 K 值太小,可能对训练的结果不会有太大影响,也就是你的数据集丢进去之后作用不大,与原来的基础大模型形成了一个过拟合。所以 K 值的大小基本上靠经验或者多次尝试可以获得一个最优解。以上就是 LoRA微调的一些理解,最后附上一张本文的完整示例图:

1737019401045image.png

参考文章:

【矩阵分解系列】:https://zhuanlan.zhihu.com/p/678299314

【低秩矩阵分解】https://zhuanlan.zhihu.com/p/677987614

【矩阵低秩有何意义?】https://blog.csdn.net/qq_24876435/article/details/123367895

加载中...