如何微调 SLM 以进行情绪识别

用于在不平衡训练集上微调 Mistral Small 3.1 以对社交媒体交流中的 15 种情绪进行分类的 Python 教程《如何微调 SLM 进行情绪识别》一文首先出现在《走向数据科学》上。

来源:走向数据科学

简介

模型 (SLM) 将情感推断为单个分数,捕获文本的整体情感基调。对于许多用例来说,正负分类并不能说明公司所需的全部情况。情绪识别模型更进一步,将情绪分解为情绪类别(“愤怒”、“赞同”、“失望”等),并将概率分配给文本中的一组情绪。然后可以对公司收到的数据集中的情感内容(客户票证、电子邮件、品牌相关讨论)进行建模,并对不断变化的情况做出快速反应。

对于我们最近的一个项目,在线媒体中的情绪建模,我们需要一个具有开放权重和灵活许可的情绪识别模型,保持高透明度标准,当然,还受益于与开放模型相关的较低成本。我们主观上更喜欢欧洲模型,但 Hugging Face 没有提供带有开发模型卡的 Mistral 替代方案。一个可能的原因是,用于情绪识别的最详细的训练集,即 28 种情绪的 GoEmotions 数据集,是高度类别不平衡的。在高级不平衡数据集上微调 SLM 以在测试中表现良好需要更深入的关注。

我们通过结合三种技术来处理类别不平衡问题:(1) 对最有代表性的情感类别进行欠采样,(2) 使用 Nature 2025 ISMOTE 算法综合扩展少数类别,以及 (3) 对损失函数进行加权。通过这种技术组合,现在在 Hugging Face 上发布的 MistralSmall-3.1.GoEmotions 可以推断出与我们的项目相关的大多数目标情感,F1 > 0.7。

本文详细解释了如何微调开放权重 SLM。我们还将弄清楚:

  • 如何使用 2025 ISMOTE 算法预处理类别不平衡数据以进行 LLM 微调。
  • 如何通过微调用于文本数据中的情感识别的小语言模型,将情感分解为情感类别。