通过主动学习解决数据标注难题

文章目录

  • 1. 主动学习介绍
  • 2. 使用主动学习的三大好处
  • 3. 如果主动学习真的很好,那为什么每个人都不用呢?
  • 4. 如何使用主动学习
  • 5. Humanloop
  • 6. 小结

1. 主动学习介绍

  数据标注通常是机器学习中的最大瓶颈,为了训练效果不错的模型,搜寻、管理和标注大量数据需要大量的人力成本和时间。主动学习可以让我们用更少的标记数据来训练机器学习模型。一些优秀的人工智能驱动的公司,例如特斯拉,已经使用主动学习。

  为了更清楚的说明传统方法与主动学习之间的差别,我们以过滤垃圾邮件为例。传统的机器学习方法是先收集大量的电子邮件,并将每封电子邮件标记为“垃圾邮件”或“正常邮件”,然后训练机器学习模型来对这两类邮件进行分类。传统的方法有一个假设,就是默认所有数据对应的价值是相同的。但在实际工作中,往往存在类别不均衡、噪声数据和大量冗余数据等情况。

  传统的方法可能会花费很多时间标注数据,但是部分数据并不能提高模型的效果。但是直到标注完完所有的数据,才知道模型的可用性究竟如何。

  如果我们能够标注少量有价值的数据,在这些数据上快速学习,那就比在大量数据上进行标注的成本要少得多。主动学习的动机就在于此,使用模型来发现和标注最有价值的数据。

  在主动学习中,首先要准备一小部分有标注的数据,并在这个“种子”数据集上训练模型。然后,模型通过选择它不确定的未标注数据点来“提问”,需要人工标注这些数据点来“回答”问题。再次更新模型,并重复该过程,直到效果足够好为止。通过人工迭代教会模型,可以用更少的标注数据,在更短的时间内构建更好的模型。

  那么模型如何找到后续需要标注的数据呢?常用的方法如下:

  1. 选择模型的预测分布中最大熵对应的数据
  2. 选择模型的预测置信度最低的数据
  3. 训练多个不同的模型,选择预测不一致的数据

  在Humanloop中,我们使用基于贝叶斯的深度学习方法来获得模型的不确定性估计。

2. 使用主动学习的三大好处

  1. 在标记数据上花费的时间和钱更少

  主动学习可以节省标注的数据量,适用于计算机视觉以及自然语言处理(NLP)等领域中。数据标注是构建机器学习模型的过程中费时费力的一部分,所以使用主动学习后,在标记数据上花费的时间和钱会更少。
通过主动学习解决数据标注难题_第1张图片

  1. 您可以更快地获得有关模型效果的反馈

  通常,人们都是先进行数据标记,然后训练模型,从而得到模型的效果反馈。得到反馈之后,如果发现效果远远低于需求,就需要重新思考下一步计划,例如继续进行数据标注或者修改方案等。但由于主动学习在数据标注过程中经常对模型进行训练,因此可以及时获得反馈,从而及早纠偏。

  1. 提高模型的准确率

  让人惊讶的是,经过主动学习训练的模型不仅训练速度更快,而且实际上可以收敛到一个更好的最终模型(使用更少的数据)。数据并不是越多越好,数据的质量和数量同样重要。如果数据集包含难以准确标注的模糊示例,这实际上会降低最终模型的效果。

  模型学习例子的顺序也很重要。机器学习有一个子领域,叫做课程学习(curriculum learning),研究的是如何通过先教简单的概念,然后再教复杂的概念,来提高模型的性能。主动学习自然而然地在你的模型上实现了课程学习,帮助模型取得更好的效果。

3. 如果主动学习真的很好,那为什么每个人都不用呢?

  大多数构建机器学习模型的工具和过程都没有考虑到主动学习。通常由不同的团队分别负责数据标注和模型训练,但主动学习需要将这些过程相互耦合。如果让这些团队一起工作,你仍然需要做大量的工作,来连接模型训练接口和数据标注接口。大多数软件都假定在训练模型之前,所有数据都已标标注,因此要使用主动学习,您还需要弄清楚如何让模型与标注模块通信,并在从不同的标注模块异步获取数据,然后进行模型更新。

  除此之外,训练深度学习模型往往非常慢,因此频繁地重新训练模型是痛苦的。没人愿意标注100个数据,然后等待24小时,等模型完全重新训练之后,然后再标注100个例子。大型的深度学习模型往往有数百万或数十亿个参数,从这些模型中获得良好的不确定性估计是一个开放的研究问题。

  如果你读过关于主动学习的论文,你可能会认为主动学习会让你在数据标注上省下一小笔钱,但却能节省大量的工作量。不过,这些论文具有误导性,因为它们使用的学术数据集往往是平衡/干净的。然而,现实中,数据集往往类别失衡、包含噪声,标注成本存在差异(并非每个数据点都同样容易标注),因此,主动学习带来的好处可能比文献所说的要大得多。在某些情况下,甚至可以将标注成本降低10倍。

4. 如何使用主动学习

  目前出现了一些新的工具,使得主动学习更容易,比如modAL。ModAL基于sklearn,您可以将不同的模型与您喜欢的任何主动学习策略相结合,ModAL的优点在于它提供了一系列现成的方法,而且它是开源的。像ModAL这样的库的缺点是,需要大量的工作量来实现不同的不确定性度量,不包含任何数据标注接口,您仍然需要自己实现连接模型和数据标接口。

  这就引出了数据标注接口:

  对于个人数据科学家来说,最流行的工具可能是Prodigy。Prodigy是基于Spacy构建的数据标注接口,因此可以与Spacy的NLP库结合来使用主动学习。Prodigy不是开源的,但您可以下载之后使用pip在本地安装Prodigy。虽然Prodigy对于个人来说是一个很好的工具,但它并不是为了支持数据标注团队而设计的,只是实现了最基本的主动学习形式。

  Labelbox为各种图像标注提供了接口,最近还增加了对文本数据标注的支持。与Prodigy不同的是,Labelbox的设计考虑到了数据标注,并且有更多的工具来确保标签的正确性。Labelbox对主动学习或模型训练没有提供任何本地支持,但您可以通过API将预测从模型上传到标注接口。这意味着,如果您已经实现了主动学习获取数据的功能,并且正在训练模型,则可以设置主动学习的循环过程,但是仍需你自己去实现大部分工作。

5. Humanloop

  我们构建了Humanloop来解决现有工具的许多问题。我们的目标是使部署和维护自然语言模型比以前更快更容易。

  Humanloop为NLP任务提供了一个数据标注的接口,您可以在数据标注时训练模型,并使用开箱即用的主动学习。我们采用最先进的技术进行主动学习,并且保证训练质量。这使得在训练期间获得实时反馈成为可能,使用深度学习模型时也是如此。
通过主动学习解决数据标注难题_第2张图片

6. 小结

主动学习的好处包括:

  • 减少需要标记的数据量,显著降低成本。
  • 为您的模型性能提供更快的反馈。
  • 提高模型性能。

  主动学习未来将成为数据科学家的标准工具。Humanloop的官方网站为https://humanloop.com/

你可能感兴趣的:(机器学习常用库,机器学习,主动学习)