机器学习项目中避免结构性偏见的实用指南

本文探讨了机器学习项目中结构性偏见的识别与避免方法,包括数据选择策略、评估基准设置、标注指南制定、模型验证技巧以及生产环境中的数据漂移检测,为构建可靠ML系统提供实用建议。

如何发现并避免机器学习项目中的结构性偏见

Sofie Van Landeghem
NLP和机器学习自由职业者 & 开源维护者
PyData London 2024

管理期望

稳健解决方案

  • 迭代数据模型
  • 策划数据集
  • 微调机器学习模型
  • 提升准确性与效率

初始原型

  • 创建数据模型
  • 组装数据集
  • 构建初步机器学习模型
  • 建立准确性与效率基线

构建原型:聚焦数据!

  1. 选择正确数据
  2. 建模数据
  3. 构建适配数据的机器学习模型/算法
  4. 对数据进行评估
  5. 对数据模型和算法进行迭代改进

为何需要标注数据?

即使现代LLM具备零样本学习能力,我们仍然需要:

  • 评估:衡量性能和进展
  • 训练监督模型:小型专业化模型可能更具成本效益
  • 调整LLM:少样本提示示例、微调开源LLM

评估你的评估策略

用例:实体链接(EL)或消歧

从维基链接组装训练数据,构建知识库(KB)并评估:

  • 修剪KB以实现内存/准确性平衡
  • 随机基线:54%
  • 使用spaCy和Thinc实现的实体链接模型:79%

但通过与先验概率比较发现,模型仅 marginally 改进基线(78.2% vs 79%),揭示数据集中存在的结构性问题。

关键建议:确保攀登正确的山峰

  • 数据是否可靠?
  • 测试集是否能代表真实世界数据?
  • 评估是否考虑层次概念?
  • 相关概念的误判是否受到同等严厉的惩罚?
  • 是否使用合理的基线评估模型准确性?

数据模型与标注策略

用例:识别文本中的学校名称

初始NER模型获得92% F分数,但通过将模型应用回训练数据发现:

  • 预测错误可能实际上是标注错误
  • 揭示结构性问题或偏见
  • 需要制定详细的标注指南

推荐实践

  1. 编写标注指南:定义标签模式,提供详细标注说明
  2. 构建直观标注框架:支持繁琐重复任务,减少认知负荷
  3. 设计合适的标签方案:确保清晰无歧义,适合建模方法
  4. 测量标注者间一致性:识别标签混淆,更新指南
  5. 绘制学习曲线:估计通过标注更多数据可获得的收益

设置外部评估

内部评估:基于字符的标注,对应ML/NLP任务的数据模型

外部评估:更高层次的视角,对应下游需求的数据,对数据模型变化具有鲁棒性

外部评估揭示什么是真正重要的,例如在NER任务中,严格评估可能显示错误,但下游处理仍能正确识别实体。

语料库构建中的偏见

用例:识别动物群和海底沉积物

不同设备导致图像质量差异,建议:

  • 原型阶段:限定范围,设定可靠基准
  • 超越原型:通过数据增强、探索不同架构使模型稳健
  • 生产环境:通过人工分析和自动检测监控数据漂移

用例:识别新闻中的政治立场

基于关键词的语料选择可能导致假阴性,建议:

  • 形式化输入选择程序:训练文档级分类器
  • 采用瀑布策略:减少标注者认知负荷,训练专业化模型

数据分割建议

避免:创建完全随机的数据集分割

推荐

  • 文档级分割:将同一文档的所有示例保持在同一切割中
  • 确定性和可重复的分割:使用文档ID的确定性哈希值

总结建议

运行机器学习项目时的关键建议:

  • 通过形式化选择程序避免选择偏见
  • 创建确定性、文档级的训练/开发/测试分割
  • 精心设计数据模型/标签方案
  • 编写详细的数据指南
  • 建立有意义的外部评估
  • 查看标注者间一致性统计并绘制学习曲线
  • 将初步模型应用回训练数据
  • 手动检查黄金标注和错误预测
  • 确保攀登正确的山峰
  • 数据质量应置于核心位置!
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计