M6-050M6: Multimodal & Generative ModelsDiffusion Models Foundations (DDPM)Hard
Mastery:
Diffusion Models Foundations (DDPM): 解释扩散模型的条件注入方式(cross-attention / concat / adaLN)。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 文本条件常用 cross-attention(U-Net)或 adaLN 调制(DiT);类别/低层条件常用 concat;可组合使用。
📌 Key Takeaways
- •cross-attention:隐状态查询条件(文本条件的主流)
- •adaLN(自适应层归一化):用条件调制归一化的 scale/shift
- •concat:把条件在通道维拼接(类别/掩码/低层条件)
📐 Mathematical Derivations
数学机理:<strong>三种条件注入方式</strong>。(1) <strong>Cross-Attention</strong>——把条件(如文本嵌入)作为 <strong>key/value</strong>,隐状态作为 <strong>query</strong>:Attn(Q=h, K=V=c);每个空间位置可'查询'条件的不同部分。<strong>特点</strong>——(a) <strong>灵活</strong>(条件长度可变,如不同长度的文本);(b) <strong>语义对齐</strong>(注意力权重可解释为'哪些词影响哪些区域');(c) <strong>主流</strong>(Stable Diffusion 的 U-Net 用 cross-attention 注入文本)。<strong>代价</strong>——额外的注意力计算(O(N·M),M 为条件长度)。(2) <strong>adaLN(Adaptive Layer Norm)</strong>——用条件<strong>调制归一化层</strong>的参数:h←γ(c)⊙LN(h)+β(c),其中 γ(c)、β(c) 由条件经 MLP 生成。<strong>特点</strong>——(a) <strong>计算便宜</strong>(只是逐元素缩放与平移,无注意力);(b) <strong>全局调制</strong>(所有位置用同一组 γ/β,适合'全局风格/类别'类条件);(c) <strong>DiT 的选择</strong>(DiT 用 adaLN-Zero 注入 t 与类别/文本条件)。<strong>局限</strong>——若条件很长(如长文本),用一个向量表示会丢信息;故 DiT 的文本条件常用'池化的文本嵌入 + adaLN'(简单但对长文本表达能力有限)。(3) <strong>Concat(拼接)</strong>——把条件在<strong>通道维</strong>(或序列维)与隐状态拼接:<code>[h; c]</code>。<strong>特点</strong>——(a) <strong>简单</strong>(无需额外模块);(b) 适合<strong>与隐状态同构</strong>的条件(如类别 embedding 广播、掩码、低层特征、参考图的潜变量);(c) <strong>不适合变长条件</strong>(文本长度可变,拼接需固定长度)。<strong>组合使用</strong>——实践中常组合:(a) <strong>Stable Diffusion</strong>——时间步用 adaLN(或加性嵌入)+ 文本用 cross-attention + 参考图用 concat(inpainting 的掩码与掩码图);(b) <strong>DiT</strong>——时间步与类别/池化文本用 adaLN-Zero;(c) <strong>ControlNet</strong>——在<strong>残差</strong>层面注入控制条件(见条件控制题);(d) <strong>IP-Adapter</strong>——用<strong>额外的 cross-attention</strong> 注入图像条件(与文本 cross-attention 并列)。<strong>选择依据</strong>——(a) <strong>条件长度可变/需细粒度对齐</strong>(文本)→ cross-attention;(b) <strong>全局/标量条件</strong>(时间步、类别、风格)→ adaLN;(c) <strong>与隐状态同构/固定长度</strong>(掩码、参考图潜变量)→ concat;(d) 可<strong>组合</strong>。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'条件的信息量与结构决定注入方式'</strong>——文本(长、变长、需对齐)用 cross-attention;标量/全局(时间步、类别)用 adaLN;同构(掩码)用 concat。② <strong>'DiT 用 adaLN 的取舍'</strong>——计算便宜、实现简单,但对'长文本'的表达力有限(故后续 DiT 变体也加了 cross-attention,如 PixArt-α 用 cross-attention 处理 T5 文本)。③ <strong>'adaLN-Zero 的巧妙'</strong>——把 γ/β 初始化为 0,使训练开始时'条件分支为恒等'(h←h),模型从'无条件'开始学;这提升了训练稳定性(见 adaLN-Zero 题)。④ <strong>'CFG 与条件注入的关系'</strong>——CFG 需要'有条件'与'无条件'两次前向;故条件注入方式需支持'关闭条件'(如把条件设为空/零)。⑤ <strong>'多条件的组合'</strong>——当有多个条件(文本 + 参考图 + 控制信号)时,需<strong>分别注入</strong>(cross-attention 各一路、或 concat + adaLN);这是 ControlNet/IP-Adapter 的设计空间。⑥ <strong>面试要点</strong>——被问'条件怎么注入',应给出'<strong>cross-attention(文本,灵活但贵)+ adaLN(全局条件,便宜)+ concat(同构条件)</strong>'与'<strong>选择依据(条件的信息量与结构)+ 可组合</strong>';能指出'DiT 用 adaLN 但对长文本表达力有限'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕用 concat 注入变长文本条件(长度不匹配)
- ✕认为一种注入方式适用于所有条件
🎯 Interviewer Follow-ups
- ?为什么 DiT 用 adaLN 而不是 cross-attention?
- ?不同条件的'信息量'如何影响选择?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.