分类任务微调
概述
分类任务微调是指针对文本分类、意图识别、情感分析等结构化输出任务进行的模型微调。与生成式任务微调不同,分类任务有固定的输出类别,更容易评估和优化。
适用任务类型
单标签分类
- 意图识别:用户输入的意图分类(查询、投诉、咨询等)
- 情感分析:文本情感倾向(正面、负面、中性)
- 主题分类:文档主题归类(科技、体育、娱乐等)
- 垃圾邮件检测:邮件是否为垃圾邮件
多标签分类
- 标签预测:文章可能属于多个标签
- 技能识别:简历中的多项技能
- 症状识别:医疗文本中的多种症状
序列标注
- 命名实体识别(NER):人名、地名、机构名等
- 词性标注:每个词的词性
- 关键信息抽取:合同中的关键条款
模型架构设计
分类头设计
在预训练模型基础上添加分类层,通常使用[CLS] token或池化后的表示作为输入。
多标签分类架构
多标签分类使用sigmoid激活函数,每个类别独立预测概率。
数据格式与预处理
单标签分类数据
{
"text": "我想查询我的账户余额",
"label": "查询",
"label_id": 0
}
多标签分类数据
{
"text": "这篇文章讨论了人工智能在医疗领域的应用",
"labels": ["科技", "医疗", "人工智能"],
"label_ids": [0, 1, 2]
}
损失函数选择
单标签分类
- 交叉熵损失:标准选择
- 带权重的交叉熵:处理类别不平衡
多标签分类
- 二元交叉熵损失:每个标签独立计算
- Focal Loss:处理难样本和类别不平衡
微调策略
基于PEFT参数高效微调的分类
使用LoRA等方法进行参数高效的分类任务微调。
渐进式训练
- 冻结基础模型,只训练分类头
- 解冻部分层继续训练
- 全模型微调
评估指标
单标签分类指标
- 准确率(Accuracy)
- 精确率(Precision)
- 召回率(Recall)
- F1分数
- 混淆矩阵
多标签分类指标
- Hamming Loss:预测错误的标签比例
- Macro F1:各类别F1分数的平均
- Micro F1:全局F1分数
推理策略
单标签推理
使用softmax获取概率分布,选择概率最高的类别。
多标签推理
使用sigmoid获取每个标签的概率,通过阈值判断是否预测该标签。
动态阈值优化
在验证集上为每个类别寻找最优阈值,提升多标签分类性能。
实战案例:客服意图识别
数据准备
构建包含多种客服场景的意图分类数据集,如订单查询、退货申请、信息咨询、投诉建议等。
模型训练
使用中文预训练模型(如BERT-base-chinese)作为基础,添加分类头进行微调。
常见问题与解决方案
类别不平衡
- 使用加权损失函数
- 数据增强技术
- 过采样少数类别
- 使用Focal Loss
标签噪声
- 数据清洗和质量检查
- 使用置信度学习方法
- 多轮标注和一致性检查
新类别适应
- 少样本学习方法
- 原型网络
- 元学习方法