speaker 1: 今天我们来学习一下laa的原理。 我们知道在深度神经网络里最主要的计算就是矩阵运算,而大模型里矩阵运算维度都是成千上万的,模型里我们要训练调整的权重也是用矩阵表示的,Lara就是通过化简权重矩阵来达到参数高效微调的,比如这里这个3乘3的权重矩阵,正常情况下前向传播时输入乘以权重得到输出,后向传播时调整权重矩阵更新网络。 而la拉的思想是在这个权重矩阵的旁边另辟蹊径,重新构造两个权重矩阵,laa a和laa b在这个例子里,这两个权重的维度分别为3乘1和1乘3。 值得注意的是,这两个拉A权重矩阵的乘积的维度和原始权重矩阵的维度是一样的,都是3乘3正向传播时输入,通过原始权重得到一个输出,同时输入通过下面这两个laa权重得到另一个输出,最后将这两组输出相加,得到这个矩阵计算更新后的输出。 你可以认为Lara这个分支在对模型进行微调,改进模型的输出,而后向传播时,我们锁定原始权重矩阵,只对laa权重进行更新,原始的权重个数是3乘3,一共九个,而laa权重的参数是3乘1加上1乘3 1共6个。 可以看到Lara可以减少更新权重的个数。 网络训练完成后,原始的矩阵权重没有变化,我们得到一个laa a和laa b的权重。 这时我们把laa a和laa b相乘,得到一个laa权重矩阵,这是这个laa权重矩阵的形状和原始权重矩阵的形状是一样的。 我们只需要把laa权重加到原始权重上,就完成了对原始网络的更新。 我们举的这个例子里,原始权重的shape是3乘3,看起来laa减少参数训练量也不并不明显。 假如原始权重维度是4096乘4096的,而取四的情况,原始矩阵的参数量是4096乘4096,一共16777216个。 而Lora a的参数个数为4096乘以4,Lora b的参数个数为4乘4096。 Lara训练的参数个数总共为32768个,训练参数是原始参数的512分之1,减少的参数量还是非常可观的。 我们看一下laa训练里有两个重要的参数R也就是rank。 假设原始权重的维度为M乘以n laa a的权重为M乘以R,laa b的权重为R乘以N R是用来连接laa a和laa b两个laa权重矩阵中的中间维度,一般它远远小于原始权重矩阵中的M和N一般R我们设置为二、4、8、十六等阿尔法,input和原始权重相乘后的输出为x input和laa权重相乘后的输出为ta x上边我们的例子里是直接将X和ta x相加。 但在实际实现中前向传播时,我们要对戴尔塔的权重进行一个调节,这个调节因子就是阿尔法除以R同样在更新原始权重时,也记得要对laa权重加上这个调节因子。 因为data塔X是对原始模型输出X进行的调节,调节因子决定了X影响的大小,一般我们设置阿尔法为R的I到8倍。 Laa训练有很多优点,一、它大大节省了微调大模型的参数量。 2、它的训练效果和全量微调差不多。 3、微调完的laa模型权重可以末置回原来的权重,不会改变原有的模型结构,推理时也不增加额外的计算量。 四你可以通过改变rank R二的参数,使得最高的情况下Lara的训练实际上等同于全量微调。 好了,今天我们就讲到这里,我想你一定学会了劳拉,我们下期见。