` 来做 padding,导致 30+ 个几乎相同的 $\mathbf{v}^{\mathbf{eot}}$ 嵌入被扩散模型反复 attend,从而过拟合到具体样本;据此提出两个免训练、即插即用的推理期缓解策略(换 `` token + mask ``、或部分 mask padding 嵌入),在几乎不损画质的前提下把记忆化的 SSCD 从 ~1.0 压到 ~0.08。"> [论文解读] Memorization In Stable Diffusion Is Unexpectedly Driven by CLIP Embeddings
跳转至

Memorization In Stable Diffusion Is Unexpectedly Driven by CLIP Embeddings

会议: CVPR 2026
arXiv: 2605.02908
代码: 有(论文标注 Code is available)
领域: 扩散模型 / 图像生成 / AI 安全(记忆与隐私)
关键词: 记忆化(memorization)、CLIP 嵌入、padding 嵌入、Stable Diffusion、推理期缓解

一句话总结

作者把 Stable Diffusion 的"记忆化"(逐字复刻训练图像)归因到一个被忽视的结构缺陷——CLIP 的 tokenizer 用重复的 <eot> 来做 padding,导致 30+ 个几乎相同的 \(\mathbf{v}^{\mathbf{eot}}\) 嵌入被扩散模型反复 attend,从而过拟合到具体样本;据此提出两个免训练、即插即用的推理期缓解策略(换 <pad> token + mask <eot>、或部分 mask padding 嵌入),在几乎不损画质的前提下把记忆化的 SSCD 从 ~1.0 压到 ~0.08。

研究背景与动机

领域现状:Stable Diffusion 等文生图扩散模型存在"记忆化"风险——在某些 prompt 下会逐字复刻训练集里的图像,带来隐私与版权隐患。已有研究主要从模型内部动态找原因:数据集去重、检测 trigger token、分析 cross-attention 模式(如 Chen et al. 的 "Bright Ending"——记忆化时注意力在末几步异常集中到 <eot>)。

现有痛点:这些工作几乎都聚焦"模型内部"或"token 层面",而文本嵌入空间——也就是 prompt 真正喂给扩散模型的接口——基本没人系统研究。更关键的是,token 层面的"重要性"在被 CLIP 编码之后不一定还成立:CLIP 是因果编码器,会把整句信息聚合进 \(\mathbf{v}^{\mathbf{eot}}\),单个 prompt token 嵌入 \(\mathbf{v}^{\mathbf{pr}}_i\) 的作用被大幅吸收。

核心矛盾:CLIP 的训练目标与扩散模型的使用方式存在根本错位。CLIP 用对比学习只显式优化 \(\mathbf{v}^{\mathbf{eot}}\) 来表示整句语义,\(\mathbf{v}^{\mathbf{pr}}_i\) 和 padding 嵌入 \(\mathbf{v}^{\mathbf{pad}}_i\) 都没被显式训练;而扩散模型在 cross-attention 里对全部 77 个嵌入一视同仁地 condition,于是暴露在大量"未被优化"的嵌入面前。

本文目标:把分析视角从 token 层面下沉到嵌入层面,量化序列里每一类嵌入(\(\mathbf{v}^{\mathbf{sot}}\) / \(\mathbf{v}^{\mathbf{pr}}\) / \(\mathbf{v}^{\mathbf{eot}}\) / \(\mathbf{v}^{\mathbf{pad}}\))到底对记忆化贡献多少,并据此给出缓解手段。

切入角度 + 核心 idea:做一系列"受控嵌入干预"——把某一类嵌入 mask 成零向量、或替换成 \(\mathbf{v}^{\mathbf{eot}}\),看生成结果变不变。结果出人意料:prompt 嵌入几乎没用,padding 嵌入才是记忆化主力。再追根溯源,发现 padding 嵌入之所以重要,是因为 v1.4 的 tokenizer 用重复 <eot> 填充,使 \(\mathbf{v}^{\mathbf{pad}}_i\) 本质是 \(\mathbf{v}^{\mathbf{eot}}\) 的结构性复制,无意中放大了它的影响。一句话:记忆化不是数据复制驱动,而是 <eot> 在 padding 区被复制了几十遍驱动的

方法详解

整体框架

本文是一篇"分析 + 缓解"论文。整体逻辑是三步走:先用受控嵌入干预定位真正驱动记忆化的嵌入(发现是 padding 而非 prompt),再归因到 tokenizer 用 <eot> 做 padding 的结构缺陷(并用 v1.4 vs v2.1 的对照交叉验证),最后据此对症下药给出两个免训练的推理期缓解策略。所有干预都在固定长度 \(L=n+d+2\)(通常 77)的嵌入序列上做,其中

\[\mathbf{Emb}=[\mathbf{v}^{\mathbf{sot}},\,\mathbf{v}^{\mathbf{pr}}_1,\dots,\mathbf{v}^{\mathbf{pr}}_n,\,\mathbf{v}^{\mathbf{eot}},\,\mathbf{v}^{\mathbf{pad}}_1,\dots,\mathbf{v}^{\mathbf{pad}}_d]\]
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["77 维 CLIP 嵌入序列<br/>sot / pr / eot / pad"] --> B["嵌入级受控干预<br/>mask 或替换各类嵌入"]
    B -->|"pr 几乎没用<br/>pad 才是主力"| C["归因:eot 在 pad 区<br/>被重复复制"]
    C -->|"v1.4 vs v2.1 对照验证"| D["缓解1:换 pad token<br/>为 ! 并 mask eot"]
    C --> E["缓解2:部分 mask<br/>pad 嵌入(70%)"]
    D --> F["记忆化消失<br/>画质/对齐不掉"]
    E --> F

关键设计

1. 嵌入级受控干预:证明 prompt 嵌入没用、padding 嵌入才是主力

痛点是过去都在 token 层面找记忆化原因,但 CLIP 编码后 token 的重要性会被重排,必须在嵌入层面重新量化。作者设计了一组"留谁去谁"的干预实验,在 458 个记忆化 prompt 上测量干预后图像与原始生成图像的 SSCD(越接近 0.5 表示与原图越像、记忆化越强;接近 0 表示生成被破坏)。针对 prompt 嵌入:(a) 只留 \(\mathbf{v}^{\mathbf{pr}}_i\)、把 \(\mathbf{v}^{\mathbf{eot}}\)\(\mathbf{v}^{\mathbf{pad}}_i\) 全 mask 成零 → 图像崩溃(SSCD 0.04);(c) 反过来只 mask 掉 \(\mathbf{v}^{\mathbf{pr}}_i\)、保留其余 → 图像几乎不变(SSCD 0.42)。这说明 \(\mathbf{v}^{\mathbf{pr}}_i\) 单独撑不起生成,它"可有可无"。针对 padding:(h) 单独 mask 掉 \(\mathbf{v}^{\mathbf{pad}}_i\) → 图像崩溃(SSCD 0.07);(g) 把 \(\mathbf{v}^{\mathbf{pr}}_i\)\(\mathbf{v}^{\mathbf{eot}}\) 都换成 padding 嵌入的均值、只靠 padding → 仍能生成结构连贯的图(SSCD 0.50)。

为什么有效:这组干预把"贡献度"从模糊的注意力可视化变成可量化的 SSCD 对照,得到反直觉的两个 Claim——prompt 嵌入对记忆化贡献极小、padding 嵌入贡献巨大,直接推翻了"padding 只是占位符、不携带语义"的普遍假设(Toker et al. 曾论证冻结文本编码器下 \(\mathbf{v}^{\mathbf{pad}}\) 不太可能有意义)。注意力可视化进一步佐证:不只 \(\mathbf{v}^{\mathbf{eot}}\) 在末步注意力飙高,紧邻它的多个 \(\mathbf{v}^{\mathbf{pad}}\) 同样被高度 attend,二者联合放大信号

2. 归因到 <eot> 的结构性复制,并用 v1.4 vs v2.1 交叉验证

既然 padding 这么重要,那它为什么重要?作者指出根因在 v1.4 的 tokenizer:短于 77 token 的 prompt 用重复插入 <eot> 来 padding,于是同一个 <eot> token 在序列里出现几十次,产生的嵌入几乎完全相同(附录给了 PCA/t-SNE 佐证)。由于 CLIP 只显式优化 \(\mathbf{v}^{\mathbf{eot}}\),它语义上远比别的嵌入"重";现在它被复制几十遍,扩散模型 condition 时这个本就强势的嵌入被无意放大,导致对具体样本过拟合——尤其短 prompt(padding 占了大半序列)。作者实测:此前所有被报告的记忆化 prompt 都短于 40 token,意味着有 30+ 个近似复制的 \(\mathbf{v}^{\mathbf{eot}}\)

这一归因最漂亮的证据是 v1.4 与 v2.1 的天然对照:v2.1 换用 OpenCLIP(本意是提性能),却顺带把 <eot> 从 padding 位置移除,于是 v2.1 的精确匹配记忆化几乎消失。过去这常被归功于数据去重,但已有工作指出去重并不能完全消除记忆化。作者论证:真正起决定作用的是 padding 区不再有 <eot> 复制——这个机制与本文中心论点严丝合缝,构成强有力的交叉验证

3. 缓解一:解耦 padding 与 <eot>——换 <pad> token + mask <eot>

既然根因是 <eot> 在 padding 区被复制,最直接的修法就是在 tokenizer 层面把默认 <pad>(原本就是 <eot>)改成一个语义中性的 ! token,让 padding 产生的嵌入与 \(\mathbf{v}^{\mathbf{eot}}\) 不再相同,从而解耦 \(\mathbf{v}^{\mathbf{pad}}\)\(\mathbf{v}^{\mathbf{eot}}\)。光这一步就大幅降记忆化(SSCD 0.14);再把那唯一一个真正的 \(\mathbf{v}^{\mathbf{eot}}\) 也替换成零向量,记忆化几乎被完全消除(SSCD 0.08)。关键是它不损画质——CLIPScore、Aesthetic Score 与原始生成持平,还把跨 seed 的多样性(LPIPS)从 0.04 拉回正常,恢复了同 prompt 下应有的随机性。这种"直接拆掉病根"的修法不需要检测哪些 prompt 是记忆化的,可无脑套用

4. 缓解二:部分 mask padding 嵌入(70%)作为灵活替代

与缓解一同源但不改 tokenizer:既然记忆化来自重复 \(\mathbf{v}^{\mathbf{eot}}\) 经由 \(\mathbf{v}^{\mathbf{pad}}_i\) 的放大,那就直接在嵌入层 mask 掉一部分紧邻 \(\mathbf{v}^{\mathbf{eot}}\)\(\mathbf{v}^{\mathbf{pad}}_i\)。但全 mask(100%)常导致生成崩溃或明显退化,全留又压不住记忆化,于是作者在"抑制"与"稳定"之间折中,经验性地 mask 70%——既显著降记忆化(SSCD 0.10),又几乎不掉画质。它的优势是更灵活:不动 tokenizer、不重训,可直接塞进现有推理 pipeline,并提供细粒度可调的抑制强度

损失函数 / 训练策略

本文不涉及任何训练或微调,两个缓解策略都是纯推理期、零额外计算开销的即插即用操作(改 tokenizer 的 padding token / 在嵌入序列上做 mask),不需要先检测 prompt 是否记忆化,推理时间与无缓解时基本相同。

实验关键数据

实验设置:模型用 Stable Diffusion v1.4(记忆化研究的标准 benchmark)。数据集在 Webster 的 86 个 Matching Verbatim (MV) prompt 基础上,从 Membench 用两条严苛标准(精确匹配 + 10 个 seed 下 SSCD≥0.5 的一致性)筛出 372 个,合计 458 个记忆化 prompt;另用 LAION/COCO/Lexica 各 500 个非记忆化 prompt 测稳健性。指标:SSCD 判记忆化(与"用原始嵌入生成的图"比,≥0.5 算记忆化)、CLIPScore 测文图对齐、Aesthetic Score 测画质、LPIPS 测跨 seed 多样性。

主实验:缓解效果对比(记忆化 prompt)

类别 方法 SSCD↓ CLIPScore↑ Aesthetic↑ LPIPS↑
本文(换 pad token) <pad>! & \(\mathbf{v}^{\mathbf{eot}}\)→0 0.08 0.31 5.09 0.67
本文(换 pad token) <pad>! 0.14 0.32 5.21 0.64
本文(mask padding) \(\mathbf{v}^{\mathbf{pad}}_i\)→0 (70%) 0.10 0.31 5.13 0.66
先前工作 Ren et al. 0.09 0.30 5.18 0.65
先前工作 Wen et al. 0.51 0.32 5.22 0.49
先前工作 RTA 0.58 0.31 5.23 0.42
先前工作 RNA 0.53 0.31 5.20 0.44

本文方法把 SSCD 压到 0.08~0.14(记忆化基本消除),同时 LPIPS 最高(多样性恢复最好);RTA/RNA/Wen et al. 的 SSCD 仍 >0.5(常压不住记忆化);Ren et al. SSCD 接近(0.09)但论文指出它会损画质和语义对齐。

分析实验:嵌入干预(揭示谁驱动记忆化)

干预 操作 SSCD CLIPScore Aesthetic 含义
(a) 只留 \(\mathbf{v}^{\mathbf{pr}}\),mask eot+pad 0.04 0.25 5.02 prompt 嵌入单独撑不起生成
(c) 只 mask \(\mathbf{v}^{\mathbf{pr}}\) 0.42 0.29 5.15 去掉 prompt 嵌入图几乎不变
(f) mask \(\mathbf{v}^{\mathbf{eot}}\) 0.95 0.32 5.31 去掉 eot 仍记忆化(不只靠 eot)
(g) 只靠 \(\mathbf{v}^{\mathbf{pad}}\)(均值补位) 0.50 0.29 5.09 padding 能替代 eot 撑起生成
(h) mask \(\mathbf{v}^{\mathbf{pad}}\) 0.07 0.29 5.10 去掉 padding 生成崩溃

关键发现

  • 贡献度反直觉:mask 掉全部 prompt 嵌入(c)SSCD 仍有 0.42(图几乎不变),而 mask 掉 padding 嵌入(h)SSCD 暴跌到 0.07(崩溃)——padding 才是记忆化主力,prompt 嵌入可有可无。
  • <eot> 不是唯一:单独 mask \(\mathbf{v}^{\mathbf{eot}}\)(f)SSCD 高达 0.95,说明记忆化不只靠那一个 <eot>,而是它在 padding 区的几十个复制体一起作祟。
  • 泛化无副作用:在 1500 个非记忆化 prompt 上,本文方法的 CLIPScore(0.34~0.35)和 Aesthetic(5.41~5.49)与原始生成(0.35 / 5.47)持平,证明可无脑全局套用而不伤正常生成。
  • 70% 是甜点:部分 mask 中 70% 在"抑制记忆化"与"保画质"间最平衡,100% 全 mask 反而常崩溃。

亮点与洞察

  • 把记忆化从"数据问题"重新定义为"嵌入结构问题":以往主流归因是训练集重复样本,本文揭示了一条独立的、嵌入层面的新通路——CLIP tokenizer 用 <eot> 当 padding 这个工程细节本身就在制造记忆化。这种"bug 即根因"的视角很启发人。
  • v1.4 vs v2.1 的天然对照堪称神来之笔:v2.1 换 OpenCLIP 时无意去掉了 padding 区的 <eot>,记忆化随之消失。作者把这个"无心插柳"的工程改动当成验证自己机制假说的对照组,比纯消融更有说服力。
  • 干预设计的"留谁去谁"范式可迁移:用 mask/替换某类嵌入再看 SSCD 变化来量化贡献度,这套受控干预思路可直接用于分析任意条件生成模型里"哪部分条件信号真正起作用"。
  • 缓解极致简单:核心修法就是"把 padding token 从 <eot> 换成 !"——一行 tokenizer 配置,零训练、零额外开销、无需检测,工程上几乎零成本就能部署。

局限与展望

  • 只在 SD v1.4 上系统验证:作者明确指出 SD v3、FLUX 等新模型尚无系统的记忆化 benchmark,未做对比;机制结论是否在新一代架构(不同文本编码器、不同 padding 策略)成立尚不确定。
  • 缓解依赖经验阈值:部分 mask 的 70% 是经验性甜点,缺乏理论指导;不同 prompt 长度/数据分布下最优比例可能漂移,全 mask 会崩溃说明该策略对超参敏感。
  • "换 token 为 !"略显 ad-hoc:用感叹号作中性 padding 是个工程 trick,是否对所有 prompt 都中性、会不会在极少数情况引入伪影,论文未深究。
  • 未触及训练期治理:两个策略都是推理期补丁,治标;从根上重训一个 padding 设计更合理的文本编码器(如 v2.1 路线)是否更彻底,留作展望。

相关工作与启发

  • vs Chen et al.("Bright Ending"): 他们发现记忆化时末步注意力异常集中到 <eot>,把焦点放在单个 \(\mathbf{v}^{\mathbf{eot}}\);本文证明这一效应不止于 <eot>——紧邻的多个 \(\mathbf{v}^{\mathbf{pad}}\) 同样高注意力,二者联合驱动,从而把机制从"单嵌入"扩展到"嵌入复制簇"。
  • vs Carlini et al. / 数据去重路线: 他们把记忆化主要归因于训练集重复样本并以过滤缓解;本文论证存在一条与数据复制无关的嵌入级通路,并用 v1.4/v2.1 对照说明去重不足以解释 v2.1 记忆化的消失。
  • vs Wen et al. / RTA / RNA / Ren et al.(推理期缓解): 这些方法靠检测 trigger token、扰动 token 或调初始噪声,要么压不住记忆化(SSCD>0.5),要么以损画质为代价(Ren et al.);本文直击根因(解耦 padding 与 <eot>),在同等甚至更低 SSCD 下保住画质与多样性,且无需先检测。
  • vs Toker et al.: 他们论证冻结文本编码器下 \(\mathbf{v}^{\mathbf{pad}}\) 不太可能携带有意义信息;本文实验直接反驳——padding 嵌入在记忆化生成中作用几乎与 \(\mathbf{v}^{\mathbf{eot}}\) 同强。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ 把记忆化根因从"数据复制"翻新到"<eot> 在 padding 区被结构性复制",视角反直觉且证据扎实
  • 实验充分度: ⭐⭐⭐⭐ 干预设计系统、有 v1.4/v2.1 交叉验证,但只在 SD v1.4 上验证,未覆盖新一代模型
  • 写作质量: ⭐⭐⭐⭐⭐ 逻辑链清晰(定位→归因→缓解),符号体系统一,论证步步为营
  • 价值: ⭐⭐⭐⭐⭐ 揭示了一个被忽视的结构缺陷,缓解方案免训练、零开销、即插即用,对隐私/版权安全有直接实用价值