
如果你关注过图像生成领域一定知道过去两年最大的变化是扩散模型彻底取代了 GAN成为文生图、图生图的主流底座。Stable Diffusion、DALL·E、Midjourney 背后都有扩散模型的影子。但同样叫“扩散”语言模型这边却完全是另一种局面聊天、写作、代码生成几乎全部被自回归模型统治从 GPT 到 LLaMA 再到 Qwen范式没有变过。于是你会看到一个很奇怪的错位图像生成领域扩散模型已经是大一统方案语言生成领域自回归模型依旧一骑绝尘。很多人甚至默认“语言模型只能用自回归方式做”因为 ChatGPT 太成功了似乎已经盖棺定论。但最近一段时间风向开始变化。越来越多研究重新把目光投向连续扩散语言模型CDLMContinuous Diffusion Language Model不是简单炒冷饭而是有了新的技术动机和工程条件。这篇文章想聊清楚一个核心问题**为什么扩散语言模型在自回归大模型已经如此成熟的情况下依然值得被重新重视我的判断是CDLM 的复兴不是要取代自回归模型而是自回归模型本身存在几个很难靠“堆数据、堆参数”解决的问题——并行生成效率、局部编辑能力、生成过程的可控性。连续扩散语言模型恰好在这几个方向上有结构性优势。这篇文章会用相对通俗的方式把这套技术路线的背景、原理、适用场景和工程落地建议讲透帮你在“到底要不要关注扩散语言模型”这个问题上有一个自己的判断。1. 这篇文章真正要解决的问题很多技术文章介绍扩散语言模型会直接抛公式、贴模型结构读者看完很容易产生两个反应第一它和 GPT 有什么区别第二这和我有什么关系这篇文章想做的是把这两件事讲清楚。先说第一个问题。GPT 这类自回归模型生成方式是“从左到右一个词一个词往后预测”。这种方式的优点是训练简单、生成质量稳定但它有几个天然缺陷生成速度慢只能串行生成输出 1000 个 token 就得循环 1000 次即使有 KV Cache 和各种加速手段本质还是串行。生成过程不可逆一旦某个位置的 token 已经生成后续内容都基于它展开。想修改中间一句话后面的内容几乎要全部重新生成。全局控制困难如果你希望生成结果中某个指定位置必须出现某个实体、某种情感自回归模型只能靠 prompt 隐式约束很难直接“指定”。而连续扩散语言模型的生成方式是另一条路先从一个完整的随机噪声序列开始通过多步去噪逐步逼近目标文本。它天然是并行生成、天然支持局部修改、天然可以在采样过程中加入引导条件。再说第二个问题。对大多数开发者而言CDLM 现在还不会变成你在生产环境直接调用的 API也不大可能很快替代你的 GPT 接口。但以下几个场景已经值得关注你在做可控文本生成比如情感可控、实体约束可控的营销文案生成。你在做文本编辑与改写希望保持原文其余部分不变只修改局部内容。你在做机器翻译、摘要生成等任务对推理延迟敏感想尝试非自回归方案。你在研究连续语义表示、句向量、文本隐空间希望用生成模型做表征学习。如果你属于其中任意一类这篇文章能帮你建立一条清晰的技术认识路线CDLM 解决什么问题、实现原理是什么、真正适合什么场景、落地时有哪些坑。2. 基础概念扩散模型与文本离散性的矛盾在谈 CDLM 之前先回到扩散模型本身。扩散模型的思想并不复杂可以拆成两个过程前向过程把一张清晰图片逐步加噪声经过很多步之后图片变成纯噪声。这个过程是确定的不需要学习。反向过程训练一个神经网络学会从噪声一步步还原出图片。推理时从纯随机噪声出发逐步去噪最终生成图片。这个过程很像把一个清晰的句子写在黑板上然后不断用粉笔灰去涂抹直到完全看不清再训练一个人根据当前黑板的状态一步步把粉笔灰擦除最终恢复出原句。用数学语言说前向过程定义了一个从原始数据分布到高斯噪声分布的扩散路径反向过程则学习这个路径的逆变换。图像领域的成功已经证明这种方式可以生成非常逼真的样本而且生成质量一度超过 GAN。但语言模型不能直接照搬这套做法原因在于数据形态的差异图像是连续的每个像素是一个 0 到 255 之间的数值加噪、去噪都发生在连续数值空间就是单纯地加随机噪音再降噪。文本是离散的文本先要切分成 token每个 token 是词典里的一个 id比如“苹果”是 1234“香蕉”是 5678。id 与 id 之间没有连续语义1234 到 5678 之间并不存在任何中间 token。如果你直接对 token id 加噪声会发生两件事第一加噪声后的数值不再对应词典中的任何 token第二即使强制取整映射回词典也会因为噪声过大让文本变成一堆随机词。这正是早期离散扩散语言模型面临的尴尬。解决思路有两种一种是设计离散状态的转移矩阵在离散空间做扩散这类方法叫离散扩散语言模型另一种是把 token 映射到连续语义空间在连续空间里做扩散最后再把连续向量映射回 token。后一种就是连续扩散语言模型CDLM也是本文讨论的重点。CDLM 的本质可以概括成一句话用连续向量表示离散文本在向量空间里执行加噪和去噪最后通过 rounding 操作将向量还原成 token。它的核心价值不是“又一个扩散模型”而是把语言生成从“逐步预测下一个词”变成了“整体去噪”从而获得了完全不同的生成特性。3. CDLM 为什么正在复兴四个真实驱动力任何技术路线被重新捡起来都不是因为“这个想法很新”而是因为外部条件发生了变化。CDLM 这轮复兴背后至少有四个驱动力。3.1 自回归范式的瓶颈被放大自回归模型在质量上很成功但它的代价也被越来越多人感知到。最明显的是推理成本生成长文本时输出 token 数越多串行推理次数越多延迟线性增长。在 ChatGPT 时代你可以忍受一次回复等几秒但在实时交互、批量生成、高并发场景下这个延迟就非常要命。业界有很多缓解手段比如 speculative decoding、KV Cache、并行采样但它们都没有改变“一个 token 一个 token 生成”的本质。扩散语言模型提供了一个结构性的替代思路整个序列同时生成而不是逐个拼出来。这种并行性不是工程优化而是范式差异。3.2 非自回归生成路线被验证非自回归生成并不是一个新概念。早在机器翻译领域非自回归 Transformer 就已经被提出它能一次性预测整个目标句子大幅提升解码速度代价是质量略降。后来预训练语言模型中的掩码机制比如 BERT 的 masked language modeling本质上也是非自回归思想——它同时预测多个被掩码的位置而不是从左到右逐词生成。这些工作的意义在于证明了一件重要的事并行生成不是不可行只是需要足够的训练策略来弥补全局依赖缺失。扩散语言模型相当于把这种并行生成思路推广到了更一般化的连续空间它不是无中生有而是站在一条已经被验证过的路线上继续前进。3.3 图像扩散模型的经验可以迁移这是我认为最关键的驱动力。过去几年图像扩散模型的工程积累非常丰富噪声预测目标、采样调度器、分类器引导、无分类器引导、Latent Diffusion 的隐空间思想……这些技术虽然最初是为像素设计的但其中的思路大部分可以迁移到连续文本空间。早期扩散语言模型实现困难很大程度是因为作者需要自己写训练流程、自己设计采样器、自己处理引导逻辑。现在情况完全不同PyTorch 生态成熟Diffusers 这类库已经把采样、调度、去噪网络封装得非常好即使文本和图像共享的模块有限但工程脚手架已经搭好了新手实现一个 CNN 扩散模型几乎不费劲理解扩散语言模型论文的门槛也大幅降低。3.4 大模型成本压力让“效率”重新成为关键词训练和部署一个大语言模型的成本已经成为行业级问题。无论是企业还是研究者都在寻找“少用一些算力也能完成生成任务”的方案。CDLM 在训练阶段可以复用预训练语言模型的嵌入层和部分结构在推理阶段又有并行生成的潜力这让它成为一个有现实意义的效率优化方向。四个驱动力叠加在一起结论很清晰CDLM 不是在跟 GPT 比谁生成的文本更像人写的而是在自回归路径之外提供一种拥有不同成本曲线的替代方案。当“质量唯一重要”的时期过去之后效率、可控性和可编辑性开始变得重要扩散语言模型自然会被重新看到。4. CDLM 与自回归模型的本质差异理解 CDLM最重要的不是记公式而是建立两种生成范式的差异感。4.1 生成顺序不同自回归模型的生成路径是“一条直线”t1 生成 token1t2 在 token1 的基础上生成 token2t3 在 token1 和 token2 的基础上生成 token3。每一步都依赖前一步的输出无法跳过。CDLM 的生成路径是“一个气泡”一开始是一个充满噪声的完整序列每一步去噪都把整个序列向更清晰的文本方向推进一步。所有位置是同步更新的不存在“谁先谁后”的问题。整个序列像从模糊到清晰慢慢浮现出来而不是从左到右一笔一划写出来。这个差异带来的直接结果是CDLM 生成一个长度为 512 的句子不需要串行 512 次而是固定迭代多次比如 50 步每次同时更新全部 512 个位置。理论上推理时间不再随序列长度线性增长这是非自回归范式最核心的吸引力。4.2 生成过程可编辑性不同自回归模型一旦生成想修改中间某个位置非常麻烦。你需要重新生成该位置之后的所有内容而且修改后接的上下文不一致可能导致结果变得很奇怪。CDLM 天然支持局部编辑。因为它的核心操作是加噪和去噪你可以这样用把一整段文本中你希望修改的部分加噪保留其他部分不变然后执行去噪过程让模型只重写被加噪的区域其他部分保持基本不变。这种操作在扩散模型里几乎是顺理成章的不需要额外训练不需要精细的 prompt 设计。对文本改写、风格迁移、实体替换、错别字修复这类任务这是一个相当重要的能力。自回归模型通常需要重写整个句子而 CDLM 可以做到“哪个词坏了就重哪个词”。4.3 各自适用的任务场景对比维度自回归语言模型连续扩散语言模型生成方向从左到右逐 token 生成整句并行去噪生成解码速度随长度线性增长理论上可并行迭代次数固定生成质量当前最高水平长文一致性出色短句、中长句已可用长文本仍有挑战局部编辑能力弱需要重写大段内容强可局部加噪再去噪可控引导依赖 prompt隐式控制可在采样过程加入显式引导训练难度预训练范式成熟资料丰富超参敏感工程复杂度较高生态成熟度极高部署框架完善还在研究阶段没有统一 API如果只看这张表很容易得出一个结论CDLM 目前不适合替代自回归大模型。但从另一个角度看它也意味着 CDLM 在“局部编辑、并行生成、显式控制”这些自回归模型的短板上具有不可替代的优势。所以我说它和自回归模型的关系更接近互补而不是替代。5. 核心实现思路拆解这一节用教学性质的代码示例拆解 CDLM 的最简实现思路。先说明下面代码不是某个具体模型的官方实现而是用于展示连续扩散语言模型训练与采样的核心逻辑。真实工程实现会复杂很多但核心思路是一样的。5.1 整体框架CDLM 通常包含四个关键部分嵌入层Embedding把 token id 映射为连续向量。前向加噪过程对连续向量逐步加高斯噪声。去噪网络Denoiser学习预测原始向量或噪声。Rounding 层把去噪后的连续向量映射回离散 token。训练时模型看到的是“被噪声污染过的向量”目标是还原出原始 token采样时模型从纯噪声出发多步去噪后得到干净向量再 rounding 成文本。5.2 前向加噪的核心逻辑前向加噪的目的是把干净的文本向量逐步变成一个接近标准正态分布的向量。下面是一个简化示例演示如何对一批向量执行多步加噪。# 文件路径cdlm_demo/noise_schedule.py import math import torch def cosine_beta_schedule(timesteps, s0.008): 余弦 beta schedule图像扩散中被广泛使用 也可以用在文本向量的加噪过程中。 steps timesteps 1 x torch.linspace(0, timesteps, steps) alphas_cumprod torch.cos(((x / timesteps) s) / (1 s) * math.pi * 0.5) ** 2 alphas_cumprod alphas_cumprod / alphas_cumprod[0] betas 1 - (alphas_cumprod[1:] / alphas_cumprod[:-1]) return torch.clamp(betas, min0.0001, max0.02) def forward_diffusion(x0, t, betas): x0: 文本嵌入向量形状 (batch_size, seq_len, hidden_dim) t: 当前时间步形状 (batch_size,) betas: 预设的噪声系数 alphas 1.0 - betas alphas_cumprod torch.cumprod(alphas, dim0) sqrt_alphas_cumprod torch.sqrt(alphas_cumprod[t]).unsqueeze(-1).unsqueeze(-1) sqrt_one_minus_alphas_cumprod torch.sqrt(1.0 - alphas_cumprod[t]).unsqueeze(-1).unsqueeze(-1) noise torch.randn_like(x0) xt sqrt_alphas_cumprod * x0 sqrt_one_minus_alphas_cumprod * noise return xt, noise这段代码做的事情就是在指定时间步 t 上把原始向量 x0 和标准高斯噪声 noise 按比例混合。时间步越大原始向量的信息保留越少噪声占比越高。最终在 t 接近最大值时向量几乎只是噪声。这里真正容易踩坑的地方是文本嵌入空间的分布和标准高斯分布差异很大。图像像素值通常被归一化到 [-1, 1]但 token 嵌入向量的范围往往更大、分布更复杂。如果直接套用图像领域的加噪公式可能很快就会把语义信息完全破坏导致去噪网络无法学习。实际项目中通常需要做额外的归一化或调整噪声 schedule。5.3 去噪网络的训练目标去噪网络的任务是给定噪声向量 xt 和时间步 t预测原始向量 x0或者预测噪声 noise。两者在数学上是等价的工程实现上多数模型选择预测噪声图像扩散的主流方案也是预测噪声。# 文件路径cdlm_demo/train_step.py import torch import torch.nn as nn from transformers import AutoConfig, AutoModel class CDLMDemo(nn.Module): 一个极简的去噪网络骨架 用预训练 Transformer 的 encoder 作为主干 输入加噪向量输出预测的噪声。 def __init__(self, model_namebert-base-uncased): super().__init__() config AutoConfig.from_pretrained(model_name) self.encoder AutoModel.from_pretrained(model_name, configconfig) self.time_embed nn.Sequential( nn.Linear(128, config.hidden_size), nn.SiLU(), nn.Linear(config.hidden_size, config.hidden_size), ) def forward(self, xt, t): # t: (batch_size,) - time_embedding t_emb self._time_embedding(t) t_emb self.time_embed(t_emb) # 简单地把时间嵌入加到序列表示上 hidden self.encoder(inputs_embedsxt).last_hidden_state hidden hidden t_emb.unsqueeze(1) return self.encoder(inputs_embedshidden).last_hidden_state def _time_embedding(self, t): # 简化版时间嵌入实际可用正余弦位置编码这里仅示意 pe torch.zeros(t.shape[0], 128).to(t.device) for i in range(64): pe[:, 2 * i] torch.sin(t.float() / (10000 ** (2 * i / 128))) pe[:, 2 * i 1] torch.cos(t.float() / (10000 ** (2 * i / 128))) return pe训练时我们随机采样时间步 t执行前向加噪得到 xt 和真实噪声 noise让网络输出 noise_pred用 MSE 损失约束两者一致。# 文件路径cdlm_demo/train_step.py def compute_loss(model, x0, t, betas, embedding_layer): xt, noise forward_diffusion(x0, t, betas) noise_pred model(xt, t) # 简单 MSE 损失 loss ((noise_pred - noise) ** 2).mean() return loss注意x0 是从 token id 序列经过 embedding_layer 得到的。embedding_layer 可以是随机初始化的也可以是预训练语言模型的嵌入层。前者会让模型从零学习语义空间后者能显著加快训练速度。从公开资料和经验来看复用预训练嵌入层几乎是当前 CDLM 实现的默认选择。5.4 采样与 Rounding采样时模型从纯噪声开始按预设的采样器逐步去噪。每次迭代得到一个新的向量序列最后通过 rounding 将向量映射回词典中最近的 token。# 文件路径cdlm_demo/sample.py import torch def sample_cdlm(model, seq_len, hidden_dim, betas, embedding_layer, num_steps50): 简化版采样流程从纯噪声出发逐步去噪。 真实实现会使用 DDIM 等加速采样器这里为了直观展示循环。 model.eval() device next(model.parameters()).device # 初始化为纯噪声 xt torch.randn(1, seq_len, hidden_dim).to(device) alphas 1.0 - betas alphas_cumprod torch.cumprod(alphas, dim0) timesteps torch.linspace(num_steps, 1, num_steps).long() with torch.no_grad(): for t in timesteps: t_tensor t.unsqueeze(0).to(device) # 预测噪声 noise_pred model(xt, t_tensor) # 简化反向更新真实实现需要根据采样器公式计算 alpha_cumprod_t alphas_cumprod[t].to(device) xt (xt - (1 - alpha_cumprod_t).sqrt() * noise_pred) / alpha_cumprod_t.sqrt() # 最后一步把连续向量映射回 token logits xt embedding_layer.weight.T # (1, seq_len, vocab_size) token_ids logits.argmax(dim-1) return token_ids这段代码里的采样更新公式做了极大简化真实采样器如 DDPM 或 DDIM需要考虑方差、噪声回加等细节。但核心思想是完整的迭代去噪最后取最近邻 token。这里真正容易踩坑的地方是 rounding 误差。连续向量与词典中所有 token 嵌入的距离计算后取最近的那一个但这个最近邻可能不是语义上最合理的词。尤其在生成早期向量还带有噪声直接 argmax 会让结果出现大量重复词和无关词。解决思路一般有两种一是增加去噪步数让最后的向量足够干净二是在 rounding 之前加入一个小的映射网络把连续向量转化成对所有 token 的概率分布。5.5 建议先跑通一个更简单的基线如果你想真正上手我不建议一上来就复现完整的 CDLM。可以先试一个简化版本把扩散过程当作一个“加噪-去噪”的降噪自动编码器先验证在目标语料上能做到“给一段文本加一定噪声后还能还原出来”再逐步增加采样步数和引导条件。这样既不会一上来就陷入训练不稳定的泥潭也能更快理解每一步的作用。6. 环境准备与落地前的判断6.1 需要哪些工具CDLM 的环境和普通 NLP 项目没有本质区别核心工具栈如下Python主流深度学习项目都可以使用 Python 3.8 及以上版本具体以你的环境为准。PyTorch扩散模型的训练和采样主要基于 PyTorch需要提前安装 GPU 版本。Transformers用于获取预训练模型的 embedding 层、tokenizer以及作为去噪网络的主干。Diffusers如果不希望自己实现采样器可以参考 Diffusers 库中的采样器实现。GPU训练 CDLM 比训练同等规模的 GPT 要更吃显存因为需要保存多步噪声状态的中间结果。建议至少使用有足够显存的 GPU 进行小规模实验。版本细节不建议照抄网上的教程写死因为 PyTorch 和 Transformers 的版本迭代太快。更稳妥的方式是新建一个干净的虚拟环境安装最新稳定版只要能跑通一个标准文本分类或生成模型环境就基本没问题。6.2 该用什么数据规模CDLM 的训练数据规模没有统一答案。建议按以下思路判断如果只是想验证训练流程能不能跑通用一个小型数据集几万条短句就足够了。如果想看到有实际效果的可控生成或文本编辑能力需要至少百万级中短文本且最好和你的下游任务分布一致。如果你想让 CDLM 生成自然流畅的长段落那难度会明显增加效果可能仍然不如自回归模型此时更需要结合具体场景评估是否值得。6.3 什么时候别用 CDLM这一点很重要。我认为以下场景暂时不适合使用 CDLM你需要生成几千字的长文且要求上下文高度一致、逻辑严密。你的团队没有深度学习调参经验遇到底层采样或训练不稳定问题难以排查。你的任务已经有现成的、效果不错的自回归大模型 API而且不需要太高的并发和太大的批量。你的核心诉求是生成质量极限而不是效率或可控性。在这些情况下老老实实用自回归模型更现实。CDLM 的复兴是一个值得关注的趋势不等于它已经可以在所有场景投入使用。7. 常见问题与排查思路CDLM 的工程实现比普通 LM 复杂下面是几个比较常见的问题以及对应的排查思路问题现象可能原因排查方式解决方案生成结果是一堆无关词或乱码Rounding 距离计算错误或者去噪步数太少导致向量不干净打印中间过程查看每个 time step 后向量与最近邻 token 的距离是否逐渐变小增加采样步数使用 DDIM 等加速采样加入映射网络后再 argmax训练 loss 不下降加噪步骤过于激进文本向量被噪声完全覆盖模型无法学习画出不同时间步的加噪向量分布观察是否过早变成纯噪声调整 beta schedule对嵌入向量做归一化减少时间步数生成结果和训练数据很像但多样性差模型退化成了简单的复制模型没有真正学习到分布检查训练时是否大量使用了低噪声的时间步增加高噪声采样比例调整噪声采样权重增加引导强度采样速度比自回归还慢采样步数设置太多或模型结构太重统计单步采样时间分析瓶颈在推理还是采样循环使用 DDIM 减少步数蒸馏采样器选择轻量去噪网络显存溢出OOM训练时需要在多个时间步保存中间变量查看显存占用确认瓶颈在 batch size 还是序列长度减小 batch size使用梯度累积降低序列长度使用混合精度生成长文本时连续性变差固定长度扩散很难建模长距离依赖去噪网络能力不足对比短文本和长文本的 loss确认长度影响先限制在 128 或 256 token 以内结合自回归模型做长文规划可控条件没有生效引导条件没有正确注入到采样过程检查去噪网络是否使用了条件向量参考无分类器引导思路在训练时加入条件 dropout这些问题的排查核心可以归纳为一句话先画过程不要只看结果。扩散模型的调试强烈依赖中间可视化。加噪过程画出来、不同时间步的去噪结果画出来、rounding 前后的距离分布画出来很多问题一眼就清楚了。8. 最佳实践与工程建议8.1 从短文本和小规模开始如果你的目标是评估 CDLM 是否适合当前业务最好的方式是构造一个限定领域的短文本任务。比如可控的评论生成要求生成 50 到 100 字左右的评论并指定情感。这个任务规模小、指标明确、可控性强最能暴露 CDLM 在不同阶段的优势和短板。小规模的另一个好处是训练成本低方便你反复调整噪声 schedule、采样步数、是否复用预训练 embedding 等关键决策。等这些决策都验证了再迁移到更大规模。8.2 设计合理的评测指标评测 CDLM 不能只看文本是否通顺至少要从四个维度看生成质量句子是否通顺、是否符合目标语言习惯人工评估或使用主流文本质量指标。约束满足率对于可控生成任务检查指定情感、实体、关键词是否真的出现。并行加速比统计在相同条件下CDLM 和自回归模型生成同样长度文本的时间差异验证非自回归是否真正带来收益。编辑稳定性对文本编辑任务检查未修改部分是否保持原样、修改部分是否自然衔接。缺少这些维度很容易陷入“看上去好像能生成”但无法判断到底有没有用的困境。8.3 与自回归模型组合使用我个人认为 CDLM 短期内最有价值的落地方式不是完全替代自回归模型而是组合使用。这里给出三种可选的组合思路候选批量生成CDLM 并行生成多个候选文本自回归模型对这些候选做打分、排序选出最合适的方案。编辑修正当自回归模型生成的长文中出现局部不合要求的内容用 CDLM 对局部进行重写而不用整段重来。表示学习辅助用 CDLM 训练得到的连续语义表示作为下游分类、检索任务的向量输入配合自回归模型生成的文本一起构建更丰富的特征。这种组合思路的好处是它不要求 CDLM 立刻在生成质量上超越 Gemini、GPT 级别的大模型而是先把 CDLM 的优势利用起来再用自回归模型的优势兜底。8.4 警惕工程陷阱最后提醒几个容易忽略的问题嵌入层冻结与微调如果复用预训练嵌入层需要先测试冻结它和微调它的差异不要默认某种做法一定更好。采样器选择不同采样器对生成质量和速度影响很大建议对比完整 DDPM 和加速采样器之间的差距。随机种子影响扩散模型采样过程随机性很强评估时要多次采样、统计分布不要用单次结果下结论。训练和推理的 schedule 不一致训练时用很长的步数推理时强行减少步数可能导致生成崩溃。尽量保证训练和推理的步数范围一致。9. 总结与后续学习方向这篇文章没有试图论证 CDLM 会取代 GPT而是想说明一个更准确的事实CDLM 的复兴本质上是生成模型范式从“单一路线竞争”走向“多路线共存”的一个信号。自回归模型很强但它的串行生成、局部编辑能力弱、全局控制难这三点决定了它不能覆盖所有生成需求。连续扩散语言模型在这三个方面有自己的结构性优势虽然目前的工程成熟度还不高但值得每一个做 NLP 生成的人保持关注。如果这篇文章让你产生了兴趣我建议按下面的路径继续深入学习先掌握扩散模型的基本公式不需要立刻理解全部推导但前向加噪、反向去噪、预测噪声这三件事必须懂。读图像扩散模型的经典资料理解什么是 latent diffusion、什么是 classifier-free guidance因为这些技术大概率会迁移到文本领域。找一篇有代表性的连续扩散语言模型论文比如 Diffusion-LM看它的结构和训练目标尝试用 PyTorch 实现一个极简版本在小型数据集上验证。关注非自回归生成相关的研究方向包括掩码语言模型和非自回归翻译因为 CDLM 和时间步选择可以相互启发。最后给所有想动手试的人一个建议不要指望一次跑通就能得到惊艳结果。扩散模型的调试周期通常比微调一个 GPT 模型长得多你需要足够的耐心去理解加噪、去噪、采样这几个环节的相互作用。先跑通最简流程再逐步改进这是最快的路径。