“人工智能始于’好’数据”这种说法,得到了数据科学家、分析师和企业主的广泛认同。我们为预测、分类和各种分析任务构建复杂人工智能模型的能力有了显著提高,并且有大量(相当容易使用的)工具允许数据科学家和分析师在几天内实现一个复杂模型。随着建模变得更加容易,高质量数据的问题变得比以往任何时候都更加明显。O’Reilly最近的一项调查发现,那些拥有成熟人工智能实践的人(成熟的衡量标准是,他们的模型存在于生产系统中多久了)将“缺乏数据或数据质量问题”作为阻碍进一步利用人工智能技术的主要瓶颈。
尽管在构建健壮模型方面取得了进展,但现实中,有噪音的数据和不完整的数据仍然一个有效端到端解决方案的最大障碍。在结构化企业数据中,这个问题甚至更加突出。这些数据集通常是孤立的、不完整的和极其稀疏的。此外,领域知识通常没有被编码在数据中(也没有被完全记录),然而这些信息是这些数据不可分割的一部分(参考Forbes的这篇文章)。如果您还考虑到数据稀疏性的规模以及领域知识的需求的话,那么您将面临数据质量问题的大风暴。
在这篇博文中,我们阐明了为机器学习模型生成数据的各种努力。总的来说,有两条主要的工作路线来实现这个目标:(1)清理你拥有的数据,和(2)生成更多的数据来帮助训练需要的模型。这两个方向都见证了在有效使用机器学习模型方面的新进展,这些进展基于学术界的数个新成果。
数据集成和清理
处理数据质量的最大陷阱之一是对所有数据问题用相同方式处理。学术研究在描述不同类别的数据质量问题时更加慎重。我们看到两大类问题,它们具有不同程度的复杂性,并且经常要求不同的方法和工具来解决它们。由于他们在大多数数据科学项目上花费了大量的时间,我们在这篇文章中强调了这两类主要的数据质量问题:
1. 数据统一和集成
2. 错误检测和自动修复/插补
数据统一和集成
即使用于大规模消息接收、消息传递、消息队列和流处理的开源工具正在兴起,孤立数据、数据集被困在各种业务单元的栅栏后面这一状况,也是任何大型企业的正常状态。数据统一或集成是指将这些数据整合到一个统一的数据环境中的一组活动。模式匹配和映射、记录链接、重复数据消除,以及各种监控活动是数据集成解决方案执行的任务类型。机器学习技术的进步提供了一种可扩展和高效的方式来取代传统的自上而下、基于规则的系统,这些系统在当今的大数据环境中通常会导致巨大的成本和非常低的成功率。自下而上的解决方案采用了人工引导的机器学习管线(如Tamr、Paxata或Informatica。在这里需要完全披露利益相关的信息是,Ihab Ilyas是Tamr的联合创始人之一),它们展示了如何利用可用的规则和人工专业知识来训练可扩展的集成模型,这些模型可以处理数千个数据源和大量数据。在先前的一篇文章中,我们讨论了使用机器学习解决这类问题的一些挑战和促进因素。
这类数据统一问题在解决方案的复杂性方面有其自身的特点:(1)问题复杂程度是输入数据大小的平方级别(因为我们需要将所有的东西与其他的东西进行比较),以及(2)主要的机器学习任务已经被较好的而理解了,并且主要是确定两个“东西”是否相同。这些特性对解决方案的设计有相当大的影响。例如,如果我们不能穷举所有需要检查的样本对,那么寻找重复或匹配模式的复杂复杂模型是我们最后才需要关心的问题。数据统一问题的有效解决方案往往是一项严肃的工程工作,旨在:(1)最大可能削减候选空间;(2)与专家有效互动,提供训练数据,并验证机器决策;和(3)保持丰富的数据血缘关系和源头,以跟踪审计、修改或复用决策,供将来的用例使用。由于机器学习任务的性质(在这里主要是二分类问题)和数据结构的丰富性,大多数成功的模型往往是好的、经典的“浅”模型,例如借助简单的(帮助处理字符串数据的)NLP模型,构建起来的随机森林。有关详细信息,请参见这篇关于数据集成状态的文章。
错误检测、错误修复和数值填补
孤立的或集成的数据经常是有噪音的或缺失的,有时甚至围绕一个事实互相矛盾。数据清理是一类注重发现和(希望)修复此类错误的数据质量工作。像数据集成一样,数据清理实践通常是通过密集的人工工作或基于特定规则的单点解决方案来执行的。然而,这类问题有不同的复杂性和特性,它们都会影响解决方案的设计:核心机器学习任务通常比匹配任务复杂得多,并且需要构建理解“数据是如何生成的”和“错误是如何引入的”的模型,以便能够逆向该过程,来发现和修复错误。
虽然数据清理长期以来一直是学术界的一个研究课题,但它经常被视为一个理论逻辑问题。这可能解释了为什么工业上没有采用任何解决方案。好消息是,来自学术界的研究人员最近设法利用大量的工作,并将其与可伸缩的统计推断能力相结合,用于数据清理。开源的全新概率性数据清理框架HoloClean是目前最先进的基于机器学习的自动错误检测和修复系统。HoloClean采用了众所周知的“噪声信道”模型来解释数据是如何产生的,以及数据是如何被“污染”的。然后,它利用所有已知的领域知识(如可用的规则)、数据中的统计信息和可用的可信来源来构建复杂的数据生成和错误模型。然后,这些模型被用来发现错误,并提出“最有可能”的替换值。
关心可扩展性,是数据清理和数据集成的一个共同点:构建这样复杂的模型需要通过一系列操作为整个数据集”提取特征“——例如,计算违反规则的行为、计算共现事件、或构建语言模型。因此,机器学习的数据清洗解决方案需要在避免操作复杂性方面有所创新。例如,HoloClean 使用技术来修剪数据库单元值,并对底层模型应用恰当的松弛,以实现所需的可扩展性。旧的研究工具在如何处理各种类型的错误,以及如何组合不同数据质量的输入(例如,业务和质量规则、策略、数据中的统计信号等)方面苦苦挣扎。)。全新框架从两个基本方面推进了这一技术的发展:(1)将数据的逻辑规则和统计分布结合成一个连贯的概率模型;以及(2)通过一系列系统和模型优化来扩展学习和推理过程,这使得它能够部署在舆情调查机构和大型商业企业中。
数据编程
通过质量统一和/或数据清理,来提高可用数据的质量,无疑是利用企业数据资产的一个重要且有前途的方法。然而,对更多数据的追求还没有结束,原因有两个:
1. 用于数据清理和质量统一的机器学习模型通常需要训练数据,以及有可能出现的错误样本,或者符合条件的数据记录。这些例子完全依赖于人类打标签是不可能的;随着机器学习模型变得越来越复杂,底层数据源变得越来越大,对更多数据的需求也在增加,其规模是人类专家无法达到的。
2. 即使我们通过质量统一和数据清理提高了可用数据的质量,也可能不足以支持更复杂的分析和预测模型(通常是构建了深度学习模型)。
解决这两个问题的一个重要范式,是数据编程的概念。简而言之,数据编程技术提供了“制造”数据的方法,我们可以将这些数据提供给各种学习和预测任务(它甚至可以用于机器学习数据质量解决方案)。实际上,“数据编程”统一了一类用于训练数据集程序化创建的技术。在这类工具中,像Snorkel这样的框架展示了如何让开发人员和数据科学家专注于编写打标签函数,以编程方式标记数据,然后对标签中的噪声进行建模,以有效地训练高质量的模型。虽然使用数据编程来训练高质量的分析模型的逻辑很清楚,不过我们还发现,它用于前述提到的“在数据统一和数据清理的机器学习模型中内部使用” 会很有趣。例如,像Tamr这样的工具利用客户编写的遗留规则来(以编程方式)生成大量标记的数据,为其匹配的机器学习管线提供动力。在最近的一篇论文中,HoloClean项目展示了如何使用“数据增强”,靠一个小小的随机数,来产生许多“正样本” ,并驱动其自动错误检测模型。
市场验证
我们在此展示的寻求高质量数据的解决方案已经在今天的市场上得到很好的验证。
- 大量财富1000强企业已经部署了数据统一的机器学习解决方案,如Tamr和Informatica。
- 自动数据清理解决方案(如全HoloClean)已经被多个金融服务机构和各国人口普查局采用。
- 正如越来越多的Snorkel用户所建议的,数据编程解决方案正开始改变数据科学家提供机器学习模型的方式。
随着我们在理解集成、清理和自动数据生成等各种问题之间的差异方面变得越来越成熟,我们有机会看到,在处理企业中有价值的数据资产方面,究竟能有怎样的真正改进。
机器学习应用依赖于三个主要组件:模型、数据和计算。许多文章是关于新的突破性模型的,其中许多是由研究人员创建的,他们不仅发表论文,还会开源在流行的的库中编写的代码。此外,自动化机器学习的最新进展产生了许多工具,可以(部分地)对模型选择和超参数调整进行自动化。因此,许多前沿模型现在可供数据科学家使用。类似地,云平台让开发人员更容易访问计算和硬件。
模型越来越成为商品。正如我们在上面的调查结果中所指出的,现实中,缺乏高质量的训练数据仍然是大多数机器学习项目的主要瓶颈。我们相信机器学习工程师和数据科学家将继续花大部分时间创建和完善训练数据。幸运的是,帮助正在向我们走来:正如我们在这篇文章中所描述的,我们终于开始看到一类直接针对高质量训练数据需求的技术。
相关内容:
- 机器学习对数据统一的三个促进因素:信任、传统和可扩展性
- “软件2.0和Snorkel”
- Ihab Ilyas 谈“为什么数据准备框架依赖于Human-In-The-Loop”
- Alex Ratner谈“快速创建大型训练数据集”
- Jeff Jonas谈“触手可得的实时命名实体解析技术”
- “数据隐私和机器学习时代下的数据收集和数据市场”