凌晨两点,我在实验室盯着屏幕上一行行乱码发呆。事情是这样的:我们试图用扩散模型生成一段技术文档,结果连续跑了七次,每次生成的段落都像喝醉了一样——语法结构松散,专业术语乱飞,甚至出现了“卷积神经网络的梯度下降温度系数应当设置在0.5到0.7之间”这种鬼话。同事苦笑着说:“这模型是不是需要醒酒药?”
那一刻我突然意识到,传统扩散模型在连续文本空间里“游走”的方式,就像让一个画家用油漆滚筒写书法——工具本身就不对味。而另一边,大语言模型(LLM)虽然能写出严谨的句子,却缺乏创作中的“探索感”,总是沿着最高概率路径前进,生成结果难免保守。
能不能让LLM的“脑”配上扩散模型的“腿”?这个念头成了我们后续三个月折腾的起点。
二、当两种范式开始握手
扩散模型的核心思想大家应该熟悉:从噪声开始,一步步去噪,最终得到清晰数据。在图像领域这叫“去噪”,在文本领域我们不妨称之为“理清思路”。但文本是离散的符号序列,直接套用连续扩散公式就像用螺丝刀切菜——不是不行,但很别扭。
早期尝试很暴力:把词向量当成连续空间做扩散。结果呢?生成出来的向量解码回文本时,经常落在词表之外的空隙地带,输出些“半人半马”的奇怪token。我们管这叫“词向量漂移综合征”。
# 这是踩过坑的写法,别直接照搬defnaive_text_diffusion