概述

扩散模型(Diffusion Models)在图像生成领域取得了巨大成功(如 DDPM、Stable Diffusion、DALL-E)。近年来,研究者开始探索将扩散模型应用于语言建模,形成了**离散扩散语言模型(Discrete Diffusion Language Models, dLLM)**这一新兴范式。1

与传统的自回归模型(Autoregressive Models, ARM)相比,扩散语言模型具有以下潜在优势:

特性自回归模型扩散语言模型
生成方式逐token顺序生成并行token生成
上下文利用仅利用前缀上下文利用完整双向上下文
生成控制相对受限更灵活的约束控制
推理速度受限于序列长度潜在更快的并行生成

离散扩散 vs 连续扩散

连续扩散模型

标准的扩散模型(如 DDPM)在连续空间中操作:

  • 前向过程:逐步向数据添加高斯噪声
  • 反向过程:学习去噪神经网络

离散扩散模型

语言数据是离散的(token序列),因此需要特殊处理。离散扩散模型在离散状态空间中操作:

1. 状态空间定义

对于词汇表大小为 的语言模型,token 。可以使用one-hot编码

2. 过渡矩阵

定义从时间步 的过渡矩阵 ,其中

3. 分类分布的反向过程

给定噪声状态 ,反向过程需要预测原始分布:


Masked Diffusion Model (MDM)

Masked Diffusion Model(掩码扩散模型)是离散扩散语言模型的主要框架之一。12

核心思想

┌─────────────────────────────────────────────────────────────┐
│  前向Masking过程(可并行):                                    │
│                                                              │
│  原始文本: "The cat sat on the mat"                         │
│      ↓                                                      │
│  Step 1: "The [MASK] sat on the mat"   (10% masked)        │
│      ↓                                                      │
│  Step 2: "The [MASK] [MASK] on the mat"  (20% masked)    │
│      ↓                                                      │
│  ...                                                        │
│      ↓                                                      │
│  Step T: "[MASK] [MASK] [MASK] [MASK] [MASK]" (100%)      │
│                                                              │
│  反向去噪过程(可并行):                                      │
│                                                              │
│  全 [MASK] → 预测所有token → 并行生成完整序列                  │
└─────────────────────────────────────────────────────────────┘

数学框架

前向过程

前向过程逐步将token替换为 [MASK]

等价于:每个token在每步有固定的mask概率。

反向过程

模型预测每个位置应该恢复的token:

其中 是词汇表上的分类分布。

训练目标

通过变分推断可以得到训练目标:

Transformer参数化

LLaDA1使用标准Transformer作为骨干网络:

# 简化的MDM前向过程伪代码
class MaskedDiffusionLM(nn.Module):
    def __init__(self, vocab_size, d_model, n_heads, n_layers):
        super().__init__()
        self.transformer = TransformerEncoder(
            d_model=d_model,
            n_heads=n_heads, 
            n_layers=n_layers
        )
        self.output_proj = nn.Linear(d_model, vocab_size)
        
    def forward(self, x_masked, timestep_t):
        # x_masked: 已mask的部分token
        # timestep_t: 当前时间步 (0-1归一化)
        
        # 加入时间步嵌入
        t_emb = self.time_embedding(timestep_t)
        h = x_masked + t_emb
        
        # Transformer编码
        h = self.transformer(h)
        
        # 预测原始token
        logits = self.output_proj(h)
        return logits
    
    def training_loss(self, x0, mask_schedule):
        # x0: 原始token序列
        t = sample_t()  # 随机时间步
        x_t = mask_tokens(x0, t, mask_schedule)  # mask过程
        logits = self.forward(x_t, t)
        return F.cross_entropy(logits, x0)

生成过程

标准的逐步去噪

def generate_ddm(model, prompt, n_steps, temperature=1.0):
    """
    离散扩散模型的生成过程
    """
    seq_len = len(prompt)
    x = [MASK] * seq_len  # 初始化为全MASK
    
    # 可选:将prompt位置固定
    x[:len(prompt)] = prompt
    
    for step in reversed(range(n_steps)):
        t = step / n_steps
        logits = model(x, t)
        
        if step > 0:  # 非最后一步,只恢复部分token
            probs = F.softmax(logits / temperature, dim=-1)
            # 采样并mask掉一些token
            for i in range(seq_len):
                if random.random() < (step / n_steps):
                    x[i] = torch.multinomial(probs[i], 1).item()
        else:  # 最后一步,贪婪解码
            x = torch.argmax(logits, dim=-1)
    
    return x

并行生成的优势

步骤自回归模型扩散模型(MDM)
Token 1需要需要
Token 2需要Token 1需要全序列
Token 3需要Token 1,2需要全序列
顺序依赖可并行

与自回归模型的关键区别

1. 建模目标

自回归模型

扩散模型

2. 推理计算量

  • AR模型: 次前向传播(n = 序列长度)
  • 扩散模型: 次前向传播(T = 扩散步数)

然而,MDM的通常远小于(如或16),且可高度并行化。

3. 上下文利用

AR模型:x1 → x2 → x3 → ... → xn
        ↓     ↓     ↓
       仅能   仅能   仅能
       看到   看到   看到
       前缀   前缀   前缀

扩散模型:x1, x2, x3, ..., xn (全序列同时建模)
          ↕    ↕    ↕    ↕
         可利用完整上下文信息

主要研究方向

1. 架构优化

  • Mamba骨干DiffuMamba 使用状态空间模型替代Transformer
  • 混合架构:结合注意力机制与线性复杂度模型

2. 推理加速

  • Unmasking策略学习dUltra 使用强化学习优化解mask顺序
  • Block-level扩散:避免全序列扩散的计算开销

3. 多模态扩展

  • 视觉-语言模型LaViDa 将扩散扩展到多模态场景

4. 大规模训练

  • LLaDA:首个8B参数规模的扩散语言模型
  • LLaDA2.0:100B参数的扩散语言模型

参考

Footnotes

  1. LLaDA: Large Language Diffusion Models 2 3

  2. Masked Diffusion Models: A Study on Discrete Token Prediction