一句话定义
面向「教模型新概念」的需求存在一条微调谱系:Textual Inversion 只学一个词嵌入、LoRA 给冻结权重加低秩增量、DreamBooth 全参数微调加先验保持,三者以「可学习参数量 ↔ 表达力」排成光谱,LoRA 因体积与效果的平衡成为事实标准。
为什么重要
开源图像模型生态的一半繁荣建立在 LoRA 上:角色、画风、服装、构图偏好的社区分享基本都以几十到几百 MB 的 LoRA 文件流转。理解谱系差异,才能回答「为什么 LoRA 这么小却有效」「训练多少张图够」「为什么我的 LoRA 学了画风丢了构图」这类日常问题,也才能在 kp-027 的一致性方案里正确选型。
前置知识
kp-008(三件套与 checkpoint 概念);kp-011(注意力层是参数的主要聚集地)。
核心概念
- Textual Inversion(文本反演):冻结全部权重,只优化一个新的 token 嵌入向量(几十 KB)。
- LoRA(Low-Rank Adaptation,低秩适配):冻结权重 W,训练低秩增量 ΔW = BA(B: d×r,A: r×k,r≪d)。
- rank(秩)r 与 alpha:r 是增量矩阵的容量旋钮(常用 4~64),alpha 是缩放系数(常设为 r 的倍数关系)。
- DreamBooth:全参数微调 + 「类先验保持」损失(用稀有标识符 + 同类样本防遗忘)。
- 目标层选择:LoRA 常注入交叉注意力的 q/k/v 投影层——恰是文本语义进入画面的通道。
原理与机制
三个方法对「往哪加知识」给出不同答案:
- Textual Inversion:概念完全塞进嵌入空间。网络一概不动,只教模型「把 token ⟨sks⟩ 理解为这组图」。优点是极小、可叠加;上限低——复杂画风一个向量装不下。
- LoRA:赌「微调所需的权重变化近似低秩」。对每个目标层,权重更新 ΔW = (alpha/r)·BA,前向为 Wx + ΔWx。秩 r 直接控制容量:r=8 学一个角色通常够,r=32+ 才可能学到复杂画风。产物只含 B、A 矩阵,体积为全量的 0.1%~5%;推理端可加权叠用、即插即拔。
- DreamBooth:全参数最重、表达最强,代价是训练资源需求大与灾难性遗忘风险;靠「先验保持」损失缓解,产出完整 checkpoint。
训练共同要素:小数据集(角色 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 Inversion | 1 个 token 嵌入 | ~10 KB 级 | 单一概念 | 3~10 张 |
| LoRA | 低秩增量(注意力层) | 10~500 MB | 角色/画风 | 15~100 张 |
| DreamBooth(全参) | 全部权重 | 数 GB | 最强、可改构图 | 5~30 张 + 先验集 |
直观类比
教一个画家新东西的三种深度:递一张写着「⟨小红⟩ 就是我家猫」的便签(Textual Inversion);给画家一套「附加笔触贴纸」贴在工具箱里、要用时贴上(LoRA);直接送画家去进修三个月重塑全部技法(DreamBooth)。
实例或案例
- 角色 LoRA 实操画像:20 张多角度照片统一触发词训练,r=16、20 个 epoch、学习率 1e-4,产物 144 MB;使用时触发词 + 权重 0.7~0.9 挂载。
- 画风 LoRA 过拟合现场:r 拉到 128 + 训练过久,任意提示词都输出同构图训练集复刻——容量与步数双超限。
- 多 LoRA 叠加:角色 LoRA 0.8 + 画风 LoRA 0.6,权重此消彼长需逐档试;权重和过高时互相「打架」出现语义污染。
常见误区
- 误区一:rank 越高越好。r 超出概念复杂度所需后,多余容量开始记忆训练集噪声,泛化反而下降。
- 误区二:LoRA 一定不能影响构图。默认注入位(注意力层)主要影响语义/风格;若训练时扩展注入位则可影响布局。
- 误区三:Textual Inversion 与 LoRA 是竞争关系。前者在嵌入空间、后者在权重空间,可以同时使用(嵌入定触发语义 + LoRA 定视觉特征)。
自测题
- 写出 LoRA 的前向表达式并解释零初始化的意义。
答案要点:W'x = Wx + (α/r)BAx;B=0 使起点等价原模型,训练从无扰动出发(同 ControlNet 零卷积哲学)。
- 三种微调按「可学参数量」排序并说出各自适用场景。
答案要点:Textual Inversion(单概念、极小数据)< LoRA(角色/画风,性价比)< 全参微调(最强表达、需防遗忘)。
- 为什么角色 LoRA 数据集要求多角度、多光照?
答案要点:防止概念与特定视角/光照绑定,让触发词对应「该主体的分布」而非若干固定画面。
与其他知识点的关系
kp-014 与本节共享「不动主干」的设计哲学但路径不同(旁路 vs 低秩增量);kp-016 的 IP-Adapter 提供免训练的替代方案;kp-027 的一致性生成把 LoRA 当核心组件。
延伸阅读
LoRA 原论文(ICLR 2022)第 4 节的参数效率分析;DreamBooth 论文(CVPR 2023)的先验保持损失设计。