【自有技术大讲堂】Active Learning -- 利用主动学习来改善AI模型样本集
一、导语
工业机器视觉现场使用深度学习算法特别需要数据,需要成千上万的样本来实现模型达到客户对于过漏检的标注要求。 而收集提供高质量的训练样本是一项非常花费时间和人力的任务。高视科技在多年现场AI落地实践中也是遇到了此类问题,但同时也在提高效率方面积累了不少经验, 主动学习(Active Learning)就是其中一种策略,它可以优化构建有效的AI模型所需的人力。
二、主动学习(Active Learning)定义
主动学习是一种机器学习训练策略,它使算法能够主动识别需要训练数据样本集,从而最有效地提高AI模型性能。 更简单地说,主动学习是一种策略,用于确定在我们的训练数据中哪些特定的样本可以最好地提高模型性能。 它是人机回圈(human-in-the-loop)机器学习策略的子集,通过最大限度地利用我们的训练数据来改进我们的AI模型。
三、 一个主动学习的实例
我们举一个生活场景的实例来说明。
想象一下,您正在构建一个计算机视觉模型,以识别留在门口的包裹,以便向您发送一条收到邮件的推送通知。 包装有各种各样的形状、大小和颜色。 假设您的训练数据包含10,00张样本图像:6000张棕色纸板箱包装图片,3000张扁平而蓬松的白色信封的图片,以及1000张黄色盒子的图片。
此外,每个盒子都可以放在门廊的不同位置,照片的明暗程度受天气和时间的影响,盒子本身的大小也可以不同。 一个理想的数据集应该具有足够的多样性,以捕捉所有可能的情况:例如白天在走廊左边的一个黄色小盒子或阴天在右边的一个白色信封。
现在我们需要快速而准确地开发一个模型,所以一个快速验证策略是在10,000张图像中标记1,000张图像子集,评估模型性能,然后再去标记额外的数据。
首先应该标记哪1000张图片?
凭直觉,可以选择为我们识别的每个包类标记一些数量:棕色盒子、白色信封和黄色盒子。因为我们的模型在没有看到任何棕盒子的例子的情况下无法了解棕盒子是什么,所以我们需要确保在我们的训练数据中包含一些棕盒子。确保我们的前1000张图像包括我们希望的模型能学习的每个类的示例,实际上是一种主动学习类型。我们已经将训练数据缩小到一组能最好地提高模型性能的图像。
同样的概念也适用于图像数据集中的其他属性。如果我们选择300个棕色盒子的样本,但每个棕色盒子的例子都是一个完美的立方体呢?如果我们选择了所有100个黄色盒子的样本,但我们的黄色盒子样本图总是采集自阳光明媚的日子,会怎么样?同样,我们的目标应该是创建一个包含每个类变化的数据集,这样我们的模型就可以最好地学习到在任何大小、任何位置和任何天气条件下交付的包裹。
四、主动学习的类型
有多种方法可以帮助我们的模型从我们的初始训练数据学习。这些方法包括从我们的训练数据中生成额外的样本,或者确定哪个样本子集对我们的模型最有用。我们的核心目标是从一个完整的总体(我们的训练数据)中确定哪些样本(子集)可以最好地帮助模型性能。
对我们的模型最有帮助的抽样可以遵循以下几个策略: 基于池的抽样、基于流的选择性抽样和成员查询合成。
所有的主动学习技术都依赖于我们首先得拥有一些具有准确标签的样本。也就是说,我们不可避免地需要花费人工去给一些例子贴上标签。主动学习技术的不同之处在于,我们如何使用这些已知的、准确的样本来从我们的数据集中识别额外的未知的、有用的样本。
为了评估这些不同的主动学习技术,让我们假设我们有1000个完全人工手动标记好的样本开始。接下来我们的目标是通过主动学习技术另外获取1000张需要标记的图片样本。
我们结合上文提到的三种采样技术做一下介绍和分析
基于池(Pool-Based)抽样
基于池的抽样是一种主动学习技术,可能是主动学习中最常见的技术,我们通过识别所有给定样本的“信息有用性”,然后选择前N个样本来训练我们的模型。换句话说,我们想要确定哪些样本对我们的模型最有帮助,然后选择最好的样本。
考虑以下策略。我们之前已经有了1000个完美的人类标签包装样本。我们可以用800个带标签的样本训练出来一个模型,并对剩下的200个带标签的样本进行验证。有了这个模型,我们可以假设模型预测精度最低的样本是那些对提高性能最有帮助的样本。也就是说,我们的模型在验证集中错误最多的地方可能是对未来训练最有用的图像。
那么,我们如何利用基于池的样本来找到我们需要增加的1000个样本呢?我们可以在剩余的9000个包图像上运行我们的模型。然后,我们将根据最低的预测标签概率对图像进行排序:图像中没有找到包(精度为0%),或者找到的包的可信度较低(精度低于50%)。我们将从最低得分开始取1000个得分低的样本,通过人工标注,让它们拥有完美的标签。这样筛选出来的1000个样本图片,再投入训练,能够大大提升模型的泛化性能。
基于流的选择性抽样
基于流的选择性抽样也是一种主动学习技术,主动学习系统在训练模型时,根据某个阈值决定是查询完美的ground truth标签还是分配模型预测标签。更简单地说,对于每个未标记的样本,主动学习需要考虑,“我是否有足够的信心将用模型给这个样本标记,,还是我应该询问这个样本的标记答案?”
基于流的选择性抽样可能是穷举搜索——因为每个未标记的样本都是逐一检查的——但它可能会导致我们花费过多时间去搜索获取想要增加的样本。
我们已经拥有从1000个完美标记的例子中训练好的这个AI模型。然后,使用这个模型,基于流的主动学习将逐一检查我们数据集中剩余的9000个样本,并基于预测标签的置信阈值,主动学习系统将决定哪一个样本该被挑选出来作为额外的1000个样本来被标记进而可用于训练。
成员查询合成
成员查询合成是一种主动学习技术,我们的主动学习代理能够根据我们的训练样本创建自己的样本,以实现最有效的学习。在某种意义上,主动学习代理决定它可能是最有用的,比如,在我们标记的训练数据中创建一个图像子集,并使用新创建的图像子集进行额外的训练。
当我们的初始训练数据集特别小时,成员查询合成可以非常有效。然而,生成更多的例子并不总是可行的。幸运的是,在计算机视觉领域,这正是数据增强可以发挥巨大作用的地方。
例如,假设我们的数据集在晚上和阴天投递的黄色箱子样本太少。我们可以使用亮度增强来模拟低光条件下的图像。或者,想象一下,很多棕色盒子里的图片总是在门廊的左边,离我们的相机很近。我们可以模拟缩小或随机裁剪图像,以改变我们训练数据中的图像拍摄视角。
我们可以使用上述方法生成我们额外需要去标注的1000张新样本。值得注意的是,我们需要一种智能的方法来确定应该生成哪种类型的图像。在这里,检查数据的分布将大有帮助:我们可能希望在生成黄色框图像时进行计数,因为在我们的示例中,我们只需要增加100个类似图像。此外,知道图像中标记框的大致位置可以帮助我们意识到我们所送的包裹是否斜向门廊的一部分。
五、 在数据集上应用主动学习
上文所介绍的主动学习技术并不是相互排斥的。例如,我们可以为所有的图像创建一个“信息有用性”分数,也可以生成额外的图像,以最佳地帮助模型性能。
与大多数机器学习问题一样,对数据有一个清晰的理解,并能够基于添加的标签快速原型化一个新模型是至关重要的。高视科技GoMind平台可以理解您的计算机视觉数据集(类平衡,注释计数,标记框位置),进行图像增强,快速训练计算机视觉模型,并按类基于验证集和测试集评估平均精度。高视科技GoMind平台甚至可以通过图像上传API轻松地从部署的生产条件中收集图像,这样您就可以通过可视化方式从真实的推理条件中添加新的样本。