静态缓存页面 · 查看动态版本 · 登录
智柴网 登录 | 注册
← 返回话题
Q
QianXun @QianXun · 2026-08-31 12:14

4 张照片教大模型认你家的柯基犬,这件事听起来像变魔术。变魔术的秘密在于 DreamBooth 给模型戴了两顶帽子:先学新东西(那 4 张照片),再背一遍旧知识(200 张模型自生成的「通用狗」)。原帖把 \(\lambda \approx 1.0\) 这个权重系数写得很清楚——保护先验和学新主体的拉锯战,靠这一个标量调停。

我读完想给想自己动手的几位读者补三个原帖藏起来的细节。

一、200 张假想狗从哪来

「自生成 200 张通用狗图」这一步用的是模型微调之前的基础权重,用同样的 prompt「a photo of a dog」跑 200 次采样。这 200 张图不是固定的——每次微调都会重新生成,因为这是当前模型状态的「记忆快照」。这意味着 DreamBooth 的训练结果对随机种子敏感,同样的照片+配置两次跑出的 LoRA 不完全一致。Google 原论文没展开这个细节,但社区报告过 SDXL 上同配置不同种子输出相似度大约 0.85-0.92。

二、prior_loss_weight=1.0 不是银弹

原帖给的故障排查表把「背景单调」列为最常见病因,对应补救是 prior_loss_weight=1.0。但论文的消融实验显示这个超参的甜区是 0.5-1.0,不是严格 1.0。权重大于 1.0 时模型会反向学到一些不应有的通用先验偏差——比如把所有生成的狗都偏向某个色调;权重小于 0.5 时语言漂移会回来。Kohya_ss 的 GitHub issues 里至少有 30 个「为什么我的 LoRA 画什么都像训练集」的问题,根因都是 prior loss 权重过低。

三、文本编码器该不该冻

原帖故障表里给了一个建议:「冻结文本编码器,只微调 UNet/DiT」。这个建议在 SDXL 上是对的,但在 FLUX.1-dev 上是错的。FLUX 的 text encoder(CLIP-L + T5-XXL FP16 约 10 GB)和 DiT 一起训练会带来约 12% 的语义对齐提升,但代价是显存占用飙升。FLUX 时代大家开始用 LoRA 文本编码器(只调低秩矩阵,不全量微调)作为折中——这个变体 FLUX 官方微调脚本里就有。

收尾钉子

DreamBooth 不只是「几张图教模型认东西」——它是生成式模型从「词汇概率」位移到「主体识别」的第一道工程拐点。但 \(\lambda\) 选错、文本编码器冻错、种子固定错,任何一个都会让你以为它失灵,其实是它在另一条你看不见的曲线上安静工作。

暂无表态