LoRA深入解析

LLM基础:LoRA(低秩适应)及其参数 🦙

📌 LoRA通过引入低秩矩阵来修改Transformer模型的自注意力和前馈层 。这种适应在微调过程中显著减少了可训练参数的数量,从而实现了更高效和可扩展的模型更新,而不会显著降低性能。

💡 LoRA的基本概念

📌 在LoRA中,原始权重矩阵W的变化通过添加两个较小矩阵BA的低秩乘积来适应,其中B和A是低秩矩阵。因此,适应后的权重矩阵变为W + BA。

即通过LoRA,微调后的权重W'可以表示为:

👉 W' = W_0 + ∆W = W_0 + BA

其中W_0在微调过程中保持静止,而带下划线的参数正在被训练。矩阵A以均匀的Kaiming分布初始化,而B最初设置为零,导致训练开始时∆W = BA为零。

📌 在使用LoRA进行微调时,原始权重W被冻结,只训练低秩矩阵B和A的元素 ,从而大幅减少了可训练参数的数量。

💡 现在让我们看看允许控制LoRA如何应用于基础模型的LoraConfig参数

📌 分解秩r

r 代表微调过程中学习的低秩矩阵的秩。随着这个值的增加,在低秩适应过程中需要更新的参数数量也会增加。直观上,较低的 r 可能会导致训练过程的计算强度较低。

📌 秩r的数学意义

对于每一层需要训练的层, d × k 的权重更新矩阵 ∆W 由低秩分解 BA 表示,其中B是 d × r 矩阵,A是 r × k 矩阵。分解秩r远小于min(d,k)。默认的r值为8。

A以随机高斯数初始化,因此初始权重更新具有一些变化开始。B初始化为零,因此在训练开始时∆W为零。

因此,秩r决定了近似的“紧凑性”。

通过选择一个远小于 d 和 k 的小r,目的是以更紧凑、低维的形式捕捉权重更新的本质。

target_modules 是LoRA应用到的模块名称,例如查询、键和值,这些是Transformer架构中自注意力层的内部层的名称。

📌 LoRA缩放的Alpha参数 lora_alpha

根据LoRA文章Hu等人的说法,∆W按α/r缩放,其中α是一个常数。使用Adam进行优化时,如果初始化适当缩放,调整α大致相当于调整学习率。原因是参数数量随着r线性增加。随着r的增加,∆W中的条目值也会线性增加。我们希望无论使用什么r,∆W都能与预训练权重一致缩放。这就是作者将α设置为第一个r并不调整它的原因。默认的α值为8。

📌 丢弃率(lora_dropout) :这是训练过程中每个神经元输出被设置为零的概率,用于防止过拟合。

丢弃是一种深度学习中的通用技术,通过在训练过程中随机选择神经元忽略来减少过拟合。在前向传播过程中暂时删除这些选择的神经元对下游神经元激活的贡献,并且在反向传播时不应用任何权重更新。lora_dropout的默认值为0。

📌 偏置参数 bias

偏置可以是‘none’,‘all’或‘lora_only’。如果是‘all’或‘lora_only’,对应的偏置将在训练过程中更新。默认值为None。

版权声明:
作者:clash
链接:https://www.shadowrocket6.top/161.html
来源:Shadowrocket官网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>