当前位置: 首页 > article >正文

大模型学习笔记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的扰动显著。
破坏预训练权重,模型需要重新学习,收敛困难。 

不同矩阵的作用

 

 

 

 

 

http://www.lryc.cn/news/2387044.html

相关文章:

  • Maven-概述-介绍安装
  • GitHub Page填写域名显示被占用
  • js实现监听Ctrl/Cmd+C复制、Ctrl/Cmd+Z撤销 等快捷键
  • java高级 -动态代理
  • 机器学习算法:线性回归
  • NotePad++编辑Linux服务器文档
  • 常见小问题(Open Folder as PyCharm Project)
  • 第四十四节:目标检测与跟踪-模板匹配
  • Trae中使用mcp连接MariaDB
  • 第12次04 :首页展示用户名
  • MFC: 文件加解密(单元测试模块)
  • vue+ThreeJs 创建过渡圆圈效果
  • MySQL:12_视图
  • 2025 年开源 LLM 发展趋势细致解读
  • win11+vs2022 安装opencv 4.11.0图解教程
  • n8n 读写本地文件
  • 详解3DGS
  • DEBUG设置为False 时,django默认的后台样式等静态文件丢失的问题
  • 如何提高服务器的QPS来应对618活动的并发流量
  • LlamaFirewall:开源框架助力检测与缓解AI核心安全风险
  • java基础知识回顾3(可用于Java基础速通)考前,面试前均可用!
  • 嵌入式软件架构规范之 - 分层设计
  • 电脑无法识别打印机usb设备怎么办 一键解决!
  • Elasticsearch Synthetic _source
  • C++ -- vector
  • GitLab-CI简介
  • 深入研究Azure 容器网络接口 (CNI) overlay
  • Python打卡第37天
  • 使用 OpenCV 构建稳定的多面镜片墙效果(镜面反射 + Delaunay 分块)
  • HTTP协议版本的发展(HTTP/0.9、1.0、1.1、2、3)