分类任务微调

概述

分类任务微调是指针对文本分类、意图识别、情感分析等结构化输出任务进行的模型微调。与生成式任务微调不同,分类任务有固定的输出类别,更容易评估和优化。

适用任务类型

单标签分类

  • 意图识别:用户输入的意图分类(查询、投诉、咨询等)
  • 情感分析:文本情感倾向(正面、负面、中性)
  • 主题分类:文档主题归类(科技、体育、娱乐等)
  • 垃圾邮件检测:邮件是否为垃圾邮件

多标签分类

  • 标签预测:文章可能属于多个标签
  • 技能识别:简历中的多项技能
  • 症状识别:医疗文本中的多种症状

序列标注

  • 命名实体识别(NER):人名、地名、机构名等
  • 词性标注:每个词的词性
  • 关键信息抽取:合同中的关键条款

模型架构设计

分类头设计

在预训练模型基础上添加分类层,通常使用[CLS] token或池化后的表示作为输入。

多标签分类架构

多标签分类使用sigmoid激活函数,每个类别独立预测概率。

数据格式与预处理

单标签分类数据

{
  "text": "我想查询我的账户余额",
  "label": "查询",
  "label_id": 0
}

多标签分类数据

{
  "text": "这篇文章讨论了人工智能在医疗领域的应用",
  "labels": ["科技", "医疗", "人工智能"],
  "label_ids": [0, 1, 2]
}

损失函数选择

单标签分类

  • 交叉熵损失:标准选择
  • 带权重的交叉熵:处理类别不平衡

多标签分类

  • 二元交叉熵损失:每个标签独立计算
  • Focal Loss:处理难样本和类别不平衡

微调策略

基于PEFT参数高效微调的分类

使用LoRA等方法进行参数高效的分类任务微调。

渐进式训练

  1. 冻结基础模型,只训练分类头
  2. 解冻部分层继续训练
  3. 全模型微调

评估指标

单标签分类指标

  • 准确率(Accuracy)
  • 精确率(Precision)
  • 召回率(Recall)
  • F1分数
  • 混淆矩阵

多标签分类指标

  • Hamming Loss:预测错误的标签比例
  • Macro F1:各类别F1分数的平均
  • Micro F1:全局F1分数

推理策略

单标签推理

使用softmax获取概率分布,选择概率最高的类别。

多标签推理

使用sigmoid获取每个标签的概率,通过阈值判断是否预测该标签。

动态阈值优化

在验证集上为每个类别寻找最优阈值,提升多标签分类性能。

实战案例:客服意图识别

数据准备

构建包含多种客服场景的意图分类数据集,如订单查询、退货申请、信息咨询、投诉建议等。

模型训练

使用中文预训练模型(如BERT-base-chinese)作为基础,添加分类头进行微调。

常见问题与解决方案

类别不平衡

  • 使用加权损失函数
  • 数据增强技术
  • 过采样少数类别
  • 使用Focal Loss

标签噪声

  • 数据清洗和质量检查
  • 使用置信度学习方法
  • 多轮标注和一致性检查

新类别适应

  • 少样本学习方法
  • 原型网络
  • 元学习方法

相关概念