大模型学习笔记day2 LoRA微调

LORA的核心思想基准模型不进行变化,我额外引入一部分参数来做专属内容处理,同时加上原有模型的推理能力,这部分新增加的的内容就是要训练出来的参数矩阵

本征维度(Intrinsic Dimension):是指数据或空间中所需的最小维度,以便充分描述其中的结构或特征。换句话说,尽管数据可能存在于高维空间中,但其实际所包含的信息可能集中在一个更低维度的子空间内,本征维度就是描述这个低维子空间的维度。 

比如一个3*3的矩阵,可以表是成一个1*3的矩阵和3*1的矩阵的乘积,这里原本9个参数就变成了6个参数。节约了参数空间,由此,可以把上面的新增矩阵变成矩阵A和矩阵B的乘积。

lora配置

矩阵A和矩阵B分别为正态分布矩阵和一个全为零的矩阵。

  • A正态分布,B零矩阵
    ΔW = A×B = 随机矩阵×零矩阵 = 零矩阵
    初始阶段模型行为不变,不干扰预训练权重,训练从“零扰动”开始。

  • A和B均零矩阵
    ΔW = 零矩阵,梯度消失,无法更新参数。

  • A和B均正态分布
    ΔW = 随机矩阵×随机矩阵,初始扰动过大,破坏预训练权重,引入噪声,收敛困难。

梯度传播的数学分析

以简单线性层为例,输入为 xx,输出为 x⋅(W+ΔW)=xW+xABx⋅(W+ΔW)=xW+xAB。
损失函数为 LL,反向传播时:

  • 对B的梯度

    ∂L∂B=AT⋅∂L∂(xAB)⋅xT∂B∂L​=AT⋅∂(xAB)∂L​⋅xT

    若B初始化为零矩阵,但A为随机正态分布,则梯度 ∂L∂B∂B∂L​ 非零,B可更新。

  • 对A的梯度

    ∂L∂A=∂L∂(xAB)⋅xT⋅BT∂A∂L​=∂(xAB)∂L​⋅xT⋅BT

    若B初始化为零,初始时 ∂L∂A=0∂A∂L​=0,但随着B的更新,A的梯度逐渐非零。

具体示例对比

示例1:A和B均初始化为零矩阵
A = torch.zeros(in_dim, rank)  # 全零
B = torch.zeros(rank, out_dim)  # 全零
  • 前向传播:ΔW = A×B = 0 → 输出与原始模型一致。

  • 反向传播
    ∂L/∂B=AT⋅梯度=0  ∂B/∂L​=AT⋅梯度=0
    ∂L/∂A=梯度⋅BT=0  ∂A/∂L​=梯度⋅BT=0
    梯度消失,参数无法更新,训练停滞

示例2:A和B均用正态分布初始化
A = torch.randn(in_dim, rank) * 0.01  # 小标准差
B = torch.randn(rank, out_dim) * 0.01

前向传播:ΔW = A×B,元素可能较大(如秩为1时,ΔW的每个元素是A和B对应行列的点积)。
例如,若A和B的元素均服从 N(0,0.012)N(0,0.012),则ΔW的元素方差为 0.014×rank0.014×rank,当rank较大时,ΔW的扰动显著。
破坏预训练权重,模型需要重新学习,收敛困难。 

不同矩阵的作用

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tomorrow'sThinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值