|
开发机器学习 (ML) 应用程序的最大瓶颈之一是需要大量标记数据集来训练现代 ML 模型。创建这些数据集需要投入大量时间和费用,需要具有适当专业知识的注释者。此外,由于实际应用程序的发展,标记数据集通常需要丢弃或重新标记。
我们与斯坦福大学和布朗大学合作,提出了“ Snorkel Drybell:在工业规模上部署弱监督的案例研究”,探讨了如何将组织中现有的知识用作噪声更大、级别更高的监督(或通常称为弱监督),以快速标记大型训练数据集。在这项研究中,我们使用了一个实验性的内部系统 Snorkel Drybell,它调整了开源Snorkel框架以使用各种组织知识资源(如内部模型、本体、遗留规则、知识图等),以便在网络规模上为机器学习模型生成训练数据。我们发现这种方法的效率堪比手工标记数万个数据点,并揭示了在实践中如何创建现代机器学习模型的训练数据集的一些核心经验。
与手工标记训练数据不同,Snorkel DryBell 支持编写标记函数,以编程方式标记训练数据。在这项工作中,我们探索了这些标记函数如何捕获工程师关于如何使用现有资源作为弱监督启发式方法的知识。例如,假设我们的目标是识别与名人相关的内容。我们可以利用现有的命名实体识别(NER) 模型来完成这项任务,将任何不包含人物的内容标记为与名人无关。这说明了如何将现有的知识资源(在本例中为训练有素的模型)与简单的编程逻辑相结合,为新模型标记训练数据。还要注意,重要的是,这个标记函数在许多情况下返回 None(即弃权),因此只标记一小部分数据;我们的总体目标是使用这些标签来训练可以推广到新数据的现代机器学习模型。
这种用于标记训练数据的编程接口比手动标记单个数据点更快、更灵活,但生成的标签质量显然比手动指定的标签低得多。这些标记函数生成的标签通常会重叠和不一致,因为标记函数不仅可能具有任意未知的准确度,而且还可能以任意方式相关(例如,通过共享公共数据源或启发式方法)。
为了解决嘈杂和相关的标签问题,Snorkel DryBell 使用生成建模技术以可证明的一致方式自动估计标记函数的准确度和相关性(无需任何基本事实训练标签),然后使用此技术重新加权并将其输出组合成每个数据点的单个概率标签。在高层次上,我们依靠标记函数之间观察到的一致性和不一致性(协方差矩阵),并使用新的矩阵完成式方法学习最能解释此观察到的输出的标记函数准确度和相关性参数。然后可以使用生成的标签来训练任意模型(例如在TensorFlow中),如下面的系统图所示。
使用多样化知识源作为弱监督
为了研究 Snorkel Drybell 的功效,我们使用了三个生产任务和相应的数据集,旨在对网络内容中的主题进行分类、识别某些产品的提及以及检测某些实时事件。使用 Snorkel DryBell,我们能够利用各种现有或快速指定的信息源,例如:
启发式和规则:例如关于目标领域的现有的人类编写的规则。
主题模型、标记器和分类器:例如关于目标域或相关域的机器学习模型。
汇总统计数据:例如有关目标域的跟踪指标。
知识或实体图:例如有关目标领域的事实数据库。
我们利用这些组织知识资源在基于MapReduce模板的管道 中编写标记函数。每个标记函数接收一个数据点,然后弃权或输出一个标签。结果是一大组以编程方式生成的训练标签。但是,这些标签中的许多都非常嘈杂(例如来自启发式方法),相互冲突,或者对于我们的任务来说太粗粒度(例如主题模型),这导致了 Snorkel DryBell 的下一阶段,旨在自动清理标签并将其集成到最终训练集中。
对准确度进行建模以合并和重新利用现有源
为了处理这些嘈杂的标签,Snorkel DryBell 的下一阶段将标记函数的输出合并为每个数据点的单个置信度加权训练标签。具有挑战性的技术方面是必须在没有任何真实标签的情况下完成此操作。我们使用生成建模技术,该技术仅使用未标记的数据来学习每个标记函数的准确度。该技术通过观察标记函数输出之间的一致和不一致矩阵进行学习,同时考虑已知(或统计估计)的相关结构。在 Snorkel DryBell 中,我们还在 TensorFlow 中实现了这种建模方法的一种新的更快、无采样版本,以处理网络规模的数据。
通过在 Snorkel DryBell 中使用此过程组合和建模标记函数的输出,我们能够生成高质量的训练标签。事实上,在两个有手工标记的训练数据可供比较的应用程序中,我们使用 Snorkel DryBell 的标签训练模型所获得的预测准确度与使用 12,000 和 80,000 个手工标记的训练数据点训练同一模型所获得的预测准确度相同。
将不可服务的知识转移到可服务模型在许多设置中, 可服务特征(可用于生产)与不可服务特征(因速度太慢或成本太高而无法用于生产)
之间还有一个重要区别。这些不可服务的特征可能具有非常丰富的信号,但一个普遍的问题是如何使用它们来训练或以其他方式帮助可在生产中部署的可服务模型?
在 Snorkel DryBell 中,我们发现用户可以在一个不可服务的特征集上编写标记函数(即表达他们的组织知识),然后使用 Snorkel DryBell 输出的训练标签来训练在另一个可服务的特征集上定义的模型。这种跨特征迁移在我们创建的基准数据集上将我们的性能平均提高了 52%。更广泛地说,它代表了一种简单但强大的方法,可以使用速度太慢(例如昂贵的模型或聚合统计数据)、私有(例如实体或知识图)或不适合部署的资源来训练廉价的实时特征上的可服务模型。这种方法可以看作是一种新型的迁移学习,我们不是在不同数据集之间迁移模型,而是在不同的特征集之间迁移领域知识 - 这种方法不仅在工业领域,而且在医疗环境和其他领域都有潜在的用例。
下一步
展望未来,我们很高兴看到还有哪些其他类型的组织知识可以用作弱监督,以及 Snorkel DryBell 使用的方法如何实现跨组织信息重用和共享的新模式。 有关更多详细信息,请查看我们的论文,有关更多技术细节、博客文章和教程,请查看snorkel.stanford.edu上的开源 Snorkel 实现。
致谢
本研究由 Google、斯坦福大学和布朗大学合作完成。我们要感谢所有参与的人,包括 Stephen Bach(布朗大学)、Daniel Rodriguez、Yintao Liu、Chong Luo、Haidong Shao、Souvik Sen、Braden Hancock(斯坦福大学)、Houman Alborzi、Rahul Kuchhal、Christopher Ré(斯坦福大学)、Rob Malkin。
|
|