Collecting data for AI training illustration

人人都在谈论人工智能模型、它们的架构、参数和性能基准。但很少有人谈论真正决定这些模型成败的因素: 数据。

为人工智能训练收集数据,理论上听起来很直接: 收集大量数据、清洗数据、送入管道、不断重复。然而在实践中,即使是经验丰富的团队,也会反复回到同样的问题。最常见的问题包括访问不稳定、样本存在偏差,或者数据集规模看似可观,却经不起真实世界的变化。

数据收集中的错误往往会在后期才暴露: 准确率开始下降,却没人能追溯原因。到那时,修补基础的成本远高于一开始就把基础建好。

人工智能训练中使用的数据类型

数据并非千篇一律。

有些数据集高度有序且结构化。它们通常以交易记录、CRM 导出和财务日志等形式,存在于表格或电子表格中。这类数据的结构可预测,因此模型通常能较好地处理。

再来看非结构化数据。它没有固定格式,也没有整齐的列,例如文本文档、图像、音频文件和社交媒体帖子。这类数据较为杂乱、强依赖上下文,却往往更能反映真实世界。用它训练模型需要额外的预处理和解读。

介于两者之间的是更灵活的半结构化数据。例如 JSON 响应、HTML 页面和 API 输出。它们遵循模式,但这些模式并不是严格的表格结构。对许多人工智能管道而言,大规模数据收集实际上就发生在这一层。

现代数据质量问题: 数据不准确

如何构建一个机器学习模型? 首先要训练它。因此,数据是否丰富至关重要。 

团队往往先关注模型架构,却没有先问一个更简单的问题: 数据到底来自哪里? 网页抓取、API,后者可靠但有时成本很高;还有调查、Kaggle 等公共数据仓库、内部数据库、日志和用户交互。数据来源无处不在。

然而,获得数据并不等于获得正确的数据。不准确的数据是现代人工智能系统中最顽固的问题之一。这些细微偏差会削弱数据集。混入重复记录、过时条目或标签错误的样本后,模型就会开始从噪声而非信号中学习。更糟的是,数据孤岛,也就是不同系统之间无法沟通的孤立信息集合,会阻止团队看到全貌。

糟糕的数据收集流程从一开始就会引入偏差或缺失数据。如果上游出现问题,自动化管道可能会大规模错误标注数据。人工录入数据如今仍然出人意料地常见,并会引入人为错误。随着时间推移,即使原本干净的数据也会随着时间推移而失效。如果更新没有在系统之间传播,昨天准确的记录就会变成今天过时的负担。

只要认真收集数据,无论在哪个行业,结果都会更好。在制药研究中,将实验数据和失败的试验一并纳入,而非只采用成功的实验室结果,能让人工智能系统更可靠。从负面结果中学习,会让模型更有韧性,也更准确。 

人工智能数据收集中的长期错误

1. 重数量,轻价值

团队常犯的错误是看重数量而非质量。更大的数据集看起来令人印象深刻,但真正改善模型的是高信号数据。另一个问题是: 不刷新数据集。没有主动学习循环,模型会慢慢退化。

2. 只针对顺利情况训练

团队会围绕干净、标准的场景进行优化。  如果自动驾驶系统从未见过罕见事件,当这些事件发生时,它就不知道该如何应对。 

3. 隐藏偏差

偏差往往比团队预想得更早出现。从你决定收集什么、依赖哪些来源的那一刻起,就已经在塑造模型看待世界的方式。如果某些群体、场景或边缘情况缺失,模型不会弥补这个空白。它只会学习主导模式,并把它们当作常态。

4. 合成数据过多

合成数据很有用。但当人工智能开始主要用人工智能生成的输出进行训练时,细微的差异会逐渐消失。随着时间推移,模型会面临通常所说的模型崩溃风险: 输出会变得重复而不自然。 

5. 法律与合规监督

许多团队忘记记录数据来源。来源审计线索不清晰的抓取数据集,可能会在合规审查中让项目停摆。在受监管环境中,这不是小错误。

人工智能系统中的目标泄漏: 为什么会发生?

当模型获得了在实际预测时不可能拥有的信息,就发生了目标泄漏。最典型的例子是使用未来数据。准确率可能看起来完美无缺,但在生产环境中,模型会崩溃,因为这些信息在当时根本不可用。

交叉验证错误是另一类问题。当所有数据点彼此独立时,常规的 K-fold 验证可以正常工作。但如果你的数据有时间顺序,或者有会话、用户这类分组关系,K-fold 可能会意外地把相同或相关信息同时放入训练集和测试集。评估在技术上仍然正确,但在实践中会产生误导。

即使流程中细微的变化也可能引入泄漏。调整标注逻辑、在项目中途修改评估数据集,或者未能控制验证漂移,都可能扭曲性能指标。

泄漏会让模型看起来比实际更好,而这正是危险所在。

发现并修复

数据收集很棘手。在错误造成不稳定之前发现它们至关重要。知道如何妥善修复它们,结果会大不相同。

发现问题的要点:

  • 检查每一项特征。 问问自己: 模型进行预测时,这项信息真的可用吗? 如果不是,那就是问题。
  • 检查重复、缺口和异常条目。 重复或缺失的数据可能导致项目失败。 
  • 分析分布。 突然的峰值或空白区域都是警告信号。
  • 审查管道。 确保转换没有在训练集和测试集之间意外泄漏信息。
  • 密切关注指标。 性能的异常跃升往往意味着存在隐蔽错误。

修复问题的要点:

  • 选择正确的拆分方式。 对任何与时间相关的数据采用基于时间的拆分,对用户、会话或实体采用分组拆分。始终先拆分数据,再应用转换。
  • 定期刷新数据。 采用主动学习循环或持续更新机制。
  • 处理偏差。 确保没有任何群体、场景或边缘情况被忽略。
  • 验证合成数据。 人工参与的闭环 (HITL) 审查能让合成数据保持真实且相关。
  • 记录一切。 记录数据来自哪里、何时收集,以及经历过哪些处理。
  • 在需要时使用代理它们有助于稳定数据采集、模拟真实条件,并避免数据重叠或重复。

尽早发现错误并认真修复,人工智能才能真正学到该学的内容。

相关文章

Share article: