1. 先搞清楚“源偏移”到底在解决什么问题如果你处理过文本分类任务尤其是像气候披露报告这类专业文档的分类大概率会遇到一个典型问题训练数据里的文档风格、术语分布、段落结构和实际要分类的新文档差异很大。这种差异在学术上叫“源偏移”Source Shift简单说就是模型训练时见过的数据分布和它真正要处理的数据分布不一致。气候披露分类就是个特别明显的例子。训练数据可能来自早期自愿披露的企业报告语言相对保守术语不统一但最新监管要求下的披露文件可能更结构化术语更规范甚至带有法律条文特征。如果直接拿旧数据训练的模型去分类新文档效果往往会打折扣。更麻烦的是这种偏移不是简单的内容变化。它可能体现在用词习惯旧报告用“碳排放”新报告用“范围一、范围二排放”段落长度早期报告描述性内容多新报告更表格化、条目化上下文依赖同一个词在不同时期披露中的指代可能不同所以识别源偏移的存在判断它主要影响哪些特征再针对性调整模型比盲目增加数据量或换模型更有效。2. 判断你的分类任务是否真的遇到了源偏移不是所有分类效果下降都是源偏移造成的。先按这个顺序排查2.1 对比输入特征分布最直接的判断方式是抽样对比训练集和实际 inference 数据的特征。对于文本分类我一般会先看几个基础统计量文档长度分布计算训练集和实际数据的平均段落长度、标准差。如果新数据普遍更长或更短模型可能不适应。关键词频变化提取训练集的高频词列表统计这些词在新数据中的出现频率。如果关键术语频率差异超过30%就需要警惕。命名实体类型用简单的NER工具跑两组数据看组织机构、地点、时间等实体的分布是否显著不同。这些检查不需要复杂工具用Python几行代码就能跑# 示例对比训练集和实际数据的文档长度分布 import numpy as np train_lengths [len(doc.split()) for doc in train_docs] inference_lengths [len(doc.split()) for doc in inference_docs] print(f训练集平均长度: {np.mean(train_lengths):.1f} ± {np.std(train_lengths):.1f}) print(f实际数据平均长度: {np.mean(inference_lengths):.1f} ± {np.std(inference_lengths):.1f}) # 如果差异超过20%建议进一步分析 length_ratio np.mean(inference_lengths) / np.mean(train_lengths) if abs(length_ratio - 1) 0.2: print(文档长度差异明显可能存在源偏移)2.2 检查模型置信度分布另一个实用方法是观察模型在训练集和实际数据上的置信度分布在训练集或验证集上好模型的预测置信度通常较高且集中如果在实际数据上置信度明显下降、分布分散可能遇到了分布差异特别要注意那些模型“应该能分类对”但置信度很低的样本这个检查能帮你区分是模型能力不足还是数据分布问题。如果是前者需要调整模型结构或增加训练数据如果是后者微调策略会更有效。2.3 人工抽样验证统计指标只能提示风险最终还是要人工看样本。随机抽取20-30个分类结果不理想的案例重点看模型错分的样本是否具有某些共同特征这些特征在训练集中是否少见或不存在错误是否集中在某个特定类别或主题上人工分析虽然耗时但能提供统计方法无法捕捉的细微差异比如语气变化、论述逻辑差异等。3. 针对源偏移的微调策略选择确认存在源偏移后下一步是选择适当的微调方法。不同严重程度的偏移需要不同策略3.1 轻度偏移特征增强微调如果偏移主要体现在词汇层面比如新术语出现、表达方式变化但文档结构和分类逻辑基本不变可以采用特征增强的方式继续预训练用新数据中的无标签文本对LLM进行领域适应训练扩充词表针对新术语通过子词拆分或词表扩展让模型更好地理解数据增强对训练数据进行同义词替换、句式变换模拟分布变化这种方式的优点是改动小风险低适合偏移程度不大的场景。3.2 中度偏移分层微调当文档结构、论述方式也发生变化时需要更针对性的微调底层冻结顶层微调冻结LLM的底层参数只微调最后几层分类头适配器训练在模型中间层插入轻量级适配器模块只训练这些适配器提示微调通过软提示Soft Prompt调整模型行为适应新分布分层微调的计算成本相对较低且能有效防止模型“忘记”原有知识在气候披露这种专业领域特别实用。3.3 重度偏移领域自适应训练如果新旧数据差异极大比如从自愿披露转向强制披露监管框架完全不同可能需要更彻底的调整领域对抗训练让模型学习提取不受分布影响的特征重要性加权给与目标分布更相似的训练样本更高权重迁移学习先在类似领域数据上预训练再微调到目标任务这些方法计算成本较高适合分布差异确实很大的生产环境。4. 气候披露分类的具体微调实操基于实际项目经验气候披露分类的微调要特别注意以下几点4.1 数据准备阶段气候披露文档通常有这些特点预处理时要针对性处理多格式混合PDF、HTML、Word文档并存提取文本时要统一格式表格数据丰富气候数据常以表格形式出现要确保表格内容被正确提取为线性文本引用频繁大量引用标准、法规这些引用对分类很重要不能简单删除术语缩写多如TCFD、SASB、GHG等要建立缩写扩展表我建议的预处理流程def preprocess_climate_document(text): # 1. 统一换行和空格 text re.sub(r\s, , text) # 2. 识别并标准化常见缩写 abbreviation_map { TCFD: Task Force on Climate-related Financial Disclosures, GHG: greenhouse gas, # ... 其他领域特定缩写 } for abbr, full in abbreviation_map.items(): text text.replace(abbr, f{abbr} ({full})) # 3. 保留章节标题结构 # 气候披露通常有标准章节如Governance, Strategy, Risk Management # 这些标题本身就是重要的分类特征 return text4.2 标签体系设计气候披露分类不能简单套用通用情感分类或主题分类的标签体系。基于TCFD等框架我建议采用分层标签一级分类披露框架符合性如TCFD对齐、SASB对齐、自愿披露二级分类披露质量如定量数据充分、定性描述详细、缺乏实质内容三级分类具体内容领域如治理结构、战略规划、风险管理、指标目标这种分层设计既便于模型学习也符合实际业务需求。微调时可以先训练一级分类再逐步细化。4.3 微调参数设置针对气候文本的特点微调LLM时这些参数需要特别关注training_args { learning_rate: 2e-5, # 比通用任务稍低气候文本专业性强 num_train_epochs: 5-8, # epoch数稍多给模型更多时间适应领域特征 per_device_train_batch_size: 8, # 批量大小根据显存调整但不要太小 max_seq_length: 1024, # 气候文本较长但也要考虑模型限制 warmup_ratio: 0.1, # 预热比例稍高稳定训练过程 }特别要注意的是学习率设置太高的学习率会让模型过快忘记预训练知识太低的学习率又难以适应新分布。2e-5是个比较稳妥的起点。5. 评估微调效果的关键指标微调后不能只看准确率要多维度评估5.1 分类性能指标除了常规的准确率、F1分数气候披露分类要特别关注类别间F1差异各个类别的F1分数不应该差异过大特别是少数类别混淆矩阵分析看错误是否集中在某些特定类别对上这能揭示标签定义问题置信度校准模型预测概率应该反映真实正确可能性不能过度自信或保守5.2 分布适应性指标专门评估模型对源偏移的适应程度域分类误差训练一个简单分类器区分训练集和测试集如果微调后的特征让这个分类器错误率升高说明域差异减小了特征分布距离计算微调前后特征分布的MMD或CORAL距离距离减小说明适应有效5.3 业务相关指标最终要回归业务价值关键信息召回率对于气候披露某些关键信息如减排目标、治理结构的召回比整体准确率更重要人工审核工作量微调后需要人工复核的样本比例是否下降处理速度在保证质量的前提下吞吐量是否满足业务需求6. 生产环境部署的注意事项微调好的模型要真正用起来还需要考虑这些工程细节6.1 版本管理与回滚气候披露分类模型可能需要频繁更新要有完善的版本管理每次微调保存完整的训练配置、数据版本、模型权重部署新版本时保留旧版本接口方便快速回滚记录每个版本在不同数据切片上的性能为后续优化提供参考6.2 监控与预警生产环境要建立监控体系数据分布监控实时检测输入数据的分布变化及时发现新的源偏移性能衰减预警当准确率、召回率等指标持续下降时自动告警异常输入检测识别训练时未见过的文档类型或格式6.3 持续学习机制气候披露领域发展很快模型需要持续适应建立反馈循环将人工校正结果用于后续微调定期用新数据评估模型性能制定重训练计划考虑在线学习或增量学习方案减少全量重训练成本7. 常见问题与排查思路实际落地过程中这些问题比较常见7.1 微调后效果反而变差如果微调后性能下降按这个顺序排查检查学习率最常见原因是学习率过高模型忘记了基础能力验证数据质量新标注数据是否存在标签噪声或定义不一致分析过拟合在训练集上效果很好但验证集差可能是过拟合评估分布匹配确认微调数据确实代表了目标分布7.2 模型对某些类别始终表现不佳某些气候披露类别可能天生难以分类定义模糊的类别如一般性描述与实质性披露的边界可能不清晰样本极不平衡的类别某些特定披露类型在训练数据中很少见需要领域知识的类别如技术性较强的减排措施描述解决方案包括重新审视标签定义、针对性收集更多样本、引入领域词典或规则辅助判断。7.3 处理长文档时的性能问题气候披露文档通常较长而LLM有长度限制分段处理策略将长文档按章节或段落拆分分别分类后再聚合层次分类方法先用粗粒度模型判断整体类别再用细粒度模型处理关键段落关键信息提取先识别文档中的关键句子或表格只对这些部分进行详细分类关键是要在完整上下文和计算效率之间找到平衡。处理源偏移下的文本分类最重要的不是追求最复杂的算法而是建立系统的评估和迭代流程。从数据分布分析到针对性微调再到生产监控每个环节都要扎实。气候披露这类专业领域尤其如此——模型不仅要统计上正确还要符合领域逻辑和业务需求。