news 2026/3/25 19:46:57

LoRA 矩阵分解:Rank(秩)与数值的确定机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LoRA 矩阵分解:Rank(秩)与数值的确定机制

接上文:【通俗易懂】彻底搞懂 LoRA 矩阵分解:从“用户看电影”讲起

结合之前“用户 x 电影 = 评分”的例子,来进一步说明Rank(秩)与数值的确定机制。


1. 分解后矩阵的“秩”(Rank)怎么确定?

在之前的电影推荐例子中,我们将用户和电影压缩成了2个维度(动作分、爱情分)。这个“2”,在数学上就叫做矩阵的秩(Rank,通常记为 r)

在 LoRA (Low-Rank Adaptation) 中,这个r rr是由人(你)人工设定的超参数

为什么是人工设定的?

LoRA 的核心思想是:大模型参数虽然多,但在做特定任务(如写诗、改代码)时,真正起作用的参数变化不需要那么多维度。

  • 设定r rr的原则
    • r rr越小(如 4, 8)
      • 参数量越少,显存占用越低,训练越快。
      • 比喻:只用“动作”、“爱情” 2 个标签来概括所有电影。虽然粗糙,但抓住了主要矛盾。
    • r rr越大(如 64, 128)
      • 拟合能力越强,能捕捉更细微的信息。
      • 比喻:用了“动作”、“爱情”、“悬疑”、“科幻”… 64 个标签来概括电影。描述更精准,但计算量变大。

在实际 Llama 3 或 Stable Diffusion 的微调中,常见的r rr值通常设为8, 16, 32 或 64


2. 矩阵里的“数值”(初始值)是怎么确定的?

既然r rr只是个形状大小,那矩阵里面具体的数字(0.9, 0.1 这种)一开始是怎么来的?

假设我们要把一个d × d d \times dd×d的大权重矩阵,分解为B BB(d × r d \times rd×r) 和A AA(r × d r \times dr×d):

  1. 矩阵 A (降维矩阵)

    • 初始策略高斯分布随机初始化(Random Gaussian Initialization)。
    • 里面的数是随机生成的微小值,就像刚开始没人知道“战狼”是啥,先随机猜它是某个分类。
  2. 矩阵 B (升维矩阵)

    • 初始策略全零初始化(Zeros Initialization)。这非常关键!
    • 里面的数全部填0

为什么要这么做?

还记得公式吗?Δ W = B × A \Delta W = B \times AΔW=B×A
如果B BB全是 0,那么B × A B \times AB×A的结果也是全 0
这意味着:在训练刚开始的第一步,LoRA 挂载上去后,模型的表现和原始模型(Base Model)完全一模一样,没有任何变化。

随着训练开始(反向传播),梯度会更新A AAB BB里数值,让它们慢慢变成有意义的“动作分”、“爱情分”。


3. “评分”是怎么确定的?(在 LoRA 里对应什么?)

在“用户-电影”例子中,相乘的结果是“评分(Rating)”。
LoRA中,两个小矩阵相乘B × A B \times AB×A,得到的结果不是“评分”,而是原始权重的“增量”(Update /Δ W \Delta WΔW

对应关系图解

场景矩阵 A矩阵 B相乘结果 (Result)结果的意义
电影推荐用户画像 (User)电影属性 (Movie)评分 (Rating)预测用户会不会喜欢这部电影
LoRA降维投影 (A)升维投影 (B)权重增量 (Δ W \Delta WΔW)告诉大模型这句话该怎么改着说

具体计算过程:

假设你在微调一个大模型让它学会“说脏话”(仅举例):

  1. 输入:你输入 “Hello”。
  2. 原始路径:原始大模型权重W WW计算由于没学过脏话,想输出 “Hi there”。
  3. LoRA 路径
    • 输入 “Hello” 通过矩阵 A 变成了低维特征(比如捕捉到了“打招呼”这个意图)。
    • 再通过矩阵 B 变成了高维的修正信号(学到的新知识:这里应该加个脏词)。
    • 这个修正信号就是Δ W \Delta WΔW作用的结果
  4. 最终融合
    • 最终输出 = 原始输出 + LoRA修正
    • O u t p u t = W x + Δ W x = W x + B ( A x ) Output = Wx + \Delta Wx = Wx + B(Ax)Output=Wx+ΔWx=Wx+B(Ax)
    • 结果可能变成了 “Hi there, f***!”。

总结

  • Rank (秩):是你拍脑袋定的,决定了模型能学多少新花样。
  • 数值:一开始是0(为了不破坏原模型),靠由于数据产生的Loss(误差)倒逼回来修改确定的。
  • 评分(结果):不是打分,而是对原模型神经元连接强度的修正值
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 3:15:18

基于单片机的篮球计分器设计(有完整资料)

资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T4452405M设计简介:本设计是基于STM32的篮球计分器,主要实现以下功能:1.采用两队计分制 2.可通过按键进行加分、减分、清…

作者头像 李华
网站建设 2026/3/21 7:48:54

小白也能玩转大模型!通义千问2.5保姆级入门教程

小白也能玩转大模型!通义千问2.5保姆级入门教程 1. 引言 1.1 学习目标 你是否曾觉得大模型高不可攀,需要深厚的算法背景和昂贵的硬件支持?其实不然。随着开源生态的成熟和本地推理工具的普及,如今只需一台普通电脑,…

作者头像 李华
网站建设 2026/3/23 14:02:42

Win7 64位系统PHP环境搭建教程,手把手教你安装配置

在Windows 7 64位系统上搭建PHP本地开发环境,是许多开发者进行网站测试和项目学习的起点。虽然Win7已停止主流支持,但其稳定性和对老硬件的兼容性,使得在它上面配置PHP环境仍有实际需求。整个过程主要涉及Web服务器(如Apache或Ngi…

作者头像 李华
网站建设 2026/3/25 0:18:24

VibeThinker-1.5B为何用英文提问更佳?语言适配机制解析

VibeThinker-1.5B为何用英文提问更佳?语言适配机制解析 1. 背景与技术定位 VibeThinker-1.5B 是微博开源的一款小参数规模密集型语言模型,总参数量为15亿(1.5B),专为探索小型模型在数学推理和编程任务中的极限性能而…

作者头像 李华
网站建设 2026/3/24 4:05:14

鼠标钩子怎么监听按下和移动?原理与实现解析

鼠标钩子是Windows系统中用来监控和截获鼠标输入消息的技术,通过它,开发者可以在系统级别监听鼠标的各种操作,包括按下、移动和释放等事件。这项技术常用于需要全局鼠标监控的软件中,如屏幕录制、自动化工具和安全软件。 鼠标钩子…

作者头像 李华
网站建设 2026/3/20 12:22:52

VibeThinker-1.5B数学推理能力拆解:HMMT25得分50.4背后技术

VibeThinker-1.5B数学推理能力拆解:HMMT25得分50.4背后技术 1. 引言:小模型大能力——VibeThinker-1.5B的定位与价值 近年来,大模型在数学推理和代码生成任务中表现突出,但其高昂的训练与推理成本限制了广泛部署。在此背景下&am…

作者头像 李华