LoRA: Low-Rank Adaptation of Large Language Models

论文:https://arxiv.org/abs/2106.09685

ABSTRACT

LoRA(Low-Rank Adaptation,低秩自适应)是一种参数高效微调(PEFT)技术。它的核心思想是:冻结预训练大模型的原始权重,只训练少量新增的"旁路"参数,从而以极低的成本实现模型微调。

论文的核心假设是:模型在微调时的权重更新矩阵 ΔW\Delta WΔW 是低秩(Low-Rank)的。这意味着巨大的参数变化实际上可以用极小的"内在维度"来表征。

  • 数学表达 :将全量更新 ΔW\Delta WΔW 分解为两个小矩阵的乘积:
    Wnew=Wold+ΔW=Wold+BAW_{new} = W_{old} + \Delta W = W_{old} + BAWnew=Wold+ΔW=Wold+BA
    其中 B∈Rd×rB \in \mathbb{R}^{d \times r}B∈Rd×r, A∈Rr×kA \in \mathbb{R}^{r \times k}A∈Rr×k,且秩 r≪min⁡(d,k)r \ll \min(d,k)r≪min(d,k)。

Section 4.1 (Method)

理解算法原理的核心

Section 4.2 (Applying to Transformer)

详细说明了 LoRA 应优先应用于 WqW_qWq 和 WvW_vWv 矩阵

Experiments

提供了关于秩(rank)选择、α\alphaα 缩放因子的实证分析。

论文实践-YOLO

1. 数学原理:低秩分解

LoRA 基于一个关键假设:权重更新矩阵是低秩的。这意味着模型在适应新任务时,不需要修改所有参数,只需要一个很小的"增量"。

  • 传统微调 :更新整个权重矩阵 WWW(参数量巨大)。
  • LoRA 微调 :Wnew=Wold+ΔWW_{new} = W_{old} + \Delta WWnew=Wold+ΔW,其中 ΔW\Delta WΔW 被分解为两个小矩阵的乘积:ΔW=A×B\Delta W = A \times BΔW=A×B。
    • A (降维矩阵)和 B(升维矩阵)的秩(rank)远小于原始权重矩阵的维度。
    • 效果 :原本需要训练 m×nm \times nm×n 个参数,现在只需训练 (m+n)×r(m + n) \times r(m+n)×r 个参数(rrr 是极小的秩)。

2. 架构实现:旁路适配

在代码层面,LoRA 不是修改原有层,而是插入新的 Adapter(适配器)

python 复制代码
# 原始前向传播
output = W * x

# 加入 LoRA 后的前向传播
output = W * x + (A * B) * x

关键特性

  • 冻结原权重 :WWW 保持预训练状态,不计算梯度。
  • 仅训练新增参数 :只更新 AAA 和 BBB 的权重。
  • 可合并 :训练完成后,可以将 ΔW\Delta WΔW 合并回 WWW,推理时零开销。

在 Ultralytics 的 YOLO 配置文件中,LoRA 通常通过以下参数控制:

yaml 复制代码
# 启用 LoRA
lora: true

# 关键配置项
lora_rank: 4          # 秩 (r),通常为 4, 8, 16
lora_alpha: 8         # 缩放系数 (alpha)
lora_dropout: 0.05    # 防止过拟合

# 指定应用层(YOLO 特有)
lora_targets: ['model.0.conv', 'model.1.cv2.conv']  # 通常针对卷积层或注意力层
参数 作用 建议值(YOLO)
rank ( r ) 控制适配器的参数量,越大能力越强但越慢 4 / 8 / 16
alpha 控制更新权重的缩放比例 通常设为 rank 的 2 倍
dropout 正则化,防止小数据集过拟合 0.05 - 0.1

对于目标检测任务,LoRA 具有独特的优势:

  1. 任务适配:YOLO 预训练模型(如 COCO)泛化能力已很强,LoRA 只需微调少量参数即可适应特定场景(如医疗影像、工业质检)。
  2. 资源友好:目标检测模型通常较大(如 YOLOv8l、YOLOv9x),全量微调成本极高,LoRA 是性价比最高的方案。
  3. 快速迭代:允许在单张消费级 GPU 上快速实验多个微调任务。
相关推荐
aqi0020 小时前
15天学会AI应用开发(七)有了大模型为什么还要引入RAG
人工智能·python·大模型·ai编程·ai应用
用户51914958484521 小时前
libcurl Headers API 释放后重利用漏洞:跨请求复用头句柄导致堆内存安全风险
人工智能·aigc
踩蚂蚁21 小时前
自定义语音唤醒词:从训练到部署的完整链路实践
人工智能
用户51914958484521 小时前
CVE-2025-1094 PostgreSQL SQL注入与WebSocket劫持远程代码执行利用工具
人工智能·aigc
IT_陈寒1 天前
SpringBoot自动配置这个坑,我踩进去又爬出来了
前端·人工智能·后端
冬奇Lab1 天前
Agent 系列(23):Web Agent——让 Agent 真正浏览网页
人工智能·llm·agent
冬奇Lab1 天前
每日一个开源项目(第135篇):codebase-memory-mcp - 给 AI Agent 一张代码库的知识图谱
人工智能·开源·llm