Zero-Shot Learning读书笔记(第一周)
前言:
近期因加入学校教研室,教授安排的研究方向是Domain adaptation 或Zero-Shot Learning ,我选择的是后者,在此之前虽然我对ZSL有初步的了解,但是仅限于此。今后我将每周更新5-10篇ZSL方向的相关博客或者论文的学习笔记,在此分享出来望共同探讨学习,如有理解上的偏差或错误恳请各位大佬及时指出,谢谢!
第一篇:零次学习(Zero-Shot Learning)入门:
原文链接
https://zhuanlan.zhihu.com/p/34656727?spm=5176.9876270.0.0.399ce44aXsg7cN
ZSL的概念、解释
- 解释:
Zsl希望我们的模型对其从没有见过的类别进行分类,让机器聚类推理能力。其中零次(Zero_shot)是指对于要分类的类别对象,一次也不学习。
-
形象解释:
假设小暗(纯粹因为不想用小明)和爸爸,到了动物园,看到了马,然后爸爸告诉他,这就是马;之后,又看到了老虎,告诉他:“看,这种身上有条纹的动物就是老虎。”;最后,又带他去看了熊猫,对他说:“你看这熊猫是黑白色的。”然后,爸爸给小暗安排了一个任务,让他在动物园里找一种他从没见过的动物,叫斑马,并告诉了小暗有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后,小暗根据爸爸的提示,在动物园里找到了斑马。 -
实现思路:(转化为一般的图片分类问题,且只考虑图片分类问题)
训练集数据X_tr 及其标签 Y_tr ,包含了模型需要学习的类别(马、老虎和熊猫),这里和传统的监督学习中的定义一致;
测试集数据 X_te及其标签 Y_te ,包含了模型需要辨识的类别(斑马),这里和传统的监督学习中也定义一致;
训练集类别的描述 A_tr,以及测试集类别的描述 A_te ;我们将每一个类别 y_i∈ Y ,都表示成一个语义向量 a_i∈ A 的形式,而这个语义向量的每一个维度都表示一种高级的属性,比如“黑白色”、“有尾巴”、“有羽毛”等等,当这个类别包含这种属性时,那在其维度上被设置为非零值。对于一个数据集来说,语义向量的维度是固定的,它包含了能够较充分描述数据集中类别的属性。
在ZSL中,我们希望利用X_tr和Y_tr来训练模型,而模型能具有识别X_te的能力,因此模型需要知道所有类别的描述A_tr和A_te -
Questions:
类别的描述A到底是怎么获取的:
人工专家定义护着海量的附加数据集自动学习 -
ZSL definition:
利用训练集数据训练模型,使得模型能够对测试集的对象进行分类,但是训练集和测试集类别之间没有交集;期间需要借助类别的描述,来建立训练集和测试集之间的联系,从而使模型有效。
https://blog.youkuaiyun.com/tianguiyuyu/article/details/81948700
ZSL需要解决的问题
获取合适的类别描述A
目前主要是自然语言处理(NLP)方法,难度大,进展慢
建立一个合适的分类模型
方法多,比较容易出成果
常用数据集
- Animal with Attributes(AwA)官网:Animals with Attributes
提出ZSL定义的作者,给出的数据集,都是动物的图片,包括50个类别的图片,其中40个类别作为训练集,10个类别作为测试集,每个类别的语义为85维,总共有30475张图片。但是目前由于版权问题,已经无法获取这个数据集的图片了,作者便提出了AwA2,与前者类似,总共37322张图片。 - Caltech-UCSD-Birds-200-2011(CUB)官网:Caltech-UCSD Birds-200-2011
全部都是鸟类的图片,总共200类,150类为训练集,50类为测试集,类别的语义为312维,有11788张图片。 - Sun database(SUN)官网:SUN Database
总共有717个类别,每个类别20张图片,类别语义为102维。传统的分法是训练集707类,测试集10类。 - Attribute Pascal and Yahoo dataset(aPY)官网:Describing Objects by their Attributes
共有32个类,其中20个类作为训练集,12个类作为测试集,类别语义为64维,共有15339张图片。 - ILSVRC2012/ILSVRC2010(ImNet-2)
利用ImageNet做成的数据集,由ILSVRC2012的1000个类作为训练集,ILSVRC2010的360个类作为测试集,有254000张图片。它由 4.6M 的Wikipedia数据集训练而得到,共1000维。
Zero-Shot Learing问题数据集分享(GoogleNet 提取)
基础算法介绍
- 建立特征空间和语义空间的映射:因为ZSL面临的是一个语义分类的问题,即对于测试集样本X_te分类y_i∈Y,又因为语义描述A和类别Y一一对应,所以只需要关心测试样本X_te的特征空间和语义空间的映射。
- 可以归纳为一个分类问题,最常用的方法是岭回归(均方误差加范数约束)
min‖X_tr W-A_tr ‖^2+ηΩ(W)
Ω为2范数约束。 - 岭回归有效的基础:训练集类别语义A_tr与测试集类别语义A_te之间存在密切联系。
- 如何建立更好的模型:需要了解ZSL中存在着哪些和传统分类的差异。
ZSL中存在的问题以及解决方法
- 领域漂移问题(domain shift problem)
- 问题:同一类别语义中具体实体的差别可能很大。样本的特征维度比语义维度大很多,所以在映射的过程中会丢失信息。
- 解决方法:将映射到语义空间中的样本,再重建回去。以让学习到的映射能保留更多的信息。将目标函数改写
min‖X_tr-W^T A_tr ‖^2+λ‖WX_tr-A_tr ‖^2
- 枢纽点问题(Hubness problem)
- 问题:在高维空间中,某些点会成为大多数点的最邻近点。
- 解决方法:建立语义空间到特征空间的映射:
min‖X_tr-A_tr W‖^2+ηΩ(W)
还可以:使用生成模型,比如子编码器,生成测试集的样本,不存在K-NN的操作,所以不存在hubness problem。
- 语义间隔(semantic gap)
- 问题:样本的特征通常是视觉特征,而语义表示的却是非视觉的,这容易导致样本在特征空间所构成的流型与语义空间中流型不一致——直接学习两者之间的映射变得困难。
- 解决方法:将类别的语义表示调整到样本的流型上,即用类别语义表示类别语义即可。
有关ZSL的一些其他的概念
-
直推式学习(Transductive setting)
在训练模型的时候,我们或许已有测试集的数据,只是没有拿到测试集的样本标签。因此可以通过迁移学习的方法,利用测试集数据的到一些测试类别的先验知识。 -
泛化的ZSL(generalized ZSL)
在现实的问题中,拿到的样本也可能属于训练类别,因此在测试是,同时加入训练类别。
第二篇:Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer
摘要
研究了测试集和训练集不相交时的对象分类问题。
在此文章发表之前,没有对于毫无关联的训练集和测试集进行抽样检测的工作,也即是只能对训练集所包含的样本进行分类。作者希望能提出一种不需要任何目标数据类别信息的对象分类方法(无直接训练集)。
提出高维特征的概念,这里的高维特征包括但不限于形状、颜色、地理位置,而且是可以事先学习的。(they can be pre-learned, e.g. from image datasets unrelated to the cur- rent task. )然后,可以根据它们的属性表示(高维语义)检测新类,而不需要新的学习。
实验表明,利用属性层确实可以构建一个不需要目标类训练图像的学习对象检测系统。
该工作在一定程度上实现了迁移学习。
算法简介
- 假设:
( x 1 , l 1 ) , . . . ( x n , l n ) (x_1,l_1),...(x_n,l_n) (x1,l1),...(xn,ln)为训练样本 x x x和相对于的类别标签 l l l的成对数据,一共有 n n n对,属于 k k k个类别,用 Y = { y 1 , y 2 , . . . , y k } Y=\{y_1,y_2,...,y_k\} Y={ y1,y2,...,yk}表示。 - 目标:
学习一个分类器 f : X → Z f:X\to Z