你是否也曾迷惑于“离群检测”,“异常检测”,“新类检测”,“开集识别”,“分布外检测”之间错综复杂的关系?
你是否也想要解决开放世界的问题却不知道从哪个任务入手?不知道利用什么方法解决问题?
这篇最新综述将拨云见日,让你对开放世界领域有全新的认识!
在开放世界中分类是验证模型安全性的重要方式,也是一个真正能够商用落地的模型不可避免要面对的问题。传统的分类模型都是在一个封闭的世界中进行训练,即假设测试数据和训练数据都来自同样的分布(称作“分布内”,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)的大框架内。至此,这些任务都能进行准确的定位,而它们之间的关系也顿时清晰可辨。
标题: Generalized Out-of-Distribution Detection: A Survey
作者: Jingkang Yang, Kaiyang Zhou, Yixuan (Sharon) Li, Ziwei Liu
机构: MMLab@NTU; University of Wisconsin, Madison
链接:https://www.aminer.cn/pub/61722be25244ab9dcb6f0dbe
主页: https://github.com/Jingkang50/OODSurvey
为方便理解我们的“广义分布外检测框架”,我们需要首先介绍以下两个概念。
•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,即“感知上的异常检测”和“语义上的异常检测”。
•“感知上的异常检测”(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)要求多分类器同时达到如下两个要求:
•对测试集中属于“已知类别“的图片进行准确分类;
“已知类别”代表训练集中存在的类别。
•检测出”未知”类别, “未知类别”不属于训练集中任何类别。
OOD Detection: “分布外检测”
背景:
类似的,鉴于深度学习模型通常会对来自不同语义分布的样本进行过度自信地分类,分布外检测领域应运而生,要求模型在保证分类性能的同时,拒绝语义偏移的样本,以保证可靠性和安全性。
定义:
“分布外检测”任务,和新类识别类似,都是在找出测试集中不属于训练集中任何类别的“新类”样本。但是在新类识别的基础上,同时完成多分类任务。相比于“开集识别”,“分布外检测”的训练集可以是单类别的也可以是多类别的。
备注:
虽然当前学界的大多数论文都将“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进行补充。文尾附上了方法论的目录。
最终我们总结了目前领域的问题,挑战,和发展方向。
挑战1: 建立正确并且规范的评价指标
挑战2: 不需要额外数据的分布外检测
挑战3: 分布内分类和分布外检测的权衡
挑战4: 建立有现实意义并且大规模的数据集
展望1: 框架中不同任务互相借鉴及比较
展望2: 分布外检测和分布外泛化的结合
展望3: 分布外检测和开集噪声标签学习的结合
展望4: 期待进行更多的理论研究
详情参考原文。我们衷心希望开放世界领域能够发展地更好,并且希望更多研究者能够关注并投身到这个人工智能的重要问题上。
写在最后
笔者是在商汤新兴创新事业群(EIG)研究中心实习时开始接触“开放世界识别”领域。我们为了更好地解决具体业务问题,团队会将业务问题抽象成学术问题进行深挖和充分的研究。探索得到的思考,洞察,和新方法不仅形成了顶会论文,也直接在业务上进行落地。实习结束后,笔者也被EIG研究中心直推至MMLab进行深造,目前仍然和EIG研究中心保持紧密合作,共同在开放世界识别的领域探索新颖,有效,可落地的扎实工作。
EIG研究中心也荟聚了众多顶尖的人工智能技术人才,有若干名校博士,顶会论文作者,openmmlab开源项目主要贡献者。大家秉承着敢为人先的理念,致力于人工智能赋能百业,创新氛围浓厚。
目前团队正招募全职研究员(工作地点:香港),希望入职后能够:
1.从产品中抽象研究问题,并将研究成果转化到产品
2.推动前沿的深度学习的进展,课题包括:开放世界识别、视频OCR、文档关键信息提取、半监督检测、分割等,应用方向包括:多模态视频理解、智能制造视觉检测、遥感
3.在顶级会议和期刊上发表关键研究成果
4.成为内部研发工具箱和开源项目的贡献者
通常我们期望候选人是:
1.STEM 博士,在所在的科研领域(不限于AI相关领域)有突出成果,能够独立进行新的研究课题,或者,本科以上学历,在AI领域发表过至少一篇一作论文或在知名的AI竞赛中获得过前五名的成绩。
2.对人工智能充满热情并有很强的自我驱动力
3.具有较强的 Python 编码能力(了解 ML/DL 框架者优先)
我们能够提供:
1.与研究和产业界丰富经验的研究员和工程师团队合作的宽松环境
2.卓越的研发环境,包括多年积累的领先技术和内部研发工具箱
3.论文研讨会、技术培训和个性化指导
4.海量的计算资源,有1000多个GPU的集群可供使用
5.有竞争力的package
6.可以与我们在全球的联合实验室合作,表现优异的同学有推荐读博的机会
请感兴趣的同学通过wayne.zhang (at) sensetime.com联系我们!期待与你的合作!
附录: