DiffusionCLS: 利用扩散模型掌握低资源情感分析
在大语言模型 (LLM) 时代,人们很容易认为自然语言处理 (NLP) 已是一个被解决的问题。我们拥有的模型可以写诗、用 Python 编程,甚至总结历史书籍。然而,在这些模型的实际应用中,仍存在一个巨大的鸿沟: 数据稀缺 。
当研究人员或工程师进入特定领域——例如分析灾难推文以进行应急响应、监控局部疾病爆发或处理低资源语言时——他们经常会碰壁。那些庞大的、预训练的模型非常“渴求数据”。当在微小、不平衡的数据集上进行微调时,它们的表现往往不尽人意。
针对这个问题的标准解决方案是数据增强 (Data Augmentation, DA) ——即创建合成训练样本来扩充数据集。但是,传统的 DA 方法往往难以在创造多样化的新样本和保持一致的含义之间取得平衡。
在本文中,我们将深入探讨一篇名为 “An Effective Deployment of Diffusion LM for Data Augmentation in Low-Resource Sentiment Classification” 的研究论文。我们将探索一个名为 DiffusionCLS 的新颖框架,该框架利用扩散语言模型 (Diffusion Language Models) 的强大功能来生成高质量的训练数据。
我们将剖析该方法的工作原理,为什么它挑战了数据增强的传统观念,以及它如何利用巧妙的“抗噪”训练策略来取得最先进的成果。
核心问题: 多样性与一致性
在理解解决方案之前,我们必须先定义问题。情感分类 (Sentiment Classification, SC) 严重依赖特定的情感关键词。如果你正在训练一个模型来检测推文中的“悲伤”,诸如“devastated (毁灭) ”、“grief (悲痛) ”和“loss (丧失) ”这样的词至关重要。
当你只有很少的标记样本 (“低资源”场景) 时,你的模型会过拟合。为了解决这个问题,你需要生成更多数据。现有的方法通常分为两类:
- 基于规则的方法 (如 EDA) : 这些方法执行简单的操作,如同义词替换或随机删除。它们很安全,但缺乏多样性 。 将“good”改为“great”并不能教会模型太多新的句法。
- 基于模型的方法 (如掩码语言模型、GPT) : 这些方法使用模型来重写句子。然而,为了避免改变情感标签,它们通常采取保守策略,只替换次要词汇 (如“very”或“the”) 。如果它们尝试变得更有创意,就会面临不一致的风险——可能会意外地将一个“悲伤”的句子变成“快乐”的句子。
DiffusionCLS 的创新之处
DiffusionCLS 背后的研究人员提出了一种反直觉的方法。他们不是保留最重要的情感词并仅改变背景上下文,而是反其道而行之。
他们故意破坏并重建那些与标签强相关的 token (词元) 。

如上表 1 所示,传统方法 (如 GENIUS) 可能会将 “the traffic was a nightmare” (交通是一场噩梦) 改为 “Navigating the traffic was literally a nightmare” (在交通中穿行简直是一场噩梦) 。这是一个微小的改变。
然而,DiffusionCLS 会掩盖关键的情感词 (“traffic”、“nightmare”) ,并将它们重构为“journey” (旅程) 和“disaster” (灾难) 。这就生成了一个在句法上独特但在语义上保持一致的样本。这迫使模型学习到在这种语境下,“disaster”和“nightmare”具有相似的功能,从而极大地丰富了数据集。
DiffusionCLS 架构
模型如何在不翻转情感的情况下正确填补这些空白?答案在于 DiffusionCLS 的架构。
该框架包含两个主要阶段:
- 生成器: 一个用于创建合成数据的扩散语言模型。
- 分类器: 实际的情感分类模型,从真实数据和合成数据中学习。

图 1 提供了高级路线图。让我们分解图表中显示的四个核心组件。
1. 标签感知噪声调度 (Label-Aware Noise Schedule)
扩散模型通过向数据添加噪声,然后学习逆转该过程来工作。在文本中,“噪声”通常意味着掩盖 token (用 [MASK] 替换单词) 。
标准扩散随机添加噪声。然而,并非所有的词都是生而平等的。研究人员引入了标签感知噪声调度 。 其核心思想是在过程早期掩盖“简单”的词 (不重要的上下文) ,而在后期掩盖“困难”的词 (关键情感 token) 。
为此,他们首先使用一个代理模型根据注意力分数计算每个词的“重要性权重” (\(w_i\)) :

这里,\(s_i^h\) 是一个 token 的注意力分数。高分意味着该 token 对确定情感至关重要。
接下来,他们定义特定 token \(i\) 在时间步 \(t\) 被掩盖的概率 (\(q_t^i\)) 。这个概率受到 token 重要性权重 (\(w_i\)) 的影响:

这个数学计算的结果如图 2 所示。

这张图告诉了我们什么? 看黑线 (\(w_i=0.00\)) 。这些是不重要的词;随着时间步的推进,它们很快被掩盖。现在看绿线 (\(w_i=0.45\)) 。这些是关键的情感词。它们保持未被掩盖的状态要长得多。
通过在扩散过程的后期步骤中保护重要词汇,模型学习到了句子的层次结构。这确保了当模型生成数据时,它会重点关注准确重建那些高价值的情感 token。
2. 标签感知提示 (Label-Aware Prompting)
即使有了智能的噪声调度,如果你掩盖了句子“I am so [MASK]”中的“happy”一词,模型可能会猜成“sad”、“angry”或“tired”。为了防止这种语义漂移,研究人员使用了标签感知提示 。

如图 3 所示,模型看到的不仅仅是掩码句子。它看到的是 [标签] + [掩码句子]。这种明确的指令充当了护栏,确保即使最关键的情感词被掩盖,生成器也知道它需要重建的句子的意图。
3. 条件样本生成 (Conditional Sample Generation)
一旦扩散 LM 使用上述策略训练完毕,它就充当了生成器。系统获取原始训练样本,根据计算出的注意力分数掩盖其关键 token,并要求扩散 LM 使用标签作为向导来“填空”。
这产生了一个新的数据集,它保留了领域上下文 (因为结构来自真实数据) ,但在词汇上变化很大 (因为关键词被重新生成了) 。
4. 抗噪训练 (Noise-Resistant Training)
我们现在拥有真实数据和合成 (生成) 数据的混合体。虽然合成数据很好,但它永远不会完美。它包含“噪声”——可能混淆分类器的细微缺陷或偏差。
为了处理这个问题,作者引入了使用对比学习的抗噪训练 。

图 4 阐明了这个概念。目标是在模型的“脑海” (向量空间) 中组织数据。模型应该:
- 将同一类别的原始样本 (例如所有“悲伤”的推文) 拉近。
- 将不同类别的原始样本 (例如“悲伤”与“快乐”) 推远。
对比损失函数 (\(L_c\)) 主要基于原始样本计算,以确保核心基本真值 (ground truth) 保持锚定:

然而,标准分类损失 (\(L_e\)) 使用原始样本和生成样本 (\(b=0\) 到 \(B\)) :

最终的训练目标结合了这两者:

这种混合方法允许模型通过分类损失 (\(L_e\)) 从合成数据的多样性中学习,同时通过对比损失 (\(L_c\)) 使用干净的原始数据保持严格的类别边界。
实验与结果
这个复杂的架构真的有效吗?研究人员将 DiffusionCLS 与一系列基线进行了测试,包括:
- 简单增强: EDA、反向翻译 (Back-Translation) 。
- 生成式增强: GPT-2 (LAMBADA)、GENIUS。
他们使用了多样化的数据集,包括 SMP2020-EWECT (中文疫情帖子) 和 India-COVID-X (英文推文) 。这些数据集代表了确切的“低资源、特定领域”的噩梦场景: 高度特定的语言、高情感强度和有限的标签。
与基线的比较

表 2 显示了使用 Macro-F1 分数 (平衡精确率和召回率的指标) 的结果。
数据中的关键结论:
- 一致性: DiffusionCLS 带来了全面的性能提升 (\(\Delta F\)) 。看 “DiffusionCLS (ours)” 行。在中文数据集 (SMP2020) 上,它在 G/E 策略下获得了 2.11% 的 F1 分数提升。
- 基线的失败: 注意 SMP2020 数据集的 EDA 行了吗?它实际上损害了性能 (标记为 -15.75%) 。这证明在特定领域上下文中盲目交换同义词可能会引入混淆模型的噪声。
- 优于 GPT-2: DiffusionCLS 优于基于 GPT-2 的方法。虽然 GPT-2 很强大,但它经常产生不符合特定领域的幻觉 (例如为疫情推文生成电影评论风格的文本) 。DiffusionCLS 更贴近该领域,因为它重建的是现有的模板。
部分数据下的性能
对任何数据增强方法的最强测试之一是: “当我们几乎没有数据时,它的效果如何?”
研究人员通过“饿死”模型来模拟这种情况,只给它喂食 5%、20% 或 50% 的训练数据。

在图 5 中,蓝线 (DiffusionCLS) 始终位于红线 (标准预训练语言模型) 之上。
- 看图表 (a) - 阿拉伯语: 即使在低数据百分比下,差距也很显著。
- 效率: 论文中的表格 (表 9,如下所示) 显示,使用仅 50% 的数据训练的 DiffusionCLS 通常能匹配使用 100% 数据训练的标准模型的性能。这对于低资源项目来说是一个巨大的效率提升。

增强的“最佳平衡点”
生成式增强中的一个关键问题是确定要修改多少原始句子。如果掩盖太少,新句子就是重复的 (没有多样性) 。如果掩盖太多,句子就会变成垃圾 (没有一致性) 。
研究人员通过改变用于生成样本的扩散步骤数来分析这种权衡。

图 6 显示了典型的钟形曲线 (单峰趋势) 。性能在 9-12 步范围左右达到峰值。
- 左侧 (步骤 1-4) : 与原始数据太相似。增益低。
- 右侧 (步骤 29-32) : 破坏太多。生成的样本可能偏离原始含义太远,损害了准确性。
这验证了“多样性-一致性”假设: 你需要足够的变化来学习,但也需要足够的结构来保持准确。
可视化数据空间
最后,我们可以使用 t-SNE (一种用于可视化高维数据的技术) 来可视化这些增强样本在向量空间中的样子。

在图 7 中,较浅的点代表使用较高掩盖率 (更多样性) 生成的样本。注意颜色较浅的点是如何从密集、深色的中心 (原始数据) 向外散开的。
- 它们没有飞到随机空间 (那将是糟糕的噪声) 。
- 它们逐渐扩展了聚类的边界。
这种扩展有助于分类器为“恐惧”或“快乐”等情绪定义更稳健的决策边界,从而有助于更好地泛化到未见过的数据。
结论与启示
DiffusionCLS 框架代表了数据增强向前迈出了成熟的一步。它摆脱了简单地要求 GPT 模型“写更多像这样的句子”的“黑盒”方法,转向了一个受控的、基于数学的重建过程。
给学生和从业者的关键要点:
- 反直觉的胜利: 有时,攻击数据中最重要的部分 (带有标签的词) 比保留它们能产生更好的训练信号,前提是你有一个机制 (如标签感知提示) 来指导重建。
- 噪声管理是关键: 你不能盲目相信合成数据。结合抗噪训练 (如对比学习) 允许模型从合成数据的多样性中受益,而不会被合成错误误导。
- 低资源的可行性: 对于标记数据稀缺的专业领域 (医学、法律、危机应对) ,基于扩散的增强提供了一种与在海量通用数据集上训练的模型竞争的方法。
随着扩散模型不仅在图像生成领域,而且在文本领域不断深入发展,我们可以期待看到更多这种“重建式”学习范式。它们使我们能够从小型数据集中榨取每一盎司的价值,让 AI 更容易应用于利基的、现实世界的应用中。
](https://deep-paper.org/en/paper/2409.03203/images/cover.png)