微模型:有目的地过度拟合擅长某一特定事物的模型

2021-08-06 03:42:45

这篇文章的目的是介绍我们在 Cord 使用的“微模型”方法来自动化数据注释。我们已将这种方法部署在广泛领域的计算机视觉标记任务上,包括医学成像、农业、自动驾驶汽车和卫星成像。 TLDR;内容:应用于小范围数据分布的低偏差模型。如何:在狭义任务的少数示例上过度拟合深度学习模型。原因:节省数百小时的手工贴标时间。这当然取决于你的目标。也许您想要一个通用模型,可以同时检测出亚当·韦斯特、迈克尔·基顿和蝙蝠侠的蝙蝠侠。也许你需要它包括一个布鲁斯韦恩探测器,它也可以识别面具后面的人。但是,如果您想要一个模型在一个电影中的一个场景中跟随 Christian Bale 蝙蝠侠,那么答案是……五个带标签的图像。用于生成上述模型推理结果片段的模型使用以下五个标签进行训练:现在,这是否回答了最初的问题?这个模型只是部分蝙蝠侠模型。它在 Val Kilmer 或 George Clooney Batmen 上表现不佳,但它在特定用例中仍然有效。因此,我们不会称其为蝙蝠侠模型,而是蝙蝠侠微型模型。我们在 Cord 的早期就开始使用微模型,当时我们只关注视频数据。我们在尝试不同的建模框架来自动分类胃肠病学视频时偶然发现了这个想法(您可以在此处找到更多相关信息)。我们最初的策略是尝试一种“经典”数据科学方法,从广泛分布的视频中采样帧,训练模型,然后对不同视频集的样本外图像进行测试。然后,我们将使用这些模型并衡量与人工标记相比我们的注释效率改进。然而,我们在实验中意识到,在仅从一个视频中智能选择的一小组帧上训练的分类模型已经产生了很好的结果。我们还注意到,随着时代数量的增加,我们的注释效率变得更高。这与我们对良好数据科学的了解相反。我们严重过度拟合了这个视频的模型。但它奏效了,特别是如果我们把它分解成每个视频都有自己的模型。我们称它们为微型模型。虽然这是用于视频帧分类,但我们已经扩展了实践,包括对象检测、分割和姿态估计等任务。

最简而言之,微模型是针对特定任务或特定数据进行过度训练的特定注释模型。它们是故意过度拟合的模型,因此它们在一般问题上表现不佳,但在自动化数据注释的某一方面非常有效。因此,他们被设计为只擅长一件事。为了在实践中使用它们,我们将许多组合在一起以自动化全面的注释过程。 “传统”模型和微观模型之间的区别不在于它们的架构或参数,而在于它们的应用领域、用于生成它们的违反直觉的数据科学实践,以及它们的最终用途。为了介绍微型模型的工作原理,我们将采用一个高度简化的玩具模型,它可以更清楚地了解它们下面的基础。机器学习的核心是曲线拟合,只是在具有许多参数的非常高的维度空间中。因此,将构建模型的本质提炼为最简单的可能情况之一,即一维标签,是有益的。下面的内容稍微有点技术性,请随意跳过。您没有曲线的 xy 坐标,也无法实际查看整个曲线,您只能手动采样 x 的值,并且对于每个值,您必须查找与之关联的相应 y 值(“标签”为 x)。您想用一个模型拟合整条曲线,但密集采样点的成本太高了。你可以在这里使用什么策略?一种策略是将高度多项式拟合到曲线域上的一些初始采样点集,随机重新采样,评估误差,并根据需要更新多项式。问题是每次检查新样本点时都必须重新拟合整条曲线。每一点都会相互影响。您的模型也必须非常复杂才能处理曲线中的所有不同变化。解决这些问题的另一种策略是在局部区域采样,拟合一个近似该区域的模型,然后将整个域中的许多局部区域拼接在一起。例如,我们可以尝试将模型拟合到下面这个弯曲的部分:

这是样条插值,一种常用的曲线拟合技术。每个样条都故意“过拟合”到局部区域。它不会很好地外推到它的领域之外,但它不是必须的。这是微观模型的概念基础,表现在低维空间中。这些单独的样条单元类似于我们用来自动化 x 值标记的“微模型”。更一般的情况遵循类似的核心逻辑,但有一些额外的微妙之处(例如利用迁移学习和优化采样策略)。为了自动化完整的计算机视觉注释过程,我们还像装配线一样将微型模型“缝合”在一起。请注意,将弱模型集成在一起以获得更好的推理结果是一个已经存在很长时间的想法。这略有不同。我们不会为单个预测将微观模型平均在一起,我们让每个模型自己处理预测。微型模型也不仅仅是“弱学习者”。他们只是对数据分布的覆盖范围有限,并且对该覆盖范围的偏差很小。我们正在利用这样一个事实,即在注释过程中,我们可以使用某种形式的人工监督来将模型“指向”正确的域。这种对微模型领域的指导使我们能够避免使用很少的人工标签来开始自动化流程。模型可以根据形式(一种近似世界上某些现象的可量化表示)或功能(一种帮助您做事的工具)来定义。我的观点倾向于后者。俗话说:微型模型也不例外。它们的理由来自在各种领域的应用程序中使用它们。为了考虑微模型在注释方面的实际考虑,让我们看看我们的蝙蝠侠示例。从我们训练模型的场景中取一千五百帧,我们看到蝙蝠侠出现在其中的大约一半中。反过来,我们的微型模型可以提取这些实例中的大约 70%。因此,我们仅从五个手动注释中就获得了大约 500 个蝙蝠侠标签。当然还有更正的问题。例如,我们有误报。考虑来自我们模型选取的场景中的“人造”蝙蝠侠之一的推理结果。

我们也有可能没有那么紧的边界框。然而,这只是我们微模型的第一遍。和普通模型一样,微模型也会经过几轮迭代。为此,主动学习是最好的解决方案。我们只从五个标签开始,但现在通过一些最小的校正和智能采样,我们有超过 500 个标签可以用来训练我们的下一代微模型。然后我们使用这个更强大的版本来改进我们的原始推理结果并生成更高质量的标签。在这个过程的另一个循环之后,当考虑到人类行为的数量时,包括手动更正,我们的蝙蝠侠标签效率与我们的微模型达到了 95% 以上。开始时间:由于需要训练的标签很少,您可以在新项目的五分钟内开始在推理中使用微模型。迭代时间:快速入门的必然结果是迭代周期短。您可以进入持续数分钟而不是数小时或数天的主动学习循环。原型设计:短迭代周期有助于快速模型实验。我们已经看到微型模型作为人们正在构建的未来生产模型的非常有用的原型。它们可以快速检查想法对于 ML 项目的可行性是否最低。虽然我们在使用微模型进行数据注释方面取得了成功,但我们认为除了数据管道应用程序之外,还有一个可能性领域。如前所述,人工智能是曲线拟合。但更根本的是,它是让计算机做你想让它做的事情,这只是编程。它只是一种统计而非逻辑驱动的编程形式。 “正常”编程的工作原理是通过逻辑运算为输入到输出的转换建立确定性的偶然性。机器学习在高度复杂的领域蓬勃发展,在这些领域中,通过从示例中学习来解决逻辑捕捉这些突发事件的困难。这种统计编程范式仍处于起步阶段,尚未开发出围绕它的概念框架以供可靠的实际使用。

例如,将问题分解为更小的组件是大多数问题解决框架的关键要素之一。面向对象的编程范式是朝着这个方向进行的组织转变,它加速了软件工程的发展,至今仍在实践中。我们仍处于人工智能的早期,也许实例化面向数据的编程范式对于类似的快速发展是必要的。在这种情况下,微观模型可能在对象范式中具有自然的类似物。复杂数据分布中的一个块是“对象等价物”,微模型是该对象的实例。虽然这些想法还为时尚早,但它们与以数据为中心的人工智能的新重点相吻合。开发编排这些“数据对象”的工具是下一代人工智能基础设施的负担。我们才刚刚开始,还有很长的路要走。