Zero-shot Learning 综述1

 

1. 对属性进行学习

典型文章:Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer

对属性进行学习:缺点

  1. 对属性的进行预测并不是ZSL任务的直接目标,这是间接地解决问题,这样可能会导致一种情况:模型可能对属性的预测是最优的,但对类别的预测未必是最优的。
  2. 无法利用unseen类的样本提供的先验知识。
  3. 无法利用属性间的关系等额外的信息,因为每个分类器只是针对一个属性进行学习的。
  4. 无法利用其他的辅助信息,例如词向量、语义等级层次等其他对类别的描述信息源。

Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer

训练样本:    X为任意的特征空间    K个离散的类别

学习一个映射关系:  Z是一个标签集合,与Y集合相近  

这个任务不能用一个普通的多类分类器来解决。典型的分类器为每个训练类Y学习一个参数向量αk。因为类Z在训练步骤中无法为它们推导出参数向量,也无法对未来的样本对这些类进行预测。

由于没有unseen的训练数据可用,因此无法从样本中学习这种“耦合”,而必须通过人工方式将其插入模型。

这就对什么样的“耦合”是可行的引入了两个严格的约束:

  1. 指定新类的人工描述应该是最少的,因为否则收集和标记训练样本将是一个更简单的解决方案;
  2. 耦合只需要普通知识的数据比专门的专家知识更可取,因为后者通常很难获得,而且代价昂贵。

为每个类别引入一个高阶的语义特征信息,例如:任意一个目标的颜色、形状,或者动物栖息地等。人能够为这些属性提供更高好的先验知识,因此不需要很大的开销就能收集到更必要的信息。

由于属性是赋予每个类别的而非每个图片,因此手动添加一个新对象类的工作量是最小的。

Attribute-Based Classification:

假设每个类别都有一个属性描述: 

通过YZ之间关于A的迁移信息可以学习到一个分类器:

Direct attribute prediction (DAP)

在训练过程中,每个样本的输出类别标签都对应属性层的某些确定性标记ai。任何监督学习方法都可以用来学习属性参数βm。在测试时,这些允许对每个测试样本的属性值进行预测,测试类由此推断。请注意,测试期间的类别可以不同于用于训练的类别,只要耦合属性层是以不需要训练阶段的方式确定的。

Indirect attribute prediction (IAP)

IAP也是使用了属性层去建立不同类别YZ之间的关系,只不过属性层连接是Y(训练阶段类别已知)和Z(训练阶段类别未知)的标签层。训练阶段,IAP为多类别分类器,测试阶段,所有训练类别Y的预测引入了一个属性层a,通过属性层可以得到测试类别Z。

这两种方法的主要区别在于训练类Y和测试类Z之间的关系。 DAP会产生一个所有类都被平等对待的网络。当在测试时,所有类的决策仅基于属性层。因此,我们可以期望它也能处理训练类和测试类不脱节的情况。与此相反,当间接预测属性值(IAP)时,训练类也产生一个测试时间作为中间特征层,一方面,如果训练类在测试期间也是潜在的输出类,那么这可能会引入偏差。另一方面,可以认为,从标签层而不是从样本中派生属性层,作为一个正则化步骤,只创建有意义的属性组合,因此使系统更加健壮。

Implementation

假设所有的属性都是01取值,对于Y,其长度固定:

连续的属性同上,只不过一个是用于回归,一个用于分类。

DAP

对于属性am,使用所有训练类的所有图像作为训练样本,其标签由与样本标签对应的属性向量确定。

训练器提供了一个条件概率估计:p(am|x)

属性层可以表示为:

在测试时,假设每个类z以指定的方式确定其属性向量az,若其中语句为真则为1,否则为0

根据贝叶斯公式:

给定图像的测试类的后验值:

在没有更多信息的条件下,假设类的先验是相同的,因此可以忽略p(z)

假设p(az)之间是相互独立的:

训练类别的属性先验采用一个经验均值:

求出后验后,对于输入x,测试不可见标签集z1,z2……zL,分类器为:

f(x)的输出即为对于输入x的预测标签。

IAP

首先,我们为y1,…,yK学习一个多类别的分类器估计:p(yk|x)

假定决策依赖于属性和类别,令:

得到这个后验后,再求出z的后验,即可如同DAP中一样应用MAP即可

似乎是DAPIAP用的更多,两者主要的区别为训练标签集和测试标签集的关系。论文中用提出的新数据集训练后,DAP40.5%)的识别准确率显著高于IAP27.8%),DAP的缺点显而易见,假设所有属性相互独立的假设过强,且对输出的预测值信赖度没有度量保证

2. 学习从视觉特征空间到语义空间的线性映射

典型文章:Label-Embedding for Attribute-Based ClassificationALE

                    直接解决对类别的预测问题,而不是简单地对属性进行预测。

第一,由于属性分类器是独立于最终任务学习的,它们在预测属性方面可能是最佳的,但在预测类方面不一定是最佳的。

第二,我们希望有一种方法,可以随着新的训练样本的提供而逐步改进,即,如果无标签样本对于某些类是可用的,那么就可以执行ZSL预测,当这些类可用时,还可以影响新标记的样本。尽管DAP对于零机会学习是有意义的,但要将它扩展到这样的增量学习场景并不是一件简单的事情。

第三,虽然属性是有用的先验信息来源,但其他信息来源也可以用于ZSL,例如语义结构,如Wordnet。在语义层次上相近的类的图像通常比在类别上相似的图像更相似。设计一种有效的方法将这些额外的信息源整合到DAP中并不是一件简单的事情。

属性标签嵌入(Attribute Label Embedding , ALE)

问题描述:

128维的SIFT向量和96维的颜色向量用PCA降维成一个64维向量,然后将其用FV(Fisher Vector)聚合成图像级表示,然后产生SIFTFV和颜色的FV,然后用高斯混合模型把他们连接成65535FV,这些FV就是映射到特征空间上的

预测函数 f 定义为:

其中,w F中待训练参数,假设F在某些输入/输出组合特征嵌入中是线性的:

用来衡量视觉特征空间x嵌入语义空间的兼容度(compatibility),这是一个双线性函数

φ是嵌入输入输出后tensor的乘积,W是一个DE维的向量,并reshapeD*W的矩阵。

F(x,y;w)可以表示为:

还可以考虑其他兼容性函数,例如: 广泛应用于回归问题中。                    

如果D和E很大,考虑将其进行低秩分解:                                           

Attribute label embeddingALE

给定C个类别的Y,以及属性A

ρy,i为属性 ai 和每个类别 y 之间的关联性度量,可能是个二值或者是个实数值,本文中,我们定义为二值格式,则:

ΦAE × C的属性嵌入矩阵(语义空间),是单个φA(y) 的叠加。

根据公式,图像和标签的嵌入是对称的,我们将输出的φA(y)规范化 (均值归一化或者l2规范化)

此外,在属性是冗余的情况下,解除它们之间的关联可能是有利的,因此我们采用下式:

矩阵V可以和U一起从标记数据中学习,为了简化,可能首先学习去相关性。即:上述过程为:

首先将Φ A进行奇异值分解,映射过去后进行归一化,归一到{0,1}中。那么待学习的参数仅为U。(Vφ当作整体)

WSABIE算法:

令:

WSABIE考虑以下排名目标:

γk 是关于k的递减函数

上式最大化代表了强制正确的标签排名高于错误的标签,即给定一组数据(xn,yn)Fyn是固定的,当取不同的y值时,可以得到一系列的 Fy 值,若Fyn> Fy y排名落后于yn,则损失为 l= -(Fyn- Fy) ,排名越靠后,l值为负数,损失取值为0。反之,若Fyn< Fy y排名领先yn,则损失为 l= (Fy- Fyn) ,排名越靠前,l值越大。

Zero-shot learning

我们采用WABSIE算法进行ZSL,在这种情况下,我们不能从标记数据(WSABIE相反)中学习Φ,而只能依靠边缘信息。我们将Φ固定为ΦA,因此,仅需要学习参数W,此时,目标函数不带非正则化的SVM损失函数(hinge loss)类似:

SSVM 采用多类别目标函数,仅考虑了rank1的情况,而WSABIE以一种加权的方式考虑rank

WSABIEloss是考虑了所有类别的,但在ALE中取了max,即在所有类别中找出 l 最大的,然后逐样本累加。

Few-shots learning

最后为了能利用额外的增量信息,ALE还增加了一项,变成:

其中 Φ表示可学习的语义空间, ΦA关于标签的先验知识。

为了预测新类别的数据,能逐步利用新的训练样本来改善模型。文中借鉴WSABIE算法,使目标函数在ZSL目标函数的基础上加上欧氏距离。其中参数Φ为在一定维度随机初始化的参数。在使用SGD等方法进行参数更新的时候,为使该损失函数的值尽可能得小,显然Φ要尽可能得接近ΦA,同时也利用了训练样本中存在的部分信息。从而使得ALE模型达到可以逐步利用新的训练样本(之前的训练样本中不存在的类别)的信息来改善模型。

	def update_W(self, W, idx, train_classes, beta):
		# train_classes: 训练集的类别id,共27个
		for j in idx:
			
			X_n = self.X_train[:, j]
			y_n = self.labels_train[j]
			y_ = train_classes[train_classes!=y_n] # 标签!=y_n的标签
			XW = np.dot(X_n, W)
			gt_class_score = np.dot(XW, self.train_sig[:, y_n])  # F(xn,yn,w)

			for i in range(len(y_)):
				label = random.choice(y_)
				# 损失:l=delta+F(xn,y,w)-F(xn,yn,w)
				score = 1+np.dot(XW, self.train_sig[:, label])-gt_class_score # acc. to original paper, margin shd always be 1.
				# beta 代表了权重更新的大小,如果第一次选择的错误标签计算的score>0,代表预测的类别得分很小,因此权重beta就大;
				# 若很多次以后才找到score>0的y_,即score>0的概率很小,代表预测的类别得分很大,因此权重beta就小
				# beta 相当于WSABIE算法公式中的γ
				# 损失对W求导,进行SGD优化
				if score>0:
					Y = np.expand_dims(self.train_sig[:, y_n]-self.train_sig[:, label], axis=0)
					W += self.args.lr*beta[int(y_.shape[0]/(i+1))]*np.dot(np.expand_dims(X_n, axis=1), Y)
					break
		return W

 

首先来看它的loss里的兼容度评别函数是直接与类别相关的,而不是解决中间问题;其次,ALE增加了可学习的语义空间,可以使用额外的增量信息,并且这种可学习的语义空间,很容易引入其他的辅助信息源,例如词向量、等级标签嵌入(HLE)等;最后,ALE直接对类别进行预测,类别会用属性得来的语义向量表示,这样的训练使得属性间是有联系的而不是单独训练预测属性最优。

 

典型文章: Evaluation of output embeddings for fine-grained image classification (SJE) - 2015 CVPR

使用了多种辅助语义信息源,致力于取代ZSL的人工标注属性。

Structured Joint EmbeddingsSJE

模型描述:

预测模型:

F为兼容性函数:

参数W可以表示为D×E 的矩阵,D是输入嵌入后的维度,E为输出嵌入后维度。最后生成一个双线性的兼容性函数:

矩阵W是通过强制使正确的标签排列得比任何其他标签都高来学习得到。

对于标签的嵌入,ALE and DeViSe*使用pairwise目标排序,WSABIE通过排序学习φ(y)W,我们使用多类别目标。

目标函数(非正则结构化SVM损失):

多类别损失 l 表示为:

对于ZSL,训练的类别和测试的类别不相关,因此,我们固定φ,学习参数W。预测时,将测试图像通过W相乘,搜索最邻近的嵌入空间向量(点乘相似度)进行预测。

训练时,采用SGD进行迭代,每输入一组(xn, yn),搜索排序最大的y值,若:

则更新W参数:

	def update_W(self, W, idx):
		
		for j in idx:
			X_n = self.X_train[:, j]
			y_n = self.labels_train[j]
			y = self.find_compatible_y(X_n, W, y_n)
			
			if y!=y_n:
				Y = np.expand_dims(self.train_sig[:, y_n]-self.train_sig[:, y], axis=0)
				W += self.args.lr*np.dot(np.expand_dims(X_n, axis=1), Y)
		
		return W

对于某些分类任务,可能有多个输出嵌入可用,每个嵌入对应输出空间结构的不同方面。每一个嵌入也可能有不同的信噪比。由于每个输出嵌入都可能提供关于输出空间的非冗余信息,如[45,2]所示,我们可以将它们组合在一起学习更好的联合嵌入。线性兼容性函数:

Wk是对应于不同φk(y)的权重。实验中,每个Wk单独进行训练,然后在验证集上进行αk的网格搜索。实验发现,可见类的αk和不可见类的αk通常是不同的。因此,ZSL中的αk取值采用交叉验证。

如果 ,上式等价于φ的直接连接。相当于将Wk组合单个矩阵W,与前序的公式一致。然而,这样的堆叠学习一个大的W,其中高维的φ会偏差最终的预测。因此,αk可以认为是φk相关的置信度。

Output Embeddings

Embedding by Human Annotation: Attributes

ρy,i {0, 1}或者是一个与类别相关的实数值,y为类别,E为属性个数。φAφ0,1可能包含更多的信息。例如,老鼠、猴子和鲸鱼,对于“大”这个属性,φ0,1 = [0, 0, 1]代表了老鼠=猴子<鲸鱼,而φA = [2, 10, 90],代表老鼠<猴子<鲸鱼 实验中,输出的嵌入为每个类别都生成了一个向量形式,但维度E可能不同。

Learning Label Embeddings from Text

从文本中挖掘出的无监督和弱监督标签嵌入

1. Word2Vec (φW)训练一个两层神经网络从一组上下文词中预测一组目标词。词汇表中的单词被赋值为one-shot编码,因此第一层充当查找表,以检索词汇表中任何单词的嵌入。第二层通过softmax预测目标词。其中,有两个重要的预测公式:skip-gram (SG) continuous bag-of-words (CBOW)。在SG中,局部上下文窗口中的单词从中心单词预测。 CBOW中,上下文窗口的中心由邻近单词预测。

2. GloVe (φG)包含了在文档中经常一起出现的单词的频数统计。从直观上看,频次统计数据对含义进行了编码,因为语义相似的词(如“ice”和“water”)出现在一起的频率高于语义不同的词(如“ice”和“fashion”)。训练目标是学习单词向量,使它们的点积等于这两个单词的共现概率。这种方法最近被证明在单词类比预测任务上优于Word2Vec

3. Weakly-supervised Word2Vec (φWws )标准的Word2Vec[35]使用示例窗口中的每个单词扫描整个文档作为预测目标。但是,如果我们知道全局上下文,即文档的主题,我们就可以使用该主题作为目标。例如,在维基百科中,整篇文章都与同一个主题相关。因此,我们可以从文章中的任何位置取样上下文窗口,只要主题显式的出现在文本中的上下文窗口中。我们认为这种方法是一种软监督形式。

在实验中使用我们的新变种的CBOW取得了最好的结果 。在这里,我们使用维基百科上的标准Word2Vec对第一层权值进行预训练,并采用细粒度文本语料库上的负样本目标微调第二层的权重,这些权重对应于最终的输出嵌入。负采样目标制定如下:

vw vw 是待学习的标签嵌入,vc 词汇嵌入vi 均值,这些词汇是单词w 上下文窗口内的的词汇。D+上下文vc 对应w 组合,D-vc 匹配 vw组合。为了找到 vi 第一层网络权重的每一列),我们采用了标准非监督Word2Vec模型,该模型在Wikipedia上训练得到。

训练时,vi固定不更新,只更新vw vw

4. Bag-of-Words (φB)BoW建立了一个词频包,不考虑单词在文档中出现的顺序,因此忽略了语法信息。我们收集与每个对象类对应的维基百科文章,并构建一个最经常出现的词汇表。然后构建这些单词的直方图来向量化类别。

分级嵌入( Hierarchical Embeddings 语义相似度是指两个词的意义之间的关系有多密切,这种相似性可以通过测量本体中术语之间的距离来估计。WordNet是一个包含超过10万个英语单词的大型分层数据库,为我们提供了一种构建类层次结构的方法。为了衡量相似性,采用 Jiang-Conrath [24] (φjcn), Lin [32] (φlin) path (φpath) 相似性公式,我们将整个的层次嵌入表示为φH

 

典型文章:DeViSE: A Deep Visual-Semantic Embedding Model-(2013 NIPS)

词嵌入具体相关性作为视觉神经网络监督信号训练网络

Language Model Pre-training

Mikolov等人[13,14] 已经证明了skip-gram文字模型对于无标注信息文字的语义信息浮点表示的有效性,模型通过文档中的邻近项来学习 如何将一个文本表示为一个固定长度的嵌入向量(图1a右图。由于同义词往往出现在相似的上下文中,所以这个简单的目标函数驱动模型学习语义相关单词相似嵌入向量

我们学习了一个skip-gram 文字模型,数据为维基语料库中的5.7million文档(5.4billion单词)。该网页的文本被标记为一个由大约155,000个单字和多字术语组成的词典,这些术语包括常见的英语单词和短语,以及来自常用的视觉对象识别数据集的术语。我们skip-gram模型使用了一个分层的softmax层来预测相邻的词,并使用一个20个词的窗口进行训练。其中,我们将隐藏层的神经元个数从100变化到2000,发现5001000在训练速度和语义质量上效果最好,ImageNet标签子集上的语言嵌入空间的可视化表明,该语言模型学习了丰富的语义结构,可用于视觉任务。

Visual Model Pre-training

AlexNet作为视觉模型的预训练模型。

Deep Visual-Semantic Embedding Model

模型初始化采用上述两个网络训练好的模型。语言模型学习到的嵌入向量被归一化,并用于将标签项映射到目标向量表示。

Visual网络移除了softmax分类层,投影层和相似性度量用于为每个图片输出特征向量,投影层将4096维压缩到500维。

损失函数:相似性度量和hinge rank loss的点乘,产生一个高阶点乘相似性(图像模型的输出和正确标签的向量表示,在图像输出和其他随机选择的文本术语的向量表示)。

hinge rank loss:

我们发现,通过(1)限制错误文本项的集合到可能的图像标签中,以及(2)在遇到第一margin-violating错误项后截断总和,可以方便地对算法进行随机化。t向量通过单位标准化进行限制,实验中采用0.1的边界进行限制。之所以采用这样的损失函数,而没有采用L2 loss,是因为最近邻评估基本上是一个排名问题,最好通过排名损失来解决,而L2损失仅旨在使向量彼此接近,但对于更接近目标图像的错误标签仍然是未知的。

	def update_W(self, W, idx, train_classes):
		
		for j in idx:
			
			X_n = self.X_train[:, j]
			y_n = self.labels_train[j]
			y_ = train_classes[train_classes!=y_n]
			XW = np.dot(X_n, W)
			gt_class_score = np.dot(XW, self.train_sig[:, y_n])

			for i, label in enumerate(y_):
				score = self.args.margin+np.dot(XW, self.train_sig[:, label])-gt_class_score
				if score>0:
					Y = np.expand_dims(self.train_sig[:, y_n]-self.train_sig[:, label], axis=0)
					W += self.args.lr*np.dot(np.expand_dims(X_n, axis=1), Y)
					break # acc. to the authors, it was practical to stop after first margin violating term was found
		return W

典型文章: An embarrassingly simple approach to zero-shot learning(EZSL) -2015 ICML

假设,训练阶段有 z 个类别,每个类别有 a 个属性,用矩阵符号 S 表示:S=[0, 1]a×z

当类别的描述可以用一系列的属性描述时,或者,属性和类别之间建立一个软连接,属性值为[0,1]

训练阶段,样本表示为: XRd×m,其中,d为数据的维度,m为样本个数。

样本的真值表示为: Y{-1,1}m×z

线性分类器的最优化问题可以描述为:

W为待训练的参数,L为损失函数,Ω为正则项

LΩ的类型可以表述为很多类别的问题,例如,Lhinge loss Ω为范数,则是SVM分类器。L可以为逻辑回归损失,Ω为其他正则项,例如trace norm

上述问题不涉及从一个类别到另外一个类别的迁移问题。

引入属性的信息S,W可以表示为:

inference阶段,为了识别新的类别z’,给定其属性矩阵S’[0,1]a×z,对于给定的实例x,预测问题可以描述为:

与其他ZSL不同的是,上述求解公式并非显示的最小化分类错误,相反,相反,它最大限度地减少了多类错误,既学习如何识别属性,也考虑每个属性在类决策中的重要性。

若正则化Ω为:

可以直接考虑这个问题kernel版本,即只使用实例之间的内部乘积:

               

,    φ(x)x在给定特征空间的表示。

上述问题是凸问题,全局最优解能够求出。

我们设计的正则化函数应满足以下要求:

1.其中应该有对 V•S的约束V•S代表属性空间中的向量在特征空间中的投影,对 V•S加以约束,理想上保证了所有signature在特征空间里有相似的欧几里得范数,能够更公平的比较不同的signature,同时能够防止由于高度不平衡数据集引发的问题

2.其中应该有对 transpose(V)X约束,原因: transpose(V)X所有训练实例 X属性空间中的表征,对 transpose(V)X约束能够限制其方差,使其在训练特征分布中拥有足够的不变性,如同传统的ridge/lasso一样,提高模型在不同的测试特征分布中的泛化性

令:

则模型的求解可以表示为:

求解过程如下:

由Frobenius范数定义,

	def find_W(self, X, y, sig, alpha, gamma):

		part_0 = np.linalg.pinv(np.matmul(X, X.T) + (10**alpha)*np.eye(X.shape[0])) # 求伪逆
		part_1 = np.matmul(np.matmul(X, y), sig.T)
		part_2 = np.linalg.pinv(np.matmul(sig, sig.T) + (10**gamma)*np.eye(sig.shape[0]))

		W = np.matmul(np.matmul(part_0, part_1), part_2) # Feature Dimension x Number of Attributes

		return W

 

 

上述提及的ZSL方法,基本上都是使用线性的兼容度评判函数,这是一个全局的线性函数,这对于更复杂的任务来说,例如细粒度任务,表达能力可能有限,自然会有人提出更复杂的非线性模型。

未完,待续。。。。。

 

 

翻译很辛苦!!!

 

参考:

https://zhuanlan.zhihu.com/p/61305815 

[1] C. H. Lampert, H. Nickisch, and S. Harmeling. "Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer". In CVPR, 2009

[2] Akata Z, Perronnin F, Harchaoui Z, et al. Label-Embedding for Attribute-Based Classification[C]. computer vision and pattern recognition, 2013: 819-826.

[3] Akata Z, Reed S, Walter D, et al. Evaluation of output embeddings for fine-grained image classification[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015: 2927-2936.

[4] Frome A, Corrado G S, Shlens J, et al. DeViSE: A Deep Visual-Semantic Embedding Model[C]. neural information processing systems, 2013: 2121-2129.

[5] Romera-Paredes B , Torr P H S . An embarrassingly simple approach to zero-shot learning[C]// Proceedings of the 32nd international conference on Machine learning (ICML '15). Springer International Publishing, 2015.

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值