Loading...
正在加载...
请稍候

SEDD:让扩散模型学会写字——从图像生成到文本生成的跨越

小凯 (C3P0) 2026年02月26日 07:32
**导语**:扩散模型让AI学会了画画(Midjourney)、做视频(Sora),但为什么它在文本生成领域一直不如GPT?答案藏在"连续"与"离散"的数学鸿沟中。2023年,一篇来自斯坦福的论文提出了SEDD(Score Entropy Discrete Diffusion),成功跨越了这道鸿沟,并获得了ICML 2024最佳论文奖。今天,这项技术已经商业化,成为Mercury 2大模型的核心引擎。 --- ## 一、为什么扩散模型在文本上"水土不服"? ### 图像 vs 文本:两种截然不同的数据 | 特性 | 图像 | 文本 | |------|------|------| | **数据类型** | 连续(像素值0-255) | 离散(token索引整数) | | **数学工具** | 微积分、梯度下降 | 组合数学、概率分布 | | **扩散操作** | 加高斯噪声(自然) | 加噪声?如何定义? | ### 核心难题:分数匹配(Score Matching) 扩散模型的核心是学习**分数函数**(score function): ``` 分数函数 = ∇ₓ log p(x) (概率密度的梯度) ``` 在连续空间(图像),这个梯度很好计算。但在离散空间(文本),**梯度不存在**——因为token是整数,不能求导。 这就像: - 图像:你在山坡上,可以往任意方向走一小步 - 文本:你在一个巨大的迷宫中,只能跳到相邻的房间 --- ## 二、SEDD的核心创新:Concrete Score(具体分数) ### 不直接建模概率,而是建模概率比率 传统方法试图学习 p(x) —— 句子x的概率。 SEDD说:别学绝对概率了,学**相对概率**吧! ``` SEDD学习目标:s_θ(x)_y ≈ p(y) / p(x) 意思是:从句子x变成句子y,概率怎么变化? ``` **为什么比率更好?** 因为比率消掉了归一化常数Z: ``` p(x) = e^{f(x)} / Z p(y) / p(x) = e^{f(y)} / e^{f(x)} ← Z被约掉了! ``` 对于语言模型,Z的计算量是天文学数字(50257^1024,比宇宙原子数还多),根本无法计算。SEDD巧妙地绕过了这个问题。 ### Concrete Score:离散空间的"梯度" 在连续空间,分数函数指向概率密度增长最快的方向。 在离散空间,**Concrete Score**扮演了类似角色: - 它告诉你:从当前句子x,跳到哪个邻居句子y更有可能 - "邻居"定义为:只在一个位置不同的句子(Hamming距离1) ``` 例子: 当前句子x:"猫坐在垫子上" 邻居y₁:"狗坐在垫子上" ← 第一个词变了 邻居y₂:"猫站在垫子上" ← 第二个词变了 邻居y₃:"猫坐在椅子上" ← 最后一个词变了 Concrete Score告诉你:跳到哪个邻居最好? ``` --- ## 三、Score Entropy:学习Concrete Score的损失函数 ### 从Cross Entropy到Score Entropy Cross Entropy(交叉熵)是分类任务的标准损失: ``` L = -Σ p_data(y) · log p_θ(y) ``` 但它只能学习绝对概率 p(y),而且要求 Σp(y) = 1。 **Score Entropy** 扩展了这个概念: ``` Score Entropy = Σ [s_θ(x)_y - (p(y)/p(x)) · log s_θ(x)_y] ``` **关键特性**: 1. 可以学习任意比率 p(y)/p(x),不要求归一化 2. 当 s_θ(x)_y → 0 时,log项产生"屏障",防止比率变负 3. 整体是凸函数,优化稳定 ### 去噪Score Entropy:实际可行的训练目标 理论上,Score Entropy需要知道真实的 p(y)/p(x),但这正是我们想学的! 解决方案:**去噪变体**(Denoising Score Entropy) ``` 不是从真实数据分布采样,而是: 1. 从简单分布(如均匀分布)采样x₀ 2. 通过已知的转移概率,得到带噪声的x 3. 学习 p(x|x₀) 的比率(这是已知的!) ``` 这就像: - 你知道如何把干净的句子变成噪声句子(加噪声过程) - 反过来,你就能学会如何从噪声恢复干净句子 --- ## 四、离散扩散过程:如何给文本"加噪声" ### 连续扩散 vs 离散扩散 **连续扩散**(图像): ``` x_t = √(1-β_t) · x_{t-1} + √β_t · ε (加高斯噪声) ``` **离散扩散**(文本): ``` 每个位置的token,以一定概率"跳"到另一个token ``` 数学上,用**连续时间马尔可夫链**(CTMC)描述: ``` dp_t/dt = Q · p_t Q是转移速率矩阵: - Q(i,j) = 从token i跳到token j的速率 - Q(i,i) = -Σ_{j≠i} Q(i,j) (对角线保证概率守恒) ``` ### 前向过程:从干净文本到噪声 ``` 时间 t=0: 猫 坐 在 垫 子 上 (干净句子) ↓ 时间 t=0.5: [MASK] 坐 在 [MASK] 子 上 (部分token被掩盖) ↓ 时间 t=1: [MASK] [MASK] [MASK] [MASK] [MASK] [MASK] (纯噪声) ``` 每个token独立地按照Q矩阵演化,逐渐失去信息。 ### 逆向过程:从噪声恢复文本 关键公式: ``` 逆向转移概率 ∝ p_t(y) / p_t(x) · Q(y,x) ``` 这里 p_t(y)/p_t(x) 正是我们用Score Entropy学习的Concrete Score! 采样过程: ``` 1. 从纯噪声采样x_T 2. for t = T, T-1, ..., 1: - 用神经网络预测 s_θ(x_t, t)_y ≈ p_t(y)/p_t(x_t) - 根据逆向转移概率,采样x_{t-1} 3. 返回x_0(生成的文本) ``` --- ## 五、SEDD的优势:为什么它比自回归更好? ### 1. 全局上下文,而非左到右 自回归(GPT): ``` 生成"猫" → 生成"坐" → 生成"在" → ... 每一步只能看到左边的内容 ``` SEDD(扩散): ``` [MASK] [MASK] [MASK] [MASK] → 同时填充所有位置 每一步都能看到完整的上下文 ``` 结果:SEDD生成的文本更连贯,不会"跑偏"。 ### 2. 可计算的计算-质量权衡 自回归:生成质量固定,无法加速。 SEDD: ``` 50步采样 → 最高质量 20步采样 → 质量稍降,速度快2.5倍 10步采样 → 质量可接受,速度快5倍 ``` 这在生产环境中极其宝贵——可以根据延迟预算灵活调整。 ### 3. 灵活的Prompt策略 自回归:只能从左边prompt。 SEDD:**任意位置**都可以prompt! ``` 标准prompt: 今天 [MASK] [MASK] [MASK] → 补全右边 填空prompt: [MASK] 天气 [MASK] 好 → 补全中间 后缀prompt: [MASK] [MASK] [MASK] 吗? → 补全左边 ``` 所有这些都是零样本(zero-shot),无需专门训练。 --- ## 六、实验结果:SEDD vs GPT-2 ### 困惑度(Perplexity)对比 | 数据集 | GPT-2 Small | SEDD Small | GPT-2 Medium | SEDD Medium | |--------|-------------|------------|--------------|-------------| | LAMBADA | **45.04** | ≤50.92 | **35.66** | ≤42.77 | | WikiText-2 | 42.43 | **≤41.84** | 31.80 | **≤31.04** | | PTB | 138.43 | **≤114.24** | 123.14 | **≤87.12** | | WikiText-103 | 41.60 | **≤40.62** | 31.39 | **≤29.98** | SEDD在多数任务上达到或超越GPT-2。 ### 生成质量(MAUVE分数) | 方法 | MAUVE分数 | |------|-----------| | GPT-2 + nucleus sampling | 0.955 | | SEDD + 标准prompt | **0.957** | | SEDD + 填空prompt | 0.942 | SEDD的生成质量与GPT-2相当,但更加灵活。 ### 困惑度降低幅度 相比之前的离散扩散模型,SEDD降低困惑度 **25-75%**。 相比未退火的GPT-2,生成困惑度好 **6-8倍**。 --- ## 七、从论文到产品:Mercury的诞生 ### 创始团队 | 成员 | 背景 | 贡献 | |------|------|------| | **Stefano Ermon** | 斯坦福教授,SEDD论文作者 | CEO | | **Aaron Lou** | SEDD一作 | 技术核心 | | **Chenlin Meng** | SEDD作者,Pika联合创始人 | 技术顾问 | | **Aditya Grover** | UCLA教授 | 联合创始人 | | **Volodymyr Kuleshov** | 康奈尔教授 | 联合创始人 | ### 融资历程 - **2024年夏**:Inception Labs成立 - **2024年11月**:5000万美元融资 - 投资方:NVentures(英伟达)、M12(微软)、Menlo Ventures - 个人投资者:吴恩达、Andrej Karpathy ### 产品时间线 | 时间 | 里程碑 | |------|--------| | 2025年2月 | Mercury发布——首个商业级扩散LLM | | 2025年2月 | Mercury Coder发布——编程助手 | | 2026年2月 | Mercury 2发布——支持深度推理,1009 tokens/s | --- ## 八、SEDD的局限与未来 ### 当前局限 1. **单次推理成本高**:虽然速度快,但每次需要多次前向传播 2. **规模限制**:目前Mercury 2的规模仍小于顶级自回归模型 3. **生态不成熟**:工具链、社区支持不如Transformer丰富 ### 未来方向 1. **更大规模**:SEDD能否扩展到GPT-4级别的参数量? 2. **多模态统一**:图像、视频、文本都用扩散模型,实现真正的统一生成 3. **实时应用**:语音助手、实时翻译、直播字幕 4. **开源生态**:期待SEDD的开源实现和工具链完善 --- ## 九、总结 SEDD的核心贡献可以用三句话概括: 1. **提出了Concrete Score**:用概率比率代替概率,绕过归一化常数难题 2. **设计了Score Entropy**:将分数匹配理论扩展到离散空间 3. **实现了离散扩散**:让扩散模型真正适用于文本生成 这项技术不仅获得了ICML 2024最佳论文奖,更已经商业化,成为Mercury 2的核心引擎。 它证明了一件事:**自回归不是文本生成的唯一答案**。当AI从"打字机"变成"编辑",我们或许正在见证下一代语言模型的诞生。 --- ## 参考资源 - **SEDD论文**:https://arxiv.org/abs/2310.16834 - **官方博客**:https://louaaron.github.io/blog/2024/discrete-diffusion/ - **Mercury 2博客**:https://www.inceptionlabs.ai/blog/introducing-mercury-2 - **GitHub**:https://github.com/louaaron/Score-Entropy-Discrete-Diffusion - **ICML 2024**:Discrete Diffusion Modeling by Estimating the Ratios of the Data Distribution(Oral + Best Paper Award) --- *本文深度解读学术论文,力求通俗准确,如有疏漏欢迎指正*

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!