你是否也曾迷惑于「离群检测,异常检测,新类检测,开集识别,分布外检测」之间错综复杂的关系?你是否也想要解决开放世界的问题却不知道从哪个任务入手?不知道利用什么方法解决问题?这篇最新综述将让你对开放世界领域有全新的认识!
在开放世界中分类是验证模型安全性的重要方式,也是一个真正能够商用落地的模型不可避免要面对的问题。传统的分类模型都是在一个封闭的世界中进行训练,即假设测试数据和训练数据都来自同样的分布(称作分布内,in-distribution)。例如我们利用一组猫、狗照片训练一个猫、狗分类器。然而,部署的模型在实际使用中总是会遇到一些不属于封闭世界类别的图片,例如老虎。或者也会遇到一些和训练图片视觉上大相径庭的照片,例如卡通猫。模型应当如何去处理这些不属于训练分布的图片(即分布外样本,out-of-distribution),是开放世界领域所关注的问题。OD: Outlier Detection, 离群检测
AD: Anomaly Detection, 异常检测
ND: Novelty Detection, 新类检测
OSR: Open Set Recognition, 开集识别
OOD Detection: Out-of-Distribution Detection, 分布外检测
它们之间虽然各有千秋,却又有千丝万缕的联系。虽然现有工作也有尝试着将自己的任务和别的任务进行区分,但是各任务之间也不统一,使得整个领域都缺乏对各个任务准确的定义。让外界甚至参与者都对各个任务的具体目标困惑。为了解决这个问题,一篇名为《Generalized Out-of-Distribution Detection: A Survey》的综述解决了这些困惑,将以上五个任务归纳进一个「广义 · 分布外检测」(Generalized OOD Detection)的大框架内。至此,这些任务都能进行准确的定位,而它们之间的关系也顿时清晰可辨。为了方便理解「广义分布外检测框架」,我们需要了解以下两个概念:Covariate Shift:表层统计层面上的分布变化,简称统计偏移。
Semantic Shift:深层语义层面上的分布变化,简称语义偏移。
规范地讲,如果我们用 X 代表图片像素空间的变量,用 Y 代表图片语义空间的变量,这样我们可以用 P(X,Y)来表示一组图片的分布。像素空间分布 P(X)的偏移就是 Covariate Shift,可能来源于对抗样本或者画风的变化。
语义空间分布 P(Y)的偏移就是 Semantic Shift,可能来源于新类别的加入。
广义分布外检测(Generalized OOD Detection)在学习到「统计偏移」和「语义偏移」这两个概念之后,我们可以利用下图来认识各个任务在框架中的位置。任务的定位使用四个维度:(1)偏移类型:任务需要检测出表层统计偏移或深层语义偏移; (2)分布内数据类别数:分布内数据包含一个类或多个类;(3)对分布内样本的处理:是否需要对分布内样本进行分类;(4)是否遵循“训练 - 测试模式”:Transductive 学习需要利用所有样本进行决策;Inductive 学习则遵循训练 - 测试模式,目的是得到一个单独可用的模型。根据上图,“异常检测”AD 分为两个子任务,即 Sensory AD 和 Semantic AD,即 “感知上的异常检测” 和“语义上的异常检测”。「新类检测」ND 也分为两个子任务。他们都需要识别出具有语义偏移的样本,但是根据分布内样本类别的不同分为「单类的新类检测」(One-Class ND)和「多类的新类检测」(Multi-Class ND)。「开集识别」OSR 同样需要识别出具有语义偏移的样本,但是相比于 ND,它只关心分布内是多类别的情况,并且要求对分布内样本进行正确的分类。「分布外检测」(OOD Detection)同样需要识别出具有语义偏移的样本,但是相比 OSR,它还包含了分布内是单类的情况。因此,OOD Detection 可以理解成一个包含 Semantic AD, Novelty Detection, OSR 的超级大类。AD: Anomaly Detection, 异常检测背景:当人们提起异常(Anomaly)时,心中其实已经形成了一个 “正常” 的概念。例如,要创建一个 “热狗 / 非热狗检测器”,我们将“热狗” 的概念定义为正常,将不符合的定义为异常,也就是非热狗。请注意,在这种情况下,热狗是一个统一的概念,无论热狗的大小、酱汁、面包类型、价格、香肠的来源等可能存在差异。任何其他物体,如牛排、米饭,以及非食物物体,如猫和狗,都被视为异常。同时,现有的异常检测通常会对目标环境有所限制。例如,“热狗 / 非热狗检测器”会采用 “检测器只会接触真实照片” 的假设,测试时不会存在卡通或素描图。这使得在检测统计偏移时避免了语义偏移的出现。另一个现实的例子是工业缺陷检测,它针对的只是一组特定的产品装配线。这使得在检测统计偏移时避免了语义偏移的出现。换句话说,“开放世界”假设通常不是完全 “开放” 的。然而,“非热狗”或 “缺陷” 其实已经形成了一个巨大的未知空间,也早已打破了 “封闭世界” 的假设。综上所述,异常检测任务的主要特征是其统一地定义了“正常”,并且假设一个相对封闭的限制。定义:异常检测(Anomaly Detection, AD)的任务旨在找出测试集中所有偏离 “预设的正常样本” 的异常样本。这种偏移可能是来源于 covariate shift 或者 semantic shift。该任务通常假设另一种偏移类型不存在。这两种不同的样本偏移类型对应着 “异常检测” 的两个子任务:“感知上的异常检测”sensory AD 和“语义上的异常检测”semantic AD。Sensory AD,即 “感知上的异常检测”。该任务希望识别出由 covariate shift 导致的异常样本。此处我们假设所有预定义好的“正常” 样本都具有同一种像素空间分布,并且整个测试集的样本空间不存在语义上的偏移,即测试集的所有样本都来自同一个类别。总的来说, “Sensory AD”旨在检测出同一个类别的所有测试样本中具有 “异常” 像素空间分布的样本。Semantic AD,即 “语义上的异常检测” ,该任务希望识别出由 semantic shift(label shift)导致的异常样本。此处我们假设所有预定义好的“正常” 样本都具有相同的语义分布,即来自同一个类别,并且整个测试集的样本空间具有相同的像素空间分布。总的来说,“Semantic AD”旨在检测出同种像素空间分布的所有测试样本中非 “正常” 类别的样本。Sensory AD:工业检测,对抗样本防御,活体检测,艺术品的伪造识别,伪证识别等。Semantic AD:视频监控,数据筛选等。
ND: Novelty Detection, 新类检测背景:“Novelty”这个词通常指的是未知的、新颖的、有趣的东西。虽然新类检测的目标与异常检测相似,但是它们之间有三个显著不同:在动机方面,新类检测通常不会像异常检测那样将 “新类” 样本视为错误、恶意、应当丢弃的。反之,该任务会将它们视为学习资源,以积极的学习态度供未来使用。例如新野生动物检测器,检测到的新类可供生物学界进行研究。
新类检测主要侧重于语义转移。它有一个可互相替换的名字:“novel class detection”。
新类检测去除了分布内样本只能属于一个类的限制。训练集可以出现一个或多个类。
定义:新类检测(Novelty Detection, ND)的任务旨在找出测试集中不属于训练集中任何类别的 “新类” 样本,检测到的 “新类” 样本通常会为下一步增量学习(incremental learning) 提供更多的学习样本,或者作为全新的类型进行探索研究。基于训练集中的类别数量,“新类检测”可被分为两个子类型: “单类新类检测”(One-class ND);以及 “多类新类检测”(Multi-class ND)。尽管“多类新类检测” 的训练集样本中包含多个类别,其目的只是将测试集中的 “新类” 样本与 “分布内” 样本区分开。因此,“单类新类检测”和 “多类新类检测” 的本质都是二分类问题。OSR: Open Set Recognition, 开集识别背景:在封闭世界中训练的机器学习模型通常将属于未知类别的测试样本错误地分类为具有高置信度的 已知类别。一些文献将模型这种过度自信的行为称为“模型的傲慢”。因此,OSR 于 2013 年被提出,旨在解决这个问题。定义:“开集识别”(Open Set Recognition, OSR)要求多分类器同时达到如下两个要求:背景:类似的,鉴于深度学习模型通常会对来自不同语义分布的样本进行过度自信地分类,分布外检测领域应运而生,要求模型在保证分类性能的同时,拒绝语义偏移的样本,以保证可靠性和安全性。定义:“分布外检测”任务和新类识别类似,都是在找出测试集中不属于训练集中任何类别的 “新类” 样本。但是在新类识别的基础上,同时完成多分类任务。相比于 “开集识别”,“分布外检测” 的训练集可以是单类别的也可以是多类别的。备注:虽然当前学界的大多数论文都将 “out-of-distribution” 理解为“out-of-label/semantic-distribution”,但一些分布外检测的工作也考虑检测 covariate shift(统计偏移)。它们声称 covariate shift 通常会导致模型性能显着下降,因此需要模型进行识别和丢弃。然而,尽管在某些特定(通常是高风险)任务上检测 covariate shift 是合理的,例如由一家医院训练的医疗诊断模型应该更加保守地对来自其他医院、具有 covariate shift 的图像进行决策,但这个目标与另一个领域 out-of-distribution generalization(领域泛化)似乎有所冲突。综述原文对 out-of-distribution detection 和 out-of-distribution generalization 做了详细的讨论,欢迎大家阅读原文。但是无论如何,检测语义偏移一直是分布外检测任务的主流。OD: Outlier Detection, 离群检测背景:根据维基百科,outlier 是指与其他观测结果显着不同的数据点。不同于之前任务需要检测与训练数据分布不同的测试样本,离群检测则是直接处理所有观察结果,旨在从受污染的数据集中找出异常。由于离群检测不遵循“训练 - 测试模式”,而其方法通常依赖于所有观察结果,因此解决此问题的方法通常是 Transductive 传导学习而不是 Inductive 归纳学习。定义:“离群检测”(Outlier Detection, OD)的任务旨在检测出给定数据集中与其他样本显著不同的样本,其中这种不同既可以来源于 covariate shift 也可以来源于 semantic shift。至此,该研究希望读者对以上五个任务的异同有了更加深入的理解。下图用图片案例的方式再次比较这些任务。该研究全面总结了解决 「广义分布外检测」中各个任务的方法。由于它们的目标大体相同,它们的解法自然也相似。研究发现它们的解法基本分为四大类:Density-based Methods 基于密度估计的方法
Reconstruction-based Methods 基于重构的方法
Classification-based Methods 基于分类的方法
Distance-based Methods 基于距离的方法
欢迎大家参考综述原文进行参考,同时欢迎大家在综述的 GitHub 主页提 issue/pr 进行补充。文尾附上了方法论的目录。最终研究人员总结了目前该领域的问题、挑战和发展方向。详情参考原文。该研究希望开放世界领域能够发展地更好,并且希望更多研究者能够关注并投身到这个人工智能的重要问题上。笔者是在商汤新兴创新事业群(EIG)研究中心实习时开始接触 “开放世界识别” 领域。我们为了更好地解决具体业务问题,团队会将业务问题抽象成学术问题进行深挖和充分的研究。探索得到的思考,洞察,和新方法不仅形成了顶会论文,也直接在业务上进行落地。实习结束后,笔者也被 EIG 研究中心直推至 MMLab 进行深造,目前仍然和 EIG 研究中心保持紧密合作,共同在开放世界识别的领域探索新颖,有效,可落地的扎实工作。EIG 研究中心也荟聚了众多顶尖的人工智能技术人才,有若干名校博士、顶会论文作者、openmmlab 开源项目主要贡献者。大家秉承着敢为人先的理念,致力于人工智能赋能百业,创新氛围浓厚。目前团队正招募全职研究员(工作地点:香港),希望入职后能够:- 推动前沿的深度学习进展,课题包括:开放世界识别、视频 OCR、文档关键信息提取、半监督检测、分割等,应用方向包括:多模态视频理解、智能制造视觉检测、遥感- STEM 博士,在所在的科研领域(不限于 AI 相关领域)有突出成果,能够独立进行新的研究课题,或者,本科以上学历,在 AI 领域发表过至少一篇一作论文或在知名的 AI 竞赛中获得过前五名的成绩。- 具有较强的 Python 编码能力(了解 ML/DL 框架者优先)- 与研究和产业界丰富经验的研究员和工程师团队合作的宽松环境- 卓越的研发环境,包括多年积累的领先技术和内部研发工具箱- 海量的计算资源,有 1000 多个 GPU 的集群可供使用- 可以与我们在全球的联合实验室合作,表现优异的同学有推荐读博的机会请感兴趣的同学通过 wayne.zhang (at) sensetime.com 联系我们!期待与你的合作!