摘要
在现实世界的分类任务中,很难从环境中所有可能的类别中收集训练样本。因此,当一个未见过的类别的实例出现在预测阶段时,一个强大的分类器应该能够分辨出它是来自一个未见过的类别,而不是把它归类为任何已知的类别。
- 在本文中,采用对抗性学习的思想,我们提出了ASG框架用于开放类别的分类。ASG通过对抗性学习策略,以无监督的方式生成所见类别的正负样本。
- 通过生成的样本,ASG再以监督的方式学习如何区分已见和未见。
- 在几个数据集上进行的实验显示了ASG的有效性
1 引言
随着机器学习技术在越来越多的应用中被采用,它们能被应用于开放和非稳定的环境中是很有吸引力的,在这些环境中,未曾见过的情况会意外地出现。对于分类,一个典型的学习任务,经典的方法隐含地假设数据是i.i.d.的,即使是未来的测试数据。这一假设在开放环境中不再成立,这大大削弱了经典分类方法的稳健性。
在这项工作中,我们考虑了开放类别分类(OCC)问题,其中有一些新的类别,在训练阶段没有观察到它们的实例,但在测试阶段可能会遇到它们的实例。经典的方法只能将未曾见过的类的实例预测为已见过的类中的一个。相反,一个开放环境感知的分类器应该能够在第一时间判断出一个实例是否属于所见类。
与OCC问题相关的不同方向已经被探索出来。
- 在类增量学习中[Fink等人,2006;Muhlbaier等人,2009;Kuzborskij等人,2013],新的类被认为是增量出现的。然而,这些研究主要集中在如何使系统能够纳入后来的新类的训练实例,但没有解决识别未见过的类的问题。
- 在带有拒绝选项的学习中[Chow, 1970],如果分类器的置信度很低,它就会拒绝识别一个实例,然而,这并没有将开放环境考虑在内。请注意,靠近所见类边界的实例可以有较低的置信度,但属于所见类,而未见类实例如果远离所见类边界,则可以有较高的置信度。
- 如果我们将未见过的类实例视为离群值,就可以采用离群值检测技术[Hodge and Austin, 2004]。然而,所见类的样本也可能包含离群值,同时,未见类实例的集群可能不会被视为离群值。
- 零点学习[Palatucci等人,2009]与OCC问题很接近,但他们通常假设所有类(包括未见过的类)都有一个高级属性集,这为识别未见过的类实例提供了有用的信息。然而,在我们的问题中,我们考虑的是在一个不熟悉的开放环境中学习,因此不假设这种高级属性的可用性。
以前只有少数研究涉及OCC问题。 例如,在[Scheirer等人,2013]中考虑了开放集成本,但在没有看到开放集数据的情况下很难衡量该成本;在[Da等人,2014]中,采用了一组所有类别的无标签数据,但所有潜在类别的充足无标签数据可能并不总是可用。因此,我们对在没有额外信息的情况下解决这个问题更感兴趣。
在本文中,我们为OCC问题提出了对抗性样本生成(ASG)框架。受对抗性学习[Goodfellow等人,2014]的启发,
- ASG通过寻找与训练实例接近的数据点来生成所见类的负面实例,前提是它们可以通过判别器与所见数据分离。
- 当训练数据较少时,ASG也会生成无法从所见类实例中区分出来的正面实例,以扩大数据集。
- 利用生成的阴性和阳性样本的监督,就可以直接训练一个开放类别的分类器来区分已见和未见的。
- 我们在几个具有开放类别但没有额外训练信息的领域进行了实验。 结果表明,ASG取得了明显优于其他比较方法的性能。
2 背景
2.1 相关问题
本文研究的是开放类别分类问题,即没有关于未见过的类别的信息,既没有实例也没有属性。一些研究与这个问题有关。
增量学习需要对传统的机器学习方法进行适当的调整,以应对动态和开放的环境,此外,类增量学习(C-IL)[Zhou and Chen, 2002]是它的一个重要分支,它主要关注新类的添加问题。在[Fink等人,2006;Kuzborskij等人,2013]中,每个新类都有一个二元分类器,区分现有类别和新类别,分类器中的新类别与现有类别共享假设来训练。然而,该方法仍然需要一些新类别的实例,当训练阶段没有新类别的实例时,这些方法就无法应用。为了解决这一局限性,[Da等人,2014]中引入了一种新的方法,通过探索未标记的实例来处理新类别,这需要可靠的未标记数据,但数据的可用性和质量在实践中难以保证。
开放集识别问题主要受到模式识别界的关注,并被应用于人脸识别和语音识别等。在[Phillips et al., 2011]中,主要关注的是阈值的操作,只有置信度高于阈值的实例才被归类为所见类。在[Scheirer等人,2013;Bendale和Boult,2015]中,新的决策边界和开放空间的风险都被考虑用来限制所见类别的区域。
离群点检测问题[Hodge and Austin, 2004]需要从给定的数据集中识别异常实例。只要异常实例被预测为新的类别,离群点检测方法就可以应用于开放类别问题。然而,不同的是,离群点检测只关注异常实例的发现,这仅限于特定的应用。 此外,它没有考虑到现有类别的分类误差
类发现问题试图识别事先不知道,但已知存在于训练数据中的稀有类的实例[Pelleg和Moore, 2005; Hospedales等人, 2013]。开放类别问题与类别发现问题不同,因为未见过的类别不一定是稀有类别。另一方面,有可能在训练数据中找到罕见类的例子,而新颖类的实例只出现在测试数据中。
零点问题试图在假设所有类别的一些高级属性是已知的前提下识别未见过的类别。例如,在[Xian et al., 2016]中,提出了一个潜在的嵌入模型,该模型在图像和类嵌入之间考虑的高级属性空间中学习了一个兼容函数。在这项工作中,我们不假设有这样的信息。
2.2 对抗性学习
对抗性学习采用了生成性模型和鉴别性模型,其中生成性模型学习生成能够愚弄鉴别性模型的实例,作为非生成性实例,这在[Li等人,2016]中也被称为图灵学习。此外,生成式对抗网(GAN)将两个模型作为一个整体的神经网络进行端到端训练,从而得到一个与原始数据分布一致的模型。进一步的改进包括对GAN的稳定性的研究。例如,在[Nowozin等人,2016]中,从距离测量的角度介绍了F-分歧,GAN被证明是F-分歧的一个特例,当它涉及到一个特定的指标。
在我们的工作中,我们将采用对抗性学习原理,即生成模型对抗生成由判别器判断的实例。与GAN的研究不同,我们的框架可以适用于神经网络以外的各种学习模型。此外,为了解决开放类别的分类问题,我们不仅需要生成看到的类别数据,更重要的是需要生成未看到的类别数据。
2.3 无导数优化
以前的学习方法通常采用基于梯度的优化方法。然而,优化问题可能并不总是简单到适合基于梯度的方法。通常情况下,一个复杂的优化问题必须被放宽为一个凸问题,牺牲了对原始问题的忠实性。
早期的无导数优化方法包括遗传算法[Goldberg, 1989]等代表,它们大多是启发式方法。最近,无导数优化方法在理论基础和实际应用方面都取得了重大进展,包括贝叶斯优化方法[Brochu等,2010]、乐观优化方法[Munos,2014]和基于模型的优化[Yu等,2016]。无导数优化方法认为优化形式化为arg maxx2X f(x),其中X是域。该方法不是计算f的梯度,而是对解决方案x进行采样,并从其反馈f(x)中学习,以找到更好的解决方案。因此,无导数优化方法更适用于具有不良数学特性的问题,包括非凸性、非微分性和具有许多局部最优的问题。因此,我们在方法中采用了最先进的无导数方法。
3 建议的方法
开放类别分类(OCC)问题可以描述如下。给定一个训练数据集D = f(xi; yi)gL i=1,其中xi 2 Rd是一个训练实例,yi 2 Y = f1; 2; ::; Kg是相应的类别标签。在测试阶段,我们需要预测一个开放数据集Do = f(xi; yi)g1 i=1,其中yi 2 Yo = f1; 2; ::; K; K +1; ::; Mg,M > K。由于有些类别在训练阶段没有观察到,OCC的目标是学习一个模型f(x) 。X !Y 0 = f1; 2; ::; K; novelg,其中选项novel表示该类别在训练阶段未被观察到,从而使预期风险最小化,如下所示
I(expression)是一个指标函数,当表达式成立时,它等于1,否则等于0。 OCC问题很难解决,因为没有关于新颖类的信息可用。我们的总体想法是,如果我们能够生成新颖类的实例并将其放入训练集(将增强的训练集表示为D~),那么该问题将很容易通过标准的监督学习得到解决
实例x的标签可以被预测为arg maxk=1;::;K;novel fk(x)。然后,问题是如何生成新颖类的数据。 对抗性学习的想法[Goodfellow等人,2014]被用于数据生成。在对抗性学习中,一个生成模型被训练来生成根据判别器被认为是合适的样本。例如,为了生成与训练数据组成的数据,目标是判别器不能将生成的数据与训练数据区分开来。利用这个想法,我们直接为OCC问题生成未见过的类别的数据。
生成未见类实例 为了生成未见类的实例,ASG在实例空间中搜索,这样的实例不应该被判别器识别为未见类,判别器是一个训练有素的分类器,用于分离生成的样本和已见类实例。然而,这样的实例太多了。为了区分已见和未见,我们只需要在已见类和未见类边界附近的样本。因此,ASG试图找到一个接近于已见类实例的实例,但被判别器识别为未见类。
ASG分别考虑每个类别,对于每个类别,它逐一生成样本。让PD(x; D; D-)表示用正向数据D和负向数据D-训练出来的判别器认为x是正面的概率。对于k类,表示当前生成的样本为Dk-,最初为空。一个生成的样本不属于所见类的目标是
直观地说,我们通过将一个生成的样本添加到负面数据集中来评估,并训练模型,看生成的样本是否没有被归类为正面(看到的类别)。
仅仅依靠公式(4)并不能生成所见类的所有边界样本,而只能生成不属于所见类的数据样本。为了生成边界样本,我们进一步要求生成的样本与所见类数据接近。因此,我们很自然地认为,生成的样本与原始数据集Dk之间的距离在某种程度上应该是小的,这一点由惩罚项强制执行,即
其中半径参数C1是一个正常数,dist(x; x0)是一个距离度量,可以是欧氏距离或其他距离度量。
此外,由于ASG逐个生成样本,公式(4)和公式(5)不能防止它生成许多相同的样本。然而,我们希望生成的样本散布在边界周围。因此,我们强制要求生成的样本是不同的,也就是说,新生成的样本应该远离以前生成的样本,这可以表示为
这里的半径参数C2是一个正常数。 结合损失和惩罚条款,总体目标函数为
其中λ1和λ2是惩罚条款的超参数。 请注意,我们的惩罚条款只是为了将样本推出半径距离之外,超参数对学习结果不会有很大影响。
请注意,公式(7)是非凸的,特别是当考虑到神经网络以外的模型时。很难依靠基于梯度的方法。因此,我们采用无导数方法来解决优化问题。由于大多数无导数方法是普遍适用的,我们在算法1中把这种算法表示为Opt。具体算法将在实验部分披露。
算法1显示了生成负数实例的整个过程。该算法需要输入标记的训练数据集D和参数T来表示每类要生成的实例的数量。对于每个类k 2 1; 2; ::; K,它依次生成一组实例,Dk-,这些实例通过优化公式(7)得到。
生成所见类实例 另一方面,如果类k是一个罕见的类,只有少量的样本,那么训练好的分类模型可能是不准确的。我们的样本生成方法也可以用来生成正向/可见类数据,以提高预测精度。我们只需要改变算法1第6步中的优化函数就可以完成这个目标。
对于生成所见类实例的目标,损失为
同样,我们希望产生分散的样本,因此我们通过惩罚,迫使生成的实例与先前生成的实例相距甚远。
其中dist是一个距离测量函数,C3是一个正常数。那么总的目标是:
总体程序 在生成了未见类和已见类的数据后,训练一个用于区分它们的分类器是很直接的。在ASG中,我们倾向于为每个类别训练这种分类器,即从Dk [ Dk+和Dk-中训练fkooc。
另一个需要考虑的问题是判别器L的学习能力。请注意,当能力太高时,每一个生成的样本都可以从原始数据中判别出来;而当能力太低时,不能很好地把握所见类的边界。与无监督学习不同,在OCC问题上,我们有一些所见类的数据。利用这些数据,我们可以对学习算法的超参数(如神经网络的结构)进行微调,以获得适当的容量。
总之,给定任何学习算法L,ASG框架的程序如下。
(1) 在所看到的数据D上,微调L的超参数;(2) 通过算法1生成所看到的类的负面实例D-,必要时也生成正面实例D+;(3) 对于每个类k,通过L从正面数据Dk [ Dk+和负面数据Dk-训练一个分类器fkooc。
在预测阶段,对于一个测试实例x,它被每个fkooc所测试。如果所有的fkooc都将x分类为负面,那么x就被预测为一个新的类别。否则,x被预测为fkooc信心最高的类别k。
实验:略