驾驭 Twitter 噪声: 监督对比学习如何提升微博客分类效果
像 Twitter (现在的 X) 这样的社交媒体平台每秒都会产生海量的数据。对于研究人员和数据科学家来说,这些数据是进行情感分析、仇恨言论检测和趋势预测的金矿。然而,分析“微博客 (Microblogs) ”是出了名的困难。这些文本篇幅短小,充斥着拼写错误、俚语和表情符号,而且往往完全缺乏理解用户意图所需的上下文。
为了解决这个问题,自然语言处理 (NLP) 目前的趋势是“做大”。最先进的模型通常依赖于大规模预训练——采用像 BERT 这样的模型,并在数百万条推文上进行训练 (例如 BERTweet) ,或者使用像 GPT-4 这样的巨型大语言模型 (LLM) 。虽然有效,但这些方法极其耗费资源。它们需要昂贵的硬件,而小型研究实验室或个人开发者根本无法负担。
这就引出了汉堡大学和吕讷堡大学的研究人员提出的一个引人注目的问题: 我们能否在不耗尽计算资源的情况下,在嘈杂的社交媒体数据上达到最先进的性能?
在他们的论文《Revisiting Supervised Contrastive Learning for Microblog Classification》 (重访用于微博客分类的监督对比学习) 中,作者提出了一种更智能、更高效的模型微调方法。通过使用监督对比学习 (SCL) , 他们证明了一个标准的、较小的模型 (RoBERTa-base) 可以胜过 ChatGPT 并与其特定领域的巨型对手相抗衡,同时在计算成本上保持亲民。
在这篇深度文章中,我们将剖析 SCL 的工作原理,它为何能创建更好的文本表示,以及它如何改变模型处理社交媒体文本混乱状况的方式。
微博客分类的挑战
在理解解决方案之前,我们必须先了解问题所在。微博客分类在文本分类领域是一个独特的难题。与新闻文章或书籍不同,推文具有以下特点:
- 非正式: 语法规则经常被忽略。
- 嘈杂: 拼写错误和创意拼写是常态而非漏洞。
- 缺乏语境: 由于严格的字符限制,用户会省略背景信息,假设读者已经了解相关情况。
标准的监督学习——训练模型以最小化交叉熵 (Cross-Entropy, CE) 损失——往往在此处表现挣扎。交叉熵仅关注标签的正确性。它并不一定强制模型真正“理解”句子之间的语义关系。如果一条推文模棱两可,标准模型可能会将其置于内部理解的“灰色地带”,导致分类错误。
预训练与微调的局限性
主流的解决方案一直是特定领域的预训练 。 这涉及采用一个基础模型,并在海量的推文语料库上对其进行进一步训练 (例如 TimeLMs 或 XLM-T) 。这使模型与该领域的语言保持一致。然而,这是一条“昂贵”的路线。
另一种选择是微调 , 即我们采用一个通用模型 (如 RoBERTa) ,并专门在我们的目标数据集 (例如仇恨言论数据集) 上对其进行训练。这是负担得起的,但通常效果不如使用特定领域的模型。
这篇论文的研究人员专注于微调阶段。他们认为,通过改变模型学习的方式 (损失函数) ,我们可以在无需大规模预训练的情况下大幅增强微调过程。
核心概念: 监督对比学习 (SCL)
为了改进微调,作者转向了对比学习 。 在传统的机器学习中,我们通常独立对待每个数据点。而在对比学习中,我们要关注数据点之间的关系。
直觉很简单:
- 拉近相似的事物。
- 推开不相似的事物。
可视化直觉
想象一个几何空间 (一个超球面) ,其中每条推文都是一个点。我们要让所有“快乐”的推文紧密聚类在一起,而所有“悲伤”的推文聚在一起,并远离“快乐”的聚类。
标准训练并不显式地强制这种聚类结构;它只是画一条线来分隔它们。然而,监督对比学习 (SCL) 显式地强制了这种聚类。

如图 1 所示,考虑一个模棱两可的推文: “Post vacation blues are so real” (假期后的忧郁太真实了) (带红边的橙色点) 。标准模型可能会被“vacation” (假期,通常是积极的) 这个词弄糊涂,并将该点置于绿色的“快乐 (Joy) ”聚类附近。
但是,SCL 利用了标签信息。它知道这条推文被标记为“悲伤 (Sadness) ”。因此,损失函数就像磁铁一样 (由橙色箭头表示) ,强行将这条模棱两可的推文拉向其他明确的悲伤示例,比如“This is the worst feeling ever” (这是最糟糕的感觉) 。
这创造了一种“更紧凑”的表示,其中类别清晰且分离良好,使得最终的分类更加稳健。
方法论: 幕后机制
我们在数学和架构上如何实现这一点?作者引入了一个通用的微调框架,将标准分类与对比学习相结合。
架构
该系统使用基于 Transformer 的模型 (RoBERTa-base) 作为骨干。工作流程如图 2 所示:

以下是分步流程:
- 输入数据: 系统接收一批推文 (批量大小 \(N_{bs}\)) 。
- 特征提取器: 推文被输入 RoBERTa 以获得原始嵌入 (\(N_{feature}\)) 。
- Dropout 增强: 这是一个巧妙的技巧。如何为对比学习创建同一文本的“视图”?你不能像处理图像那样旋转文本。相反,作者将同一句子通过模型两次,但每次应用不同的 Dropout 掩码 (随机关闭神经元) 。这会导致完全相同的输入句子产生两个略有不同的嵌入。
- 投影网络: 这些嵌入被投影到一个低维空间 (\(N_{proj}\)) 。
- 双重损失计算:
- 路径 1 (绿色) : 计算监督对比损失 , 以根据标签对嵌入进行聚类。
- 路径 2 (蓝色) : 计算标准交叉熵损失 , 以确保模型实际上预测出正确的类别。
SCL 的数学原理
这种方法的核心是监督对比损失函数。

让我们拆解这个公式:
- 锚点 (\(i\)): 我们当前正在查看的数据点。
- 正样本 (\(P(i)\)): 批次中与锚点共享相同标签的所有其他数据点。
- 负样本 (\(K(i)\)): 批次中具有不同标签的所有数据点。
- 分子: 我们计算锚点与其正样本之间的相似度 (点积) 。我们希望这个值很高 (最大化相似度) 。
- 分母: 我们计算锚点与其他所有人 (包括负样本) 之间的相似度。
- 对数/指数: 通过最小化负对数,我们强制分子变大 (靠近正样本) ,并强制分母相对于分子变小 (远离负样本) 。
与自监督学习 (仅将同一个图像/句子视为正样本对) 不同,SCL 使用标签。如果你有三条不同的推文都标记为“反讽”,SCL 会将它们都视为正样本并将它们拉到一起。
组合目标
模型不能只做对比学习;它仍然需要执行特定任务 (例如,检测情感) 。因此,最终的损失函数是对比损失和标准交叉熵 (CE) 损失的线性组合:

这里,\(\alpha\) 是一个权重系数。作者发现设置 \(\alpha = 0.5\) (给予聚类和分类同等的权重) 产生了最好的结果。
实验与结果
研究人员在两个主要基准上评估了他们的方法: TweetEval (包含 7 个子任务,如表情符号预测、仇恨言论和反讽检测) 和 Tweet Topic Classification (推文主题分类) 。
基准测试
TweetEval 提供了一个严格的测试,因为任务的难度和规模各不相同。有些数据集有 45,000 个训练样本,而像反讽检测这样的数据集只有不到 3,000 个。
Tweet Topic Classification (见下表 2) 涉及将推文分类为体育与游戏或流行文化等主题。

性能比较
结果令人印象深刻。作者将他们微调后的 RoBERTa 模型 (使用 CE+SCL) 与以下模型进行了比较:
- ChatGPT: 一个大型通用 LLM。
- 预训练语言模型: 专门在推文上训练的模型 (BERTweet, TimeLMs 等) 。
- 标准微调: 仅使用交叉熵 (CE) 训练的 RoBERTa。
表 3 总结了 TweetEval 上的结果:

结果的关键要点:
- SCL vs. 标准 CE: 所提出的方法 (Rob-bs CE+SCL) 在所有子任务中都优于标准微调 (Rob-bs CE) 。在“表情符号 (Emoji) ”和“反讽 (Irony) ”任务中,提升尤为显著。全局指标 (TE) 从 61.3 跃升至 64.1。
- SCL vs. ChatGPT: 微调后的 SCL 模型显著优于 ChatGPT。这凸显了对于特定的、嘈杂的任务,较小的、专用的模型往往优于巨大的通用模型。
- SCL vs. 领域预训练: 虽然像 BERTweet (在 8.5 亿条推文上训练) 这样的大型模型在某些领域仍然保持领先,但 SCL 模型的表现非常具有竞争力。关键在于,SCL 无需昂贵的预训练阶段就能达到这种性能,这使得资源有限的实验室也能使用它。
在 Tweet Topic Classification 任务上,结果更加引人注目。SCL 模型不仅改进了基线,还击败了之前的最先进技术 (SOTA) 模型。

- (注: 虽然图表集中表 4 的标题没有显式渲染,但论文文本证实,在 Tweet 主题分类上,CE+SCL 模型达到了 76.2 的 F1 分数,而 SOTA 为 70.0 F1。) *
为什么标签很重要: 消融研究
一个关键问题出现了: 这种提升是来自对比学习本身,还是专门来自对标签的使用?
为了回答这个问题,作者将 SCL 与自监督对比学习 (SSCL) 进行了比较。SSCL 的工作原理相似,但忽略标签。它将每条不同的推文视为一个单独的类别。这意味着如果你有两条都标记为“快乐”的推文,SSCL 会试图将它们推开,因为它们是不同的句子。
SSCL 的损失函数如下所示:

注意到区别了吗?这个版本缺少对 \(P(i)\) 的求和——它不聚合来自同一类别的其他正样本。
定量下降
当研究人员将 SCL 换成 SSCL (在对比步骤中忽略标签) 时,性能暴跌。在 Tweet Topic Classification 上,F1 分数从 76.2 (SCL) 降至 43.5 (SSCL)。这证明仅仅添加对比损失是不够的;利用标签信息来聚类语义类别是性能提升的关键驱动力。
定性证据
作者分析了混淆矩阵,以查看模型在哪里失败。

在 图 3 中,我们比较了情感检测的预测。
- (a) CE+SCL: 对角线是明亮的黄色,表明准确率很高。
- (b) CE+SSCL: 对角线较暗,非对角线区域有更多的“噪声”。
SSCL 模型 (无标签) 犯了明显更多的错误。它在包含表情符号的推文上尤其挣扎。例如,一条带有笑脸 🙂 的推文可能是讽刺性的并被标记为“愤怒 (Anger) ”,但 SSCL 模型看到笑脸,会将其归类为“快乐 (Joy) ”中的其他笑脸。在“愤怒”标签引导下的 SCL 学会了忽略误导性的表情符号,专注于文本情感。
下表突出了 SCL 成功而 SSCL 失败的具体示例:

在第一个例子中——“Yip. Coz he’s a miserable huffy guy 🙂” (是啊。因为他是个悲惨又傲慢的家伙 🙂) ——SSCL 模型被笑脸愚弄,预测为快乐 。 SCL 模型正确地识别出语境为愤怒 , 因为它受过训练,将相似标签的实例归为一组,覆盖了表情符号的视觉线索。
结论与启示
《重访用于微博客分类的监督对比学习》中提出的研究为 AI 社区提供了宝贵的一课: 效率可以与规模抗衡。
通过重新审视损失函数——模型学习的基本方式——作者证明了我们可以从现有的、易于管理的模型 (如 RoBERTa) 中挖掘出显著的性能。
关键要点:
- SCL 适用于文本: 它有效地将模棱两可的推文拉入正确的语义聚类。
- 资源效率: 小型实验室可以在无需从头开始进行大规模预训练的情况下获得接近 SOTA 的结果。
- 优于 LLM: 对于涉及嘈杂数据的特定分类任务,微调后的 SCL 模型优于像 ChatGPT 这样的通用巨头。
- 标签至关重要: 监督设置中的对比学习必须利用标签信息,以避免“类碰撞”,即语义相似的项目被意外推开。
当我们迈入一个由越来越大的模型主导的时代,像监督对比学习这样的技术提醒我们,更明智的训练策略与原始算力一样重要。对于处理社交媒体数据的开发者来说,这种方法提供了一条实用、稳健的路径来理清噪声。
](https://deep-paper.org/en/paper/file-3584/images/cover.png)