Diffusion Language Model · 论文笔记(零)

A Survey on Diffusion Language Models

A Survey on Diffusion Language Models | alphaXiv

[TOC]

Intro

扩散语言模型发展时间线

  • 连续性DLMs(早期)
  • 离散型DLMs(近年的关注量增加)
  • 多模态DLMs(近期逐渐出现)

对于主流的AR(AutoRegressive)语言模型,生成过程是一个token一个token进行生成,速度慢

Diffusion可以同时生成多个标记或完整序列,这有望实现更高的推理吞吐量

有一个非常模糊或被“噪声”污染的图片,扩散模型就是学习如何一步一步地把它变得清晰。在语言模型中,这个“图片”就是文本,噪声就是被随机替换或掩盖的词语。

理论上的优势:

  • 并行生成: 传统的语言模型(如 GPT 系列)是一个词接一个词地生成,这很慢。DLMs 可以一次性处理很多词,大大加快了生成速度。
  • 捕获双向上下文: 传统模型的输出通常只看已经生成的词来预测下一个词(单向)。DLMs 可以同时考虑前面和后面的词,更好地理解整个句子的含义。
  • 迭代优化:通过多步去噪,在迭代中修改认知。
  • 细粒度控制: DLMs 允许更精确地控制生成文本的风格、主题等属性。
  • 跨模态统一建模:天然支持文本与视觉的统一

分类

Continuous DLMS

  • 思想来源: 最初受到图像生成领域扩散模型成功的启发。
  • 工作方式: 将token映射到连续的向量空间,在这个连续空间中进行“去噪”过程,逐步从噪声中恢复出词语的嵌入表示

Discrete DLMs

  • 思想来源: 直接在词语(token)的层面定义扩散过程,避免了转换为连续空间的步骤。
  • 工作方式: 它们直接在词汇表(所有可能的词语集合)上操作。通过“破坏”文本序列(例如,用特殊的 [MASK] 标记替换一些词),然后逐步学习如何“去噪”,恢复原始的词语。

发展

  • DreamDiffuLLaMA利用已经训练好的自回归模型(例如 LLMs)的权重作为 DLMs 的初始值,可以显著加速训练并提升性能。
  • LLaDA-8B:证明 DLMs 可以完全独立地训练,并达到与自回归模型相当的性能。
  • 扩散多模态大型语言模型 (dMLLMs):将扩散框架扩展到多模态数据,实现跨模态的理解和生成。

工业界:

  • Mercury Series
  • Google Diffusion

训练与推理

流程上似乎与LLM没什么不同

扩散语言模型的范式

现代语言模型基础

Masked Language Model

最典型的是BERT模型,以纯encoder的Transformer作为基础

  • 对输入token的子集进行掩码,训练模型重建掩码
$$ \mathcal{L}_{\text{MLM}} = \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{M \sim \text{Mask}(x)} \left[ -\sum_{i \in M} \log P_{\theta}(x_i \mid x_{\setminus M}) \right] $$
  • $\mathbb{E}_{x \sim \mathcal{D}}$表示从数据$\mathcal{D}$中抽取任意数据$\mathcal{x}$的期望

  • $\mathbb{E}_{M \sim \text{Mask}(x)} $表示通过掩码操作$\text{Mask}(x)$得到一个掩码的集合$M$​

  • 对于$M$中的每一个掩码位置$i$,基于未被掩码的其他token集合$x_{\setminus M}$,以$x_i$作为i位置$i$复原结果的概率

  • 预测A的下一句是否是B(训练句子之间的语序,Next Sentence Predicition)
$$ \mathcal{L}_{\text{NSP}} = \mathbb{E}_{(A, B, y) \sim \mathcal{D}} \left[ -\log P_{\theta}(y \mid A, B) \right] $$
  • $\mathbb{E}_{(A, B, y) \sim \mathcal{D}}$从数据中抽取一个样本,$A,B$表示两个句子,$y$表示$A$是否在$B$前

BERT的本质是在做填空,因此天然不擅长生成任务

Autoregressive Language Models

$$ P(x) = \prod_{i=1}^{n} P_{\theta}(x_i \mid x_1, x_2, \dots, x_{i-1}) $$

本质上在做词语接龙

$$ \mathcal{L}_{\text{AR}} = \mathbb{E}_{x \sim \mathcal{D}} \left[ -\sum_{i=1}^{n} \log P_{\theta}(x_i \mid x_1, \dots, x_{i-1}) \right] $$

顺序生成天然符合文本生成任务,数据可以直接采样使用

受限于Next Token Prediction,速度较慢无法并行

近期出现了Multi Token Prediction

Other Paradigms

  • Seq2Seq:一些DLMs如DiffuSeq和SeqDiffuSeq将Decoder置换为非自回归的扩散解码器

  • Permutation Language Models:打乱文本序列,从左到右顺序预测

    • 双向预测:可以看到被打乱后的上下文
    • 主要解决了BERT无法生成、自回归模型只能看上文
    • 实际使用仍然是自回归方式正常预测(只不过训练的更玄学一点)
$$ \mathcal{L}_{\text{PLM}} = \mathbb{E}_{\mathbf{z} \sim \mathcal{Z}_T}\left[ -\sum_{t=1}^{N} \log P_{\theta}(x_{z_t} \mid \mathbf{x}_{\mathbf{z}_{< t}}) \right] $$
  • 从置换集合$\mathcal{Z}_T$中采样任一置换序列$\mathbf{z} $,依次进行自回归生成

Continuous Diffusion Language Models

使用 Hugo 构建
主题 StackJimmy 设计