LoRA 与微调谱系

进阶 约 30 分钟 LoRADreamBoothTextual Inversion微调个性化进阶专题
前置知识点(建议先学)
学习状态:

一句话定义

面向「教模型新概念」的需求存在一条微调谱系:Textual Inversion 只学一个词嵌入、LoRA 给冻结权重加低秩增量、DreamBooth 全参数微调加先验保持,三者以「可学习参数量 ↔ 表达力」排成光谱,LoRA 因体积与效果的平衡成为事实标准。

为什么重要

开源图像模型生态的一半繁荣建立在 LoRA 上:角色、画风、服装、构图偏好的社区分享基本都以几十到几百 MB 的 LoRA 文件流转。理解谱系差异,才能回答「为什么 LoRA 这么小却有效」「训练多少张图够」「为什么我的 LoRA 学了画风丢了构图」这类日常问题,也才能在 kp-027 的一致性方案里正确选型。

前置知识

kp-008(三件套与 checkpoint 概念);kp-011(注意力层是参数的主要聚集地)。

核心概念

原理与机制

三个方法对「往哪加知识」给出不同答案:

训练共同要素:小数据集(角色 15~40 张、画风 30~100 张为社区常见量级)、低学习率(1e-4 级别用于 LoRA)、正则图像或先验损失防遗忘、打标(caption)决定概念边界。注入位置决定学什么:只注入注意力 q/k/v 学语义与风格;把扩散中间层也注入则可影响构图——「LoRA 学不了构图」是常见但不准确的概括,准确说法是默认注入位不覆盖布局。

公式与推导

LoRA 前向与初始化:

W'x = Wx + ΔWx = Wx + αr B A x,  A ∼ 𝒩(0, σ²I),B = 0(初始 ΔW = 0)

B 零初始化保证训练起点与原模型完全一致(与 kp-014 零卷积同一哲学)。低秩假设的直觉:微调一个概念的权重变化集中在少数语义方向上,全量更新的变化矩阵谱近似低秩——原论文在大语言模型上验证,后沿用到扩散注意力层。

图示

方法可学参数量产物体积表达上限典型数据量
Textual Inversion1 个 token 嵌入~10 KB 级单一概念3~10 张
LoRA低秩增量(注意力层)10~500 MB角色/画风15~100 张
DreamBooth(全参)全部权重数 GB最强、可改构图5~30 张 + 先验集

直观类比

教一个画家新东西的三种深度:递一张写着「⟨小红⟩ 就是我家猫」的便签(Textual Inversion);给画家一套「附加笔触贴纸」贴在工具箱里、要用时贴上(LoRA);直接送画家去进修三个月重塑全部技法(DreamBooth)。

实例或案例

常见误区

自测题

  1. 写出 LoRA 的前向表达式并解释零初始化的意义。

答案要点:W'x = Wx + (α/r)BAx;B=0 使起点等价原模型,训练从无扰动出发(同 ControlNet 零卷积哲学)。

  1. 三种微调按「可学参数量」排序并说出各自适用场景。

答案要点:Textual Inversion(单概念、极小数据)< LoRA(角色/画风,性价比)< 全参微调(最强表达、需防遗忘)。

  1. 为什么角色 LoRA 数据集要求多角度、多光照?

答案要点:防止概念与特定视角/光照绑定,让触发词对应「该主体的分布」而非若干固定画面。

与其他知识点的关系

kp-014 与本节共享「不动主干」的设计哲学但路径不同(旁路 vs 低秩增量);kp-016 的 IP-Adapter 提供免训练的替代方案;kp-027 的一致性生成把 LoRA 当核心组件。

延伸阅读

LoRA 原论文(ICLR 2022)第 4 节的参数效率分析;DreamBooth 论文(CVPR 2023)的先验保持损失设计。

相关知识点