打开网易新闻 查看精彩图片

每件事物的出现都有它各自的使命,我们今天提数据集就不得不提到ImageNet,ImageNet数据集及其它推动的大规模视觉比赛对人工智能特别是计算机视觉领域的巨大贡献是毋庸置疑的。

正如李飞飞所言,ImageNet已经完成了它的历史使命,然而数据集的发展和变革却不能停下脚步。但是目前绝大部分的数据集都是基于独立同分布的实验场景设定,并没有考虑到数据本身的特性,也没有更多因果关系可言,这对于模型的泛化帮助甚微,也很难看到新一代数据集的萌芽。

针对这些问题,近日,清华大学计算机系长聘副教授崔鹏团队构建了一个新型的具有跨数据集泛化性指标的数据集NICO,该数据集的发布旨在引起大家对新型数据集的更多关注,并促进对人工智能内在学习机制的研究。

AI科技评论邀请到崔鹏团队对NICO数据集及其背后的论文:《Towards Non-IID Image Classification: A Dataset and Baseline》进行了详细解读,并针对下一代数据集的标准和NICO数据集相关的问题进行了专访。

1

NICO数据集

我们都知道视觉模型的性能会随着测试环境的差异而发生变化,那么这种泛化性能的改变应该如何归因、又该如何提升呢?现在我们有了一个可以“控制”环境偏差并定量研究的图像数据集。

近年来,深度学习技术使得视觉模型的性能得到了突飞猛进的发展,甚至在一些任务上超越了人类的平均水平,但这些结果背后的根基是海量的训练数据和独立同分布的实验场景设定。

独立同分布(I.I.D.:训练环境和测试环境有相同的数据分布)是机器学习问题中最普遍的假设之一。I.I.D.假设的存在使得我们在最小化模型训练环境的风险损失的条件下,也能保证其在测试环境中也有好的表现。理想很美好,但现实呢?我们认为结论显然是否定的,在真实场景下由于时空的约束性,训练数据“一旦采集,就已落后”,时空维度上的跨度不可避免地会带来数据分布上的异质性,从而打破I.I.D.假设。例如对于自动驾驶而言,最大的考验就是不可预测的驾驶场景:更新换代的模型、不曾见过的街景、甚至是行人潮流穿搭上的变化都可能成为危险的诱因。

那么为什么机器学习模型容易在数据分布变化时出现决策失误呢?因为它可能学到了不具备泛化性能的关联性。例如下图展示的例子,分类器训练时看到的狗大多在草地上、而猫大多在雪地上,为了最小化训练的风险损失,就可能把草地当作判断狗的要素;当测试时看到草地上的猫,它就会“指猫为狗”。

打开网易新闻 查看精彩图片

相对I.I.D.假设下的模型学习,这种训练环境和测试环境的数据分布不同的问题称为Non-I.I.D.或者OOD(Out-of-Distribution)。

其实在视觉学习的领域,早在2011年MIT的研究者Antonio Torralba就在《Unbiased Look at Dataset Bias》一文中对于视觉任务中不同的标杆数据集之间存在偏差的现象作了初步的探索。该文提出已有视觉数据集的不断推出无非给视觉模型和算法一个单纯的”跑分“而已,对于深入理解视觉研究问题,“量变”似乎还无法引发“质变”。

为此,该论文提出了一种“跨数据集泛化性”(Cross-dataset generalization)指标,即用来自不同数据集的图像分别构成训练集和测试集,通过模型性能的下降幅度来评估数据集之间的偏差,这种评估策略也逐渐成为日后领域自适应学习 (Domain Adaptation)中用于评价模型泛化性能的核心指标。由此,我们发现Non-I.I.D.远比想象的更加常见,甚至可以在最有公信力的I.I.D.图像数据集ImageNet上找到Non-I.I.D.的影子。ImageNet本身是一个树状结构,如动物类别“猫”下面还有更细化的子类“波斯猫”等。如果用不同的子类构成分类10种动物类别(“猫”、“狗”、“鸟”等)的训练和测试数据,数据环境会有什么变化呢?我们以特征空间上的分布差异指标NI(C)来描述单个类别C在训练和测试时的分布差异,用NI(C)在所有类别上的均值来衡量训练集和测试集的分布差异。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

考察随机选择子类并构成的三个数据集A、B、C,可以看到:1)Non-I.I.D.普遍存在于各训练集的各种类别中;2)不同训练集的组成会带来数据分布差异的不同。然而,ImageNet等数据集并非为Non-I.I.D.问题而设计,它们能造成的数据偏差都不明显,偏差程度也很难调控,不足以支持充分的研究。我们还发现,数据分布的差异大小将直接影响模型学习的好坏。

打开网易新闻 查看精彩图片

区别于I.I.D.下传统图像任务的定义,Non-I.I.D.把“跨数据集泛化性”作为主要的评价标准。以基本的图像分类任务为例,Non-I.I.D.下的图像分类分为Targeted类和General类。两类任务的区别在于是否已知测试环境的信息,目标都是从训练环境中学习可以泛化到有数据分布偏差的测试环境的模型。显然,随着不同类型、任务、规模的数据集不断提出,单单通过排列组合来考察“跨数据集泛化性”带来的边际效应越来越低,从实际研究的度出发,整个研究社区亟需个可以系统、定量地研究数据分布偏差与模型泛化性能的标杆数据集。

打开网易新闻 查看精彩图片

在《面向分独立同分布图像分类:数据集和基线模型》(Towards Non-IID Image Classification: A Dataset and Baseline) 一文中,我们提出了一个带有“调节杆”的多分类图像数据集 (NICO),用于模拟训练和测试集分布不同条件下的图像分类任务场景,辅以定量刻画数据分布偏差的指标”Non-I.I.D. Index“ (NI)。通过“调节杆”,我们可以手动调节不同档位的NI,从而模拟一连串不同难度的场景,从接近经典数据集下的“无偏”环境平滑过渡到加入对抗信息的“极偏”环境中。

打开网易新闻 查看精彩图片

区别于其它标准数据集,构建NICO数据集的核心思想是以(主体对象,上下文)的组合为单位收集数据。同一个类别(主体对象),有多个上下文与之对应,描述主体内的属性,如颜色、形状等,或主体外的背景,如草地、日落等。为了实用性和适用性,我们从搜索引擎上与主体最密切的联想词中筛选出丰富多样的上下文,并保证不同主体的上下文有足够的重叠度。上下文实际上提供了围绕主体的有偏数据分布,通过在训练环境和测试环境组合不同的(主体对象,上下文),我们就能构建不同的Non-I.I.D.场景。可以构建的场景包括但不限于:

1、最小偏差:NICO可达到的近似“I.I.D.”,通过随机采样使训练和测试环境的所有(主体对象,上下文)单元的数据比例相同。最小偏差描述了数据集本身的学习难度和数据噪声,此时的实验指标(如分类准确率)一般可作为best score。

2、比例偏差:虽然训练和测试环境中出现(主体对象,上下文)的组合相同,但是不同单元之间的比例不同。比如,我们可以选择从指定上下文中收集某个类别的大部分训练数据,不同对象由不同上下文主导,就容易造成模型的参数偏差。

实验表明,主导的上下文的比例越大,数据分布的差异也就越大。

打开网易新闻 查看精彩图片

3、成份偏差:测试环境中存在训练环境中没出现过的(主体对象,上下文)单元,算作比例偏差的一个特例。成分偏差考验了模型对外插数据的泛化能力,没见过的上下文组合越多,数据分布差异越大,也就越难学。我们还可以在训练集中对不同类别再次设置主导的上下文,进一步增加分布差异。

4、对抗偏差:通过精心组合训练集和测试集的主体对象/上下文,我们可以专门干扰模型对某个指定类别(正类)的预测。如果一个上下文在训练环境里仅和正类组合出现,而测试环境里仅和负类组合出现,我们称它是混淆因素,因为这个上下文会产生和正类的虚假强相关性,误导模型分类。显然,这样的混淆上下文越多,正类上的数据分布差异也就越大。

打开网易新闻 查看精彩图片

虽然NI的区间变化很大,利用NICO就能很容易地创建这些经典的Non-I.I.D.场景,然后进行多样的科学研究。假设测试环境的信息已知,你可以做迁移学习、域适应性学习等研究;如果测试环境的信息不知,也可以进行稳定机器学习等方面的研究。

打开网易新闻 查看精彩图片

目前为止,NICO以树状结构组织了2个超类(交通工具类和动物类)、19个类(鸟、…、火车)、以及每个类别下的9或10种上下文,共累积了188种(主体对象,上下文)组合,收集了约25000张图像,其规模也正不断扩大。对于热火朝天的人工智能而言,Non-I.I.D.下机器学习的稳定性已成为新的战场。靶(数)子(据)?NICO提供了一个很好的选择。

打开网易新闻 查看精彩图片

更多关于NICO的细节请参见NICO的官方网站: http://nico.thumedialab.com , 或者相关的论文《Towards Non-IID Image Classification: A Dataset and Baseline》。

2

问答专访

一、新一代数据集应该是怎样的标准?

1、ImageNet开启了数据集的黄金时代。在ImageNet之后的各种数据集通常都会在哪些方面做到差别化?

差异化体现在数据集的建立初衷、目标问题、适用场景;以及样本提供的不同信息,比如标签、上下文等。

2、新一代数据集是任务通用的吗还是分任务进行分门别类构建?

一般会先以某些任务为目标构建起来;然后随着数据集的发展丰富,以及研究人员的灵活使用,逐渐通用。

3、新一代数据集是考虑加入因果关系吗?该怎么加?

数据集本身是不考虑因果关系的,但可以通过构造有数据分布偏差的训练和测试集,支持因果的研究,比如NICO可以在训练环境和测试环境组合不同的(主体对象,上下文)单元。

4、如果是检测任务,背景的影响还有那么重要吗?

对于检测任务,图像的背景对模型性能的影响较小; 但是 NICO 的上下文不仅包括背景,还包括主体对象的属性,比如色彩、动作等,其带来的分布差异也会影响模型。

二、针对NICO数据集本身的问题

1、NICO数据集建立的初衷是什么?相比传统数据集有什么优势?

NICO数据集建立的初衷是吸引更多机器学习的研究者关注智能认知的本质机理。这样的机理将更接近人类智慧的习惯(比如因果),因此具备跨环境的稳定性和鲁棒性。为了支持以上研究,区别于传统数据集,NICO的图像样本除了主体类别标签,还有唯一的上下文信息描述主体的属性或者背景,通过在训练环境和测试环境中以不同比例组合不同的(主体对象,上下文)单元,可以灵活方便地构造数据环境模拟不同的Non-I.I.D.场景(见补充材料),支持对智能认知的本质机理的研究。

2、NICO数据集只适用于CV中的识别分类任务吗?

识别分类任务是当前NICO中设立的标准任务,但NICO不限于识别分类任务,研究人员可以利用上下文信息自行设计更多有意思的任务;另外,我们后续对NICO的优化和补充可能会细化上下文或者提供更多的图像标注,进而孵化出更多的任务。

3、如果是检测任务,背景的影响还有那么重要吗?

对于检测任务,图像的背景对模型性能的影响较小;但是NICO的上下文不仅包括背景,还包括主体对象的属性,比如色彩、动作等,其带来的分布差异也会影响模型。

4、数据集具体怎么收集构建的?

参照几个公认的图像数据集,我们确定了动物和交通工具两个超类,并选择了共 19 个常见的类别,如猫、火车等; 对于每个类别,我们先基于搜索引擎( YFCC100m )划定了频率最高的联想词的范围,然后把同时和多个类别相关的词作为上下文; 确定了(主体对象,上下文)的组合后,我们从搜索引擎上收集图像,多次检测完成过滤去噪的工作。

5、估计NICO数据集大概多大规模才能有效解决识别问题?

目前NICO的规模已经可以支持从头训练(不带预训练)一个深度网络模型(如 ResNet18),而且会不断扩大,足以支持对有效解决识别问题的算法的研究。

6、动物类的数据集中,为什么要收集吃、躺、颜色等非背景属性,有什么考虑?

选择NICO的上下文的时候,我们特别注意收集搜索引擎上与主体对象出现频率最高的联想词,这样可以保证每个(主体对象,上下文)都能收集到足够多的数据样本,保持数据集的规模,适应不同的实验设定。

7、有些不同标签的图像场景存在重叠,比如狗吃饭的时候也可能在家,这种重叠有什么影响?

我们特意保证不同主体的上下文之间有所交叉,这样可以更好地适应不同的实验设定,让研究人员更灵活方便地设计实验,详情请见NICO支持的典型场景部分。

8、后续NICO数据集还会有什么样的计划?

后续NICO会进一步增加数据集的规模,包括类别、上下文的种类、数据量,提高图像质量、进一步去噪过滤,并尝试细化上下文或者提供更多的图像标注。

三、目前利用NICO数据集做了哪些任务,有没有一套完整的流程,包括定义明确的指标、实际运行、结果。

请参见我们提供的补充材料,我们明确了几个NICO支持的经典的Non-I.I.D.场景,评价Non-I.I.D.程度的指标,以及指标下如何调节不同场景的Non-I.I.D.程度。 我们还在一些场景里,基于一个类似AlexNet的CNN结构,进行了图像分类问题的实验研究。实验结果说明,Non-I.I.D.对一般CNN结构的泛化能力的影响很大,说明传统CNN并不完全符合人类的智能认知。一个简单的causal模块(global balancing,CNBB)可以提升泛化能力。

Exp2

1:5

1:1

2:1

3:1

4:1

CNN

37.17

37.80

41.46

42.50

43.23

CNBB

39.06

39/60

42.12

43.33

44.15

比例偏差:10个动物类别的分类准确率

Exp3

3

4

5

6

7

CNN

40.61

42.32

43.34

44.03

44.03

CNBB

41.41

43.34

44.54

45.96

45.16

成分偏差:9个交通工具类别的分类准确率

Exp4

1:1

2:1

3:1

4:1

5:1

CNN

37.07

35.20

34.53

34.13

33.73

CNBB

38.98

36.89

35.87

35.33

35.02

成分偏差+比例偏差:9个交通工具类别的分类准确率

四、新一代数据集的构建模式

ImageNet数据集是李飞飞花钱请人标注的,Spider数据集是耶鲁大学在Text-to-Sql上很有名的一个数据集 ,但是对专业知识要求很高。

1、如果构建新一代数据集碰到类似问题,该怎么解决成本和专业度问题?

可 以考虑把一整个大数据集拆分成有重叠度的多个小数据集,借助社区的开源力量或者众包的方式,标注和构建数据集。

2、是花钱找人构建还是靠社区的开源力量?

借助社区的开源力量。