摘要: 目前AI在图片分类方向已经做得非常优秀,有的甚至超过人类。但是,这仅仅限于模型经过已知样本的学习。令模型像人一样具有推理能力,通过已知样本可以对未知分类进行识别,这将是未来的一个主要方向,也是AI技术智能化的下一个台阶。
纯监督学习在很多任务上都达到了让人惊叹的结果,但是这种基于数据驱动的算法需要大量的标签样本进行学习,而获取足够数量且合适的标签数据集的成本往往很高。即便是付出这样的代价,所得到的模型能力仍然有限——训练好的模型只能够识别出样本所提供的类别。
例如利用猫狗图片所训练出来的分类器,就只能对猫、狗进行分类,无法识别出其他的物种分类(例如鸡、鸭)。这样的模型显然不符合人工智能的终极效果。
零次学习(Zero-shot Learning,简称ZSL)方法是为了让模型具有推理能力,令其通过推理,来识别新的类别。即能够从已知分类中总结规律,推理识别出其从没见过的类别,实现真正的智能。其中零次(Zero-shot)是指对于要分类的类别对象,一次也不学习。
1 了解零次学习
零次学习(ZSL)方法可以被归类为迁移学习的一种,该方法侧重于对毫无关联的训练集和测试集进行图片分类的工作。
本节来介绍一下有关零次学习(ZSL)的基础知识。
1.1零次学习的思想与原理
零次学习的思想是,基于人类指定的对象的高维特征描述对图片分类,而不是仅仅利用训练图片训练出相应的特征图片分类。参考论文[doi: 10.1109/CVPR.2009.5206594],地址链接:
https://www.researchgate.net/publication/227943302_Learning_To_Detect_Unseen_Object_Classes_by_Between-Class_Attribute_Transfer
其中的高维特征描述并不是统一的,它可以包括很多,例如,形状、颜色,甚至地理信息等等。,如图1所示。
图1 样本分类的高维特征描述
利用这些信息的主要原因是,它们能够一定程度上实现迁移学习。在具体实现过程中,类别描述已经被类别文字的词向量所代替,其中的描述项也换做词向量中所蕴含的语义来表达,即,让神经网络来拟合描述语义和样本之间的特征映射。这么做虽然降低了类别描述的直观性,但是更符合神经网络基于特征映射的特性。
1 零次学习的一般做法
零次学习的一般做法是利用训练集数据训练模型,使得模型能够对测试集的对象进行分类,但是训练集类别和测试集类别之间没有交集;期间需要借助类别的描述,来建立训练集和测试集之间的联系,从而使得模型有效。
例如,模型对训练集数据中的马,老虎,熊猫类别进行学习,掌握了这些类别的特征和对应的描述。则模型可以在测试集中,按照描述的要求找出斑马。其中描述的要求是:有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的动物,该动物叫做斑马。如图2所示。
图2 ZSL概念
具体步骤如下:
(1)训练类别可以表示成属性向量Y
(2)测试类别(未知类别)也可以表示为属性向量Z
(3)训练一个分类器,在完成对训练集数据分类时,又生成样本的特征向量A,并让该特征向量A与训练类别的属性向量Y对应起来。
(4)测试时,利用该分类器可得到测试样本的特征向量A,对比测试集类别的属性向量Z,即可预测出测试分类的结果。
2 零次学习的主要工作
实现ZSL功能主要包含两个主要的工作:
- 实现一个合适的类别描述,一般使用NLP相关的处理方法
- 建立一个合适的分类模型,一般使用图片分类相关的处理方法。
这两部分主要工作是ZSL效果的核心,如果能够有更好的类别属性描述和分类器,就可以使模型对未知分类的识别能力更强。
1.2 与零次学习有关的常用数据集
在ZSL相关的研究中,最常用的有如下5种数据集。
1 Animal with Attributes(AwA)
AwA数据集包括50个类别的图片(都是动物分类),其中40个类别作为训练集,10个类别作为测试集。
AwA数据集中每个类别的语义为85维,总共有30475张图片。但是目前由于版权问题,已经无法获取这个数据集的图片了,作者便提出了AwA2,与前者类似,总共37322张图片。下载地址:
http://cvml.ist.ac.at/AwA2/AwA2-data.zip
2 鸟类数据集(CUB-200)
鸟类数据集(CUB-200)共有两个版本,Caltech-UCSD-Birds-200-2010与 Caltech-UCSD-Birds-200-2011。每个类别含有312维的语义信息。
其中,Caltech-UCSD-Birds-200-2010在1.3.2小节介绍过。而Caltech-UCSD-Birds-200-2011相当于Caltech-UCSD-Birds-200-2010的扩展版本,其中,对每一类扩充了一倍的图片。并针对ZSL方法,将200类数据集分为150类训练集和50类测试集。详细信息,请见以下链接:
http://www.vision.caltech.edu/visipedia/CUB-200-2011.html
3 Sun database(SUN)
总共有717个类别,每个类别20张图片,类别语义为102维。传统的分法是训练集707类,测试集10类。官网:SUN Database
4 Attribute Pascal and Yahoo dataset(aPY)
共有32个类,其中20个类作为训练集,12个类作为测试集,类别语义为64维,共有15339张图片。官网:Describing Objects by their Attributes
5 ILSVRC2012/ILSVRC2010(ImNet-2)
利用ImageNet做成的数据集,由ILSVRC2012的1000个类作为训练集,ILSVRC2010的360个类作为测试集,有254000张图片。它由 4.6M 的Wikipedia数据集训练而得到,共1000维。
上述数据集中(1)-(4)都是较小型(small-scale)的数据集,(5)是大型(large-scale)数据集。虽然(1)-(4)已经提供了人工定义的类别语义,但是有些作者也会从维基语料库中自动提取出类别的语义表示,来检测自己的模型。
1.3 零次学习的基本做法
在ZSL中,会把利用深度网络提取的图片特征称为特征空间(visual feature space);把每个类别所对应的语义向量称为语义空间。而ZSL要做的,就是建立特征空间与语义空间之间的映射。
为了识别不可见类的对象,大多数现有的零样本学习(ZSL)方法首先基于源可见类的数据学习公共语义空间和视觉空间之间的兼容投影函数,然后再将其直接应用于目标不可见分类。
1.4 直推式学习
直推式学习(Transductive setting)常用在有测试集的数据,没有测试集的样本标签的场景下。
它是一种类似于迁移学习的ZSL实现方法,在训练模型时,先用已有的分类模型对测试集数据计算特征向量,并将该特征向量当作测试集类别的先验知识,进行后面的推理预测。
1.5 泛化的零次学习任务
泛化的ZSL(generalized ZSL)对普通的ZSL提出了更高的要求,在测试模型是不仅仅使用纯粹的测试集数据,而是在使用的测试集数据中,既有未知分类又有训练时的已知分类。这种任务更符合ZSL的实际应用情况。也更能表现出ZSL模型的能力。
2 零次学习中的常见难点
在ZSL的研究中,常会遇到以下难点,它们也是影响ZSL效果的主要问题。
2.1 领域漂移问题
领域漂移问题(domain shift problem)是指同一种属性,在不同的类别中,视觉特征的表现可能差别很大。参考论文(arXiv:1501.04560,2015)
1 领域漂移问题的根本原因
例如:斑马和猪都有尾巴,但是在类别的语义表示中,两者尾巴的视觉特征却相差很远。如图3所示。
图3 领域漂移问题
图3中第1行描述了一个学习斑马分类语义和图片属性对应的模型结果。右侧蓝色的点为根据图片所预测出的语义特征,红色的五角星为图片本身的特征。将该模型用于不可见分类猪的图片上,便得到第2行右侧的特征分布。可以看到所预测出来猪的语义特征与猪图片本身的特征距离很远。这就是领域漂移问题,它导致了学习斑马分类的模型无法能够对未见过的猪分类做出正确的预测。
因为样本的特征维度往往比语义的维度大,所以在建立从图片到语义映射的过程中,往往会丢失信息。这是领域漂移问题的根本原因。
2 解决领域漂移问题的思路
比较通用的解决思路是将映射到语义空间中的样本,再重建回去,这样学习到的映射就能够得到保留更多的信息。例如语义自编码模型(SAE),参考论文(arXiv:1704.08345,2017)。
重建过程的做法与非监督训练中的重建样本分布方法完全一致。例如:自编码模型的解码器部分,或是GAN模型的生成器部分。它可以完全使用非监督训练中重建样本分布的相关技术进行实现。
利用重建过程生成测试集的样本之后,就可以将问题转化成一个传统的监督分类任务。增加了预测的准确率。
2.2 原型稀疏性问题
原型稀疏性(prototype sparsity)问题是指每个类中的样本个体不足以表示类内部的可变性或帮助消除类间相重叠特征所带来的歧义。即,在同一类别中的不同样本个体之间的差异往往是巨大的,这种差异多导致的类间相似性,会使ZSL分类器难以预测出正确的结果。参考论文(arXiv:1501.04560,2015)
该问题本质还是个体和分布之间的关系问题, 2.1小节的解决思路同样适用于该问题。
2.3 语义间隔问题
语义间隔(semantic gap)问题是指样本在特征空间中所构成的流型与语义空间中类别构成的流型不一致。
样本的特征往往是视觉特征,比如用深度网络提取到的特征,而语义表示却是非视觉的,当二者反应到数据上,很容易会出现流型不一致的现象。如图4所示
图4 语义间隔问题
这种现象使得直接学习两者之间的映射变得困难。
解决此问题的思路要从将两者的流形调节一致入手。在实现时,先使用传统的ZSL方法,将样本特征映射到语义特征上,再提取样本特征中潜在的类级流形,生成与其流型结构一致语义特征(流形对齐),最后训练模型实现样本特征到流形对齐后的语义特征之间的映射。参考论文(arXiv:1703.05002,2017)如图5所示
图5 流型对齐
3 相关的论文和代码资源
在Github上有个很全的资料总结,具体链接如下:
https://github.com/chichilicious/awesome-zero-shot-learning
改链接里包含了大量的最新论文以及相关代码:
从2019年的论文来看,ZSL的效果已经上升了一个新的台阶,其中越来越多的技术都使用了图神经网络。而他们的实现框架几乎都是PyTorch。
在未来,ZSL将是图片分类的新热点,而图神经网络将会是人工智能下一站的主要借力手段。PyTorch将是未来主流的人工智能框架工具。
未来我们也会继续跟进相关技术,并将有价值的实例应用分享出来。同时,我们还会编写一本基于PyTorch的图深度学习书籍(分为上下册两部分内容),帮助读者系统学习。预计在2个月之后,上册内容可以出版上市,该书主要关于PyTroch的使用以及神经网络和图深度学习的原理。而ZSL技术将会在下册内容中出现。
现,附上上册内容的前言介绍
前 言
图深度学习是一类基于深度学习的处理图域信息的方法。它是图分析方法与深度神经网络的融合。包括神经网络和图神经网络的相关知识。
如果说深度学习是个跨界学科,比较难学的话。那么图深度学习就是跨界学科的第二步台阶,它是建立在深度学习基础上,再与图领域学科跨界而成的。从知识栈的角度来看,它要比深度学习跨界得更多,入门更难。当然,从实用角度来看,它也比深度学习的实用性更广,性能更好。
本书主要从0基础开始,介绍与图深度学习相关的一系列知识与实现方法。包括上下两册,上册主要针对图深度学习的入门与原理,下册主要针对图深度学习的进阶与实战。
在上册中,会介绍PyTorch的使用、神经网络的原理、神经网络的基础模型、图神经网络的原理、图神经网络的基础模型。书中侧重于讲述与深度学习基础相关的网络模型和算法思想,以及图神经网络的原理和思路。这些知识点都会在目前最火的PyTorch框架上举例实现,帮助读者顺利跨越图深度学习的门槛。
在下册中,会介绍一些深度学习实例、并从可解释性角度出发阐述深度学习的原理、最后将图神经网络与深度学习结合,实现一些图深度学习实例。这些实例也是在PyTorch框架上完成的,并具有很强的实用价值。书中的实战案例包括了人工智能的多个业务领域,具体有:图像处理领域、视频处理领域、分本分析领域、语音处理领域、图结构关系数据领域等。在每个实例中,都会穿插一些高级的优化技巧和模型搭建方法。
本书特色
(1)知识系统,逐层递进。
本书着手于图深度学习相关的系统知识和基础原理的讲解。内容方面涵盖了与图深度学习有关的完整技术栈。从基础的单个神经元开始,到全连接、卷积、RNN、注意力、再到非监督训练方面的各种组合模型,最后从谱域和空间域两个角度介绍图神经网络,并剖析其背后的原理以及两种实现方式的内在联系。
(2) 跟进前沿技术,大量引用前沿论文
本书中所介绍的知识中,有很大比例源自近几年的前沿技术。在介绍其原理和应用的同时,还附有论文的出处,这些论文引用可以方便读者对感兴趣的知识进行溯源,并可以自主扩展阅读。在系统掌握了基础知识之后,为后续的能力进阶提供了扩展空间。
(3)插图较多便于学习
本书在介绍模型结构、原理的同时,还插入了140多张图解(平均不到3页1张图)。这些图解有的可视化了模型中的数据流向、有的展示了模型拟合能力、有的细化了某种技术的内部原理、有的直观化了模型的内部结构。可以帮助读者对知识更容易、快捷的理解和掌握。
(4)理论和实践结合,并融入作者的经验技巧
本书采用了两种知识介绍的模式进行编写:
- 先介绍基础知识原理,再对该知识点进行代码实现;
- 直接从实例入手,在实现过程中,将相关的知识点展开,详解。
为了不使读者阅读时感到枯燥,书中,将这两种方式随机的穿插使用。同时,在一些重要的知识点后面,还会以特殊的文字格式进行提示和注意,这些提示和注意的点融合了作者个人的经验积累。可以在学习过程中,扫清障碍、解除困惑、抓住重点。
(5)在基础原理之上更注重通用规律
以原理的角度来介绍图深度学习是本书的一大亮点。这里的原理并不是晦涩的数学、公式,而是通俗易懂的思想和认知。书中从单个神经元的原理开始,阐述了神经网络的作用;接着在以生物视觉的角度介绍了卷积神经网络(期间以非常容易理解的白话诠释了卷积分、离散积分、Sobel算法等知识点的原理和思想);随后从人类记忆规律的角度解释了RNN;再后从熵的角度系统的介绍了非监督模型的统一规律(f-GAN),以及互信息等前沿技术的延伸;最后从深度学习的角度介绍了图卷积的实现过程,并将该过程延伸到空间域的图神经网络实现方法,同时沿着空间域的方向进行深入,并结合了深度学习中的残差结构、注意力、互信息等基础理论,介绍了更多的图神经网络模型。
(6)以入门读者的学习角度出发,更系统、更易学。
考虑到读者自身的知识储备不同,凡是书中涉及到的知识点,全部都从0开始进行系统介绍,只要掌握Python即可学习。从PyTorch框架的安装、使用;到向量、矩阵、张量的基础变换;再到熵论的系统介绍。完全消除读者学习中常会遇到的跳跃、断层等感觉。