机器学习模型的泛化问题

机器学习领域,构建一个能够准确执行特定任务的数据集是至关重要的。然而,在这个过程中,可能会忽略一些边缘情况,这些情况对于模型来说是“超范围”的。虽然这些超范围的实例对来说是直观的,但模型没有能力知道它所展示的范围之外的任何事情。因此,模型总是只能占据广泛且常常超范围的世界的某个子集。

为了更具体地讨论这个问题,让以Roboflow的“浣熊目标检测数据集”为例。在这个数据集中,只收集了浣熊的照片,毫不奇怪,这个模型在测试集上的表现非常好。但是,当在现实生活中使用这个模型时,会发现它认为也是一只浣熊。这个问题普遍存在于机器学习模型中,无论是超范围的标志检测、缺失螺丝的错误识别,还是意外地阻止狗而不是兔子吃蔬菜。

为了解决这个问题,可以采取几个步骤。首先,构建一个代表性的测试集是解决超范围问题的最大一步。特别是如果测试集图像不包含目标对象或类别,那么这个测试集应该完全代表模型将要部署的环境。虽然在这个步骤上偷工减料可能很诱人,例如,只是从OpenImages收集图像。收集与问题相似但不是直接来自相机(或网站提交等)的图像是原型模型的好方法,但为了完全投入生产,最终需要直接收集数据。

其次,通过缩小模型需要进行预测的领域,总是可以帮助模型。例如,在不断变化的后院监控兔子可能是一个难以处理的任务。但在传送带的受限环境中识别制造缺陷可能会容易得多。

第三,如果模型在测试时受到超范围问题的困扰,建议收集显示空示例的训练图像。在分类数据集中,实际上会将这些图像标记为“超范围”类别,以教模型学习什么是在其范围内和范围之外的。在目标检测、关键点检测或实例分割数据集中,只需将这些图像留作未注释即可。

向模型展示空示例将教会它在进行预测时学会放手。在上面的浣熊示例中,提供一些未标记的人的图像将有助于模型适应超范围的情况。

需要注意的是,不要向模型提供太多的空示例。在训练过程中,可能会达到一个点,即不进行任何预测的先验信念可能会压倒进行任何预测的可取性。

第四,如果有一个特定的超范围实例困扰着模型,可能要考虑积极地将这个案例标记为自己的类别或对象。例如,假设想要检测手机中螺丝的存在,并且标记了所有螺丝的实例。在测试时,发现模型也将缺失的螺丝预测为螺丝。得出结论,模型已经学会了基于位置上下文来预测螺丝。可以通过积极地在训练集中标记“缺失螺丝”来解决这个问题。

最后,机器学习模型是不断发展的。当部署模型时,将不可避免地遇到新的超范围边缘案例,这些案例在构建训练集时没有预料到。积极识别这些问题、收集数据、重新训练和重新部署模型的过程被称为主动学习,这对于设计一个生产级别的计算机视觉模型至关重要。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485