DoRA详解:从LoRA到权重分解的进化

DoRA​ ​是一种用于​​大语言模型(LLM)微调​ ​的技术,全称为 ​​"Weight-Decomposed Low-Rank Adaptation"​ ​(权重分解的低秩自适应)。它是对现有微调方法(如 ​​LoRA​​)的改进,旨在更高效地调整模型参数,同时减少计算资源消耗。

论文链接:https://arxiv.org/pdf/2402.09353

​1. 概括​

  • 核心思想​ ​:DoRA 通过​​分解预训练模型的权重矩阵​ ​,将其拆分为​​幅度(magnitude)​ ​和​​方向(direction)​​两部分,分别进行低秩(low-rank)调整。这种分解方式能更精细地控制参数更新,提升微调效果。

  • ​与 LoRA 的关系​​:

    • ​LoRA(Low-Rank Adaptation)​​:通过在原始权重旁添加低秩矩阵(而非直接修改权重)来微调模型,减少参数量。

    • ​DoRA​ ​:在 LoRA 基础上引入​​权重分解​​,进一步优化参数更新的方向和幅度,提高训练稳定性。

​2. 详解

1. 权重矩阵分解

输入与目标​

  • ​输入​ :预训练权重矩阵 (蓝色矩形)。
  • 目标​ :将 分解为​幅度(Magnitude) ​方向(Direction)

✅分解操作

1.1 计算幅度

  • ​表示矩阵的 ​​C范数​​(具体可能是列范数或Frobenius范数,需根据上下文确定)。

  • 幅度 是标量或对角矩阵(图中浅绿色矩形),表示权重的整体缩放因子。

1.2 计算方向

复制代码
复制代码
方向(浅黄色矩形)是归一化后的权重矩阵,保留原始权重的“方向”信息。

1.3 验证分解​

  • 重构公式:

    复制代码
  • 说明:分解后可通过幅度和方向重新组合得到原始权重,确保数学等价性。

  • 的范数 (单位范数)。

2. 微调训练

2.1 方向矩阵 的低秩适应(LoRA)

  • 低秩分解​
    • 对方向矩阵应用标准 LoRA:
      • 其中
    • A和 B是​可训练的低秩矩阵​(绿色矩形),r为秩(超参数)。
  • ​更新方向矩阵​
    • 微调后的方向矩阵:

​2.2 幅度的训练​

  • 幅度**** 直接作为​​可训练参数​​(绿色矩形),通过梯度下降调整。

    • 通过归一化确保方向矩阵的单位性。
  • ​可训练参数​​:

    • 低秩矩阵 A、B(方向调整)。

    • 幅度 m(全局缩放调整)。

  • ​冻结参数​​:

    • 原始方向 V(仅用于初始化,不更新)。

3. 代码

伪代码如下

python 复制代码
import torch
import torch.nn as nn

class DoRALayer(nn.Module):
  def __init__(self, d, r):
      super().__init__()
      # 初始化预训练权重 W0
      self.W0 = nn.Parameter(torch.randn(d, d))

      # 分解为幅度和方向
      self.m = nn.Parameter(torch.norm(self.W0, dim=0))  # 幅度(可训练)
      self.V = self.W0 / torch.norm(self.W0, dim=0)      # 方向(冻结)

      # LoRA 参数
      self.A = nn.Parameter(torch.randn(d, r))
      self.B = nn.Parameter(torch.zeros(r, d))

  def forward(self, x):
      V_prime = self.V + torch.matmul(self.B, self.A)  # V + BA
      V_prime_norm = torch.norm(V_prime, dim=0)
      W_prime = self.m * (V_prime / V_prime_norm)       # 合并权重
      return torch.matmul(x, W_prime.T)

4. 总结​

DoRA 的核心是通过​​权重分解 + 低秩适应​​,实现对预训练模型更精细的微调。其操作流程清晰分为两步:

  1. ​分解​​:提取权重的幅度和方向。

  2. ​微调​​:用 LoRA 调整方向,独立训练幅度。

    这种方法在保持参数效率的同时,提升了模型微调的灵活性和性能。

相关推荐
HAREWORK_FFF18 小时前
近几年,非技术岗转向AI岗位的现实可能性
人工智能
weixin_66818 小时前
深度分析:多模态、全模态、VLM、ASR、TTS、STT、OCR- AI分析分享
人工智能
LeonDL16818 小时前
基于YOLO11深度学习的衣物识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·pyqt5·yolo数据集·yolo11数据集·yolo11深度学习·衣物识别系统
犀思云18 小时前
企业总部网络全球化扩张:利用FusionWAN NaaS 破解“网络成本瓶颈”
网络·人工智能·机器人·智能仓储·专线
Data_Journal18 小时前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
陈天伟教授18 小时前
人工智能应用- 语言理解:09.大语言模型
人工智能·语言模型·自然语言处理
ASS-ASH18 小时前
AI时代之向量数据库概览
数据库·人工智能·python·llm·embedding·向量数据库·vlm
老百姓懂点AI18 小时前
[微服务] Istio流量治理:智能体来了(西南总部)AI调度官的熔断策略与AI agent指挥官的混沌工程
人工智能·微服务·istio
Daydream.V18 小时前
逻辑回归实例问题解决(LogisticRegression)
算法·机器学习·逻辑回归
芝士爱知识a18 小时前
2026年教资备考数字化生存指南:主流App深度测评与AI技术应用分析
人工智能·教资·ai教育·教育技术·教资面试·app测评·2026教资