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

27 阅读4分钟

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

构建原型:聚焦数据!

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

为什么仍需要适当的黄金标注?

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

评估你的评估

用例:实体链接或消歧

通过从维基链接组装训练数据,构建知识库并优化内存/准确性权衡。

  • 随机基线:54%
  • 使用spaCy和Thinc实现的实体链接模型:79%
  • 先验概率基线:78.2%

模型仅略微优于简单基线,需要仔细检查数据质量。

数据模型与标注策略

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

初始NER模型获得92% F分数,但通过将模型应用回训练数据集发现标注错误和结构性问题。

建议:撰写标注指南

  • 定义标签模式
  • 为标注者提供详细指南
  • 当实体的全名和缩写连续出现时,每个都应标注为单独的实体

建议:直观的标注框架

  • 为繁琐和重复性任务提供支持
  • 一次专注于单个任务
  • 验证回调以帮助执行指南

建议:设计适当的标签方案

确保标签方案清晰明确,与建模方法相匹配,允许未来扩展,并与数据下游使用兼容。

建议:测量标注者间一致性

绘制不同标注者标签之间的重叠图,识别混淆区域,用于更新指南和标签方案。

建议:绘制学习曲线

绘制F分数与使用的训练数据百分比的关系图,估算通过标注更多数据可以获得多少收益。

建议:设置外部评估

内在评估对应ML/NLP任务的数据模型,外在评估对应下游需求的更高层次视图,对变化的数据模型具有鲁棒性。

外部评估揭示了什么是真正重要的,可能不会导致最终错误,即使严格评估设置中会出现误报和漏报。

语料库构建中的偏见

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

不同设备导致图像质量变化。

建议:原型阶段坚持有限范围

  • 明确初始范围:来源、输入类型、标签集
  • 向客户澄清模型不会超出原始范围泛化
  • 设置可靠的基准

建议:超越原型 - 使模型鲁棒

  • 数据增强:添加人工噪声,变换图像创建更多变化
  • 探索不同架构和训练超参数
  • 测量并避免过拟合

建议:生产环境 - 检测数据漂移

  • 手动:定性分析和用户反馈,定期策划新的评估集
  • 自动:测量预测标签分布,测量新预测的置信度分数

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

客户目标:识别所有关于英国脱欧的政治参与者和观点。

基于关键词的语料库选择

  • 文本选择:标题中提到"Brexit"的文章
  • 基于关键词的预选阻止评估其他文章中的假阴性数量
  • 可能错过不符合原始标准的相关信息

建议:形式化输入选择程序

  • 首先训练简单的文档级分类器
  • 区分政治新闻文章与其他类别
  • 识别与英国脱欧相关的文章
  • 在数据不平衡时特别有益

示例:瀑布策略 - 第1步

文本分类:快速文档级决策,训练ML分类器,可重用组件,易于过滤相关文档。

示例:瀑布策略 - 第2步

细粒度分析:仅在通过初始步骤的文档上执行,如命名实体识别。

两个独立步骤减少标注者的认知负荷,允许训练专门的ML模型。

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

在真实世界项目中不应这样做。

建议:文档级分割

  • 将来自同一原始文档的所有示例保留在同一分割中
  • 否则会从训练数据向测试数据"泄露"信息
  • 人为提升性能数字

建议:确定性和可重复的分割

使用唯一文档ID的确定性哈希来确定分割,确保同一文档始终在同一分割中,即使扩展数据集或重新运行分割算法。

总结

运行机器学习项目的建议

  • 通过形式化选择程序避免选择偏见
  • 创建确定性、文档级的训练/开发/测试分割
  • 仔细设计数据模型/标签方案
  • 撰写详细的数据指南
  • 设置有意义的外部评估
  • 查看标注者间一致性统计并绘制学习曲线
  • 将初步模型应用回训练数据
  • 手动检查黄金标注和不正确预测
  • 确保你在爬正确的山
  • 数据质量应处于核心位置!