摘要:大多数现有的零样本学习(Zero-Shot Learning,ZSL)方法都存在强偏问题:训练阶段unseen类(目标类)的实例在测试时往往被归类为seen类(源类)之一。因此,在广义 ZSL 设置中部署后,它们的性能很差。在本文,我们提出了一个简单而有效的方法,称为准完全监督学习(QFSL),来缓解此问题。我们的方法遵循直推式学习的方式,假定标记的源图像和未标记的目标图像都可用于训练。在语义嵌入空间中,被标记的源图像被映射到由源类别指定的若干个嵌入点,并且未标记的目标图像被强制映射到由目标类别指定的其他点。在 AwA2,CUB 和 SUN 数据集上进行的实验表明,我们的方法在遵循广义 ZSL 设置的情况下比现有技术的方法优越 9.3%至 24.5%,在遵循传统 ZSL 设置下有 0.2%至 16.2%的提升。
在大规模的训练数据集的支撑下,计算机视觉中的物体识别算法在近几年取得了突破性的进展。但是人工收集和标注数据是一项十分耗费人力物力的工作。例如,在细粒度分类中,需要专家来区分不同的类别。对于如濒临灭绝的物种,要收集到丰富多样的数据就更加困难了。在给定有限或者没有训练图片的情况下,现在的视觉识别模型很难预测出正确的结果。
零样本学习是一类可以用于解决以上问题的可行方法。零样本学习区分 2 种不同来源的类,源类(source)和目标类(target),其中源类是有标注的图像数据,目标类是没有标注的图像数据。为了能够识别新的目标类(无标注),零样本学习假定源类和目标类共享同一个语义空间。图像和类名都可以嵌入到这个空间中。语义空间可以是属性(attribute)、词向量(word vector)等。在该假设下,识别来自目标类的图像可以通过在上述语义空间中进行最近邻搜索达成。
根据目标类的无标注数据是否可以在训练时使用,现有的 ZSL 可以分为 2 类:归纳式 ZSL(inductive ZSL)和直推式 ZSL(transductive ZSL)。对于归纳式 ZSL,训练阶段只能获取到源类数据。对于直推式 ZSL,训练阶段可以获取到有标注的源类数据和未标注的目标类数据。直推式 ZSL 希望通过同时利用有标注的源类和无标注的目标类来完成 ZSL 任务。
在测试阶段,大多数现有的归纳式 ZSL 和直推式 ZSL 都假定测试图像都来源于目标类。因此,对测试图片分类的搜索空间被限制在目标类中。我们把这种实验设定叫作传统设定(conventional settings)。然而,在一个更加实际的应用场景中,测试图像不仅来源于目标类,还可能来自源类。这种情况下,来自源类和目标类的数据都应该被考虑到。我们把这种设定叫作广义设定(generalized settings)。
现有的 ZSL 方法在广义设定下的效果远远不如传统设定。这种不良表现的主要原因可以归纳如下:ZSL 通过建立视觉嵌入和语义嵌入之间的联系来实现新的类别的识别。在衔接视觉嵌入和语义嵌入的过程中,大多数现有的 ZSL 方法存在着强偏(strong bias)的问题(如图 1 所示):在训练阶段,视觉图片通常被投影到由源类确定的语义嵌入空间中的几个固定的点。这样就导致了在测试阶段中,在目标数据集中的新类图像倾向于被分到源类当中。
图 1. 语义嵌入空间中对可见源类的偏向示意图。蓝色圆点表示源类指定的锚点。
为了解决以上问题,本文提出了一种新的直推式 ZSL 方法。我们假定有标注的源数据和目标数据都可以在训练阶段得到。一方面,有标注的源数据可以用于学习图像与语义嵌入之间的关系。另外一方面,没有标注的目标数据可以用于减少由于源类引起的偏置问题。更确切地来说,我们的方法允许输入图像映射到其他的嵌入点上,而不是像其他 ZSL 方法将输入图像映射到固定的由源类确定的几个点上。这样有效地缓解了偏置问题。
我们将这种方法称为准全监督学习(Quasi-Fully Supervised Learning, QFSL)。这种方法和传统的全监督分类工作方式相似,由多层神经网络和一个分类器组成,如图 2 所示。神经网络模型架构采用现有的主流架构,比如 AlexNet、GoogleNet 或者其他框架。在训练阶段,我们的模型使用有标注的源类数据和没有标注的目标数据进行端到端的训练。这使得我们的模型有一两个明显的特性:(1)如果未来可以得到目标类的标注数据,那么标注数据可以直接用于进一步训练和改进现有的网络模型;(2)在测试阶段,我们得到的训练模型可以直接用于识别来自于源类和目标类的图像,而不需要进行任何修改。
本论文的主要贡献总结如下:
假设存在一个源数据集 D s = { ( x i s , y i s ) } i = 1 N s D^s=\{(x_i^s, y_i^s)\}_{i=1}^{N_s} Ds={(xis,yis)}i=1Ns,每张图片 x i s x_i^s xis与相应的标签 y i s y_i^s yis对应,其中 y i s ∈ y s = { ( y i ) } i = 1 S y_i^s\in y^s = \{ (y_i)\}_{i=1}^S yis∈ys={(yi)}i=1S, S 表示源类中类的个数。目标数据集 D t = { ( x i t , y i t ) } i = 1 N t D^t=\{(x_i^t, y_i^t)\}_{i=1}^{N_t} Dt={(xit,yit)}i=1Nt, 每张图片 x i t x_i^t xit与相应的标签 y i t y_i^t yit对应,其中 y i t ∈ y t = { ( y i ) } i = 1 T y_i^t \in y^t = \{ (y_i)\}_{i=1}^T yit∈yt={(yi)}i=1T, T T T 表示目标类中类的个数。ZSL 的目标就是学习如下所示的预测函数 f(∙):
f ( x ; W ) = a r g m a x y ∈ Y F ( x , y ; W ) f(x; W) = argmax_{y \in Y}F(x, y; W) f(x;W)=argmaxy∈YF(x,y;W)
其中,F(∙) 是一个得分函数,其目标是使得正确的标注比其他不正确的标注具有更高的得分。W 是模型 F(∙) 的参数,F(∙) 通常使用如下的双线性形式:
F ( x , y ; W ) = θ ( x ) T W Φ ( y ) F(x, y; W) = θ(x)^T W Φ(y) F(x,y;W)=θ(x)TWΦ(y)
其中,θ(x) 和Φ(y) 分别表示视觉嵌入和语义嵌入。得分函数通常使用带正则化的目标函数进行优化:
L = 1 N s ∑ i = 1 N s L p ( y i , f ( x i ; W ) ) + γ Ω ( W ) L = \frac{1}{N_s} \sum_{i=1}^{N_s} L_p(y_i, f(x_i; W)) + γ Ω(W) L=Ns1i=1∑NsLp(yi,f(xi;W))+γΩ(W)
其中, L p L_p Lp 表示分类损失,用于学习视觉嵌入和语义嵌入之间的映射。 Ω Ω Ω表示用于约束模型复杂度的正则项。
本文假设给定标注源数据集 D s D^s Ds,无标注目标数据集和语义嵌入 Φ Φ Φ,学习 ZSL 模型,使得其既能在传统设定下又能在广义设定下获取良好的表现。
图 2. QFSL模型的总体架构。标记和未标记的数据都用于训练相同的模型。为便于理解,将其分为两个部分进行描述。
不同于以上描述的双线性形式,我们将得分函数 F 设计成非线性形式。整个模型由深度神经网络实现。模型包括 4 个模块:视觉嵌入子网络,视觉-语义衔接子网络,得分子网络和分类器。视觉嵌入子网络将原始图像映射到视觉嵌入空间。视觉-语义衔接子网络将视觉嵌入映射到语义嵌入子网络。得分子网络在语义空间中产生每一类的得分。分类器根据得分输出最终的预测结果。所有的模块都是可微分的,包括卷积层,全连接层,ReLU 层和 softmax 层。因此,我们的模型可以进行端到端的训练。
现有的大多数模型采用了 CNN 提取得到的特征作为视觉嵌入。在这些方法中,视觉嵌入函数θ是固定的。这些方法并没有充分利用深度 CNN 的强大的学习能力。本文采用了预训练的 CNN 模型来进行视觉嵌入。我们的视觉嵌入模型的主要不同之处在于可以和其他模块一起进行优化。视觉嵌入模块的参数记为 W_θ。除非特别说明,我们把第一个全连接层的输出作为视觉嵌入。
衔接图像和语义嵌入之间的关系对 ZSL 来说很重要。这种关系可以通过线性函数或者非线性函数来建模。本文采用了非线性函数φ将视觉嵌入映射到语义嵌入。φ由若干个全连接层来实现,其中每一个全连接层后面跟了一个非线性激活函数:ReLU。衔接函数的设计依赖于上述的视觉嵌入子网络的架构。具体来说,我们的设计是按照所选择 CNN 模型的全连接层来设计的。视觉-语义衔接子网络和视觉嵌入网络一起进行优化。视觉-语义衔接子网络参数记作 W φ W_φ Wφ。
衔接视觉嵌入和语义嵌入之后,识别任务可以通过在语义嵌入空间中使用最近邻搜索来实现。
给定一张图像,我们首先通过视觉嵌入子网络得到它的视觉嵌入。然后,利用视觉-语义衔接子网络,完成从视觉嵌入到语义嵌入的映射。最后,我们通过内积计算得到投影得到的视觉嵌入和语义嵌入的得分。因此,得分函数可以表示如下:
F ( x , y ; W ) = φ ( θ ( x ; W θ ) ; W φ ) Φ ∗ ( y ) F(x, y; W) = φ(θ(x; W_θ);W_φ) Φ^*(y) F(x,y;W)=φ(θ(x;Wθ);Wφ)Φ∗(y)
其中 W θ W_θ Wθ和 W φ W_φ Wφ分别为视觉嵌入函数和视觉-语义衔接函数的权重, Φ ∗ ( y ) Φ^* (y) Φ∗(y)是 y y y的归一化语义嵌入: Φ ∗ ( y ) = Φ ( y ) ∣ ∣ Φ ∣ ∣ 2 Φ^*(y)=\frac{Φ(y)}{||Φ||_2} Φ∗(y)=∣∣Φ∣∣2Φ(y)。得分函数由单个全连接层来实现。它的权重使用源类和目标类的归一化语义: [ Φ ∗ ( y 1 ) , Φ ∗ ( y 2 ) , . . . , Φ ∗ ( y S + T ) ] [Φ^*(y_1), Φ^*(y_2), ..., Φ^*(y_{S+T})] [Φ∗(y1),Φ∗(y2),...,Φ∗(yS+T)]来初始化。和视觉嵌入子网络和视觉-语义衔接子网络不同的是,得分子网络的权重是固定的,在训练阶段不参与更新。通过这种方式,我们的模型将图像 x i S x_i^S xiS投影到与视觉嵌入 Φ ∗ ( y i S ) Φ^*(y_i^S) Φ∗(yiS)相近的方向上。需要注意的是目标类的数据没有标注,这些数据在我们的方法中用到了训练阶段当中。因此,在训练阶段,我们的模型对于一张给定的图像,产生了 S+T 个得分。
经过得分函数后,我们使用 (S+T) 路的 softmax 分类器产生了所有类的概率。输入图像的预测结果为概率最高的那个类。
我们的方法采用了类似于由 (S+T) 路的 softmax 分类器的全监督分类模型,用来分类目标类和源类。但是,只有源类数据是有标注的,目标类数据没有标注。我们定义了准全监督损失函数来训练提出的模型:
L = 1 N s ∑ i = 1 N s L p ( x i s ) + 1 N s ∑ i = 1 N t λ L b ( x i t ) + γ Ω ( W ) L = \frac {1} {N_s} \sum _{i=1} ^{N_s} {L_p}(x_i^s) + \frac {1} {N_s} \sum _{i=1} ^{N_t} λ {L_b}(x_i^t) + γ Ω(W) L=Ns1i=1∑NsLp(xis)+Ns1i=1∑NtλLb(xit)+γΩ(W)
通常,传统的全监督分类器的损失函数包括分类损失 L p L_p Lp 和正则化损失 Ω Ω Ω。和传统定义不同,我们提出的 QFSL 结合了一个额外的偏置损失 L b L_b Lb 来缓解强偏问题:
L b ( x i t ) = − ln ∑ i ∈ y t p i L_b(x_i^t) = -\ln \sum _{i \in {y^t}} p_i Lb(xit)=−lni∈yt∑pi
其中, p i p_i pi 表示预测为类 i 的概率。给定一个来自目标类的实例,该损失鼓励模型增加所有目标类的概率和。这样可以防止目标类被映射到源类中。
对于分类损失 L p L_p Lp,我们采用了交叉熵。对于正则化损失 Ω Ω Ω, L 2 L_2 L2 范数来约束训练参数 W = W θ , W φ W={W_θ, W_φ} W=Wθ,Wφ。 λ λ λ 和 γ γ γ 用于平衡不同损失之间的权重,通过交叉验证来确定。在训练阶段,所有标注的数据和未标注的数据混合在一起作为训练数据。模型使用随机梯度下降算法 (SGD) 进行优化。每一个批 (batch) 训练图像从混合数据集中随机抽取。实验结果表明我们的方法不仅有效地避免了偏置问题,还帮助建立起了更好的视觉嵌入和语义嵌入之间的联系。
我们在三个数据集上评估了我们的方法。这三个数据集分别为 AwA2、CUB、SUN。在实验中,我们采用属性作为语义空间,用类平均准确度衡量模型效果。
首先,我们在传统设置下对我们方法和现有方法。用来做对比的现有方法分为两类:一类是归纳式方法,包括 DAP、CONSE、SSE、ALE、DEVISE、SJE、ESZSL、SYNC;另一类是直推式方法,包含 UDA、TMV、SMS。与此同时,还比较了一个潜在的 baseline(标记为 QFSL-):只用有标注的源数据来训练我们的模型。实验效果如表 1。可以看出,我们的方法大幅度(4.5~16.2%)提升了分类准确度。
表 1. 在传统设置下的实验比较
大多数现有直推式方法在测试阶段都采用了同训练阶段同样的数据来评估性能。然而,如果我们的方法也采用这种方式来评估效果是很不合理的。因为我们的方法已经利用到了无标签的数据来源于目标类这一监督信息。为了解决这一问题,我们将目标数据平分为两份,一份用来训练,另一份用来测试。然后交换这两份数据的角色,再重新训练一个模型。最终的效果为这两个模型的平均。我们比较了我们的方法和若干现有方法,以及一个隐含的 baseline:先训练一个二分类器来区分源数据和目标数据,然后再在各自搜索空间中分类。
可以看出,我们模型的整体性能(调和平均数 H)有着 9.3~24.5 的明显提高。该项指标的提高主要得益于在目标数据上的效果提升,同时又没有在源数据上大幅度降低准确度。该结果表明,我们的方法能够很大程度上缓解强偏问题。
现实世界中,目标类的数量可能远远高于源类数量。然而,大多数现有 ZSL 数据集的源、目标数据划分都违背了这一点。比如,在 AwA2 中,40 个类用来做训练,10 个类用来做测试。我们在实验上给出了随着源数据类别的增加,QFSL 在效果上如何变化。该实验在 SUN 数据集上进行,72 类作为目标类,随机选取剩下的类作为源类。我们尝试了 7 个大小不同的源类集,类的数量分别为 {100,200,300,450,550,600,645}。用这些不同大小的源类作为训练集,测试我们的方法,效果如图 3。由图可以看出,随着类别增加,模型能够学习到更多的知识,其在目标数据集上准确度越来越高。同时,由于源数据和目标数据变得越来越不平衡,强偏问题越来越严重。我们方法能够缓解强偏问题,因而其在效果上的优越性也越来越明显。
本文提出了一种用于ZSL学习的无偏嵌入的方法,直接有效。这种方法假设标注的源数据和未标注的目标数据在模型训练的过程中都可以得到。一方面,将标注的源数据映射到语义空间中源类对应的点上。另一方面,将未标注的目标数据映射到语义空间中目标类对应的点上,从而有效地解决了模型预测结果向源类偏置的问题。在各种基准数据集上的实验表明我们的方法在传统设定和广义设定下,大幅超过了现有的 ZSL 方法。