ECCV 2020 | GAN/VAE地位难保?Flow被首次用于零样本学习

举报
HWCloudAI 发表于 2020/10/14 11:17:20 2020/10/14
【摘要】 计算机视觉三大会议之一的ECCV 2020刚刚落下帷幕,本文主要介绍阿联酋起源人工智能研究院(IIAI)的科学家们在该会议上发表的一篇论文:《Invertible Zero-Shot Recognition Flows》。该工作首次提出了一种基于生成流(Generative Flow)模型的零样本学习方法,并在多个数据库上取得了目前最好的识别结果。全文链接:https://www.ecva....

计算机视觉三大会议之一的ECCV 2020刚刚落下帷幕,本文主要介绍阿联酋起源人工智能研究院(IIAI)的科学家们在该会议上发表的一篇论文:《Invertible Zero-Shot Recognition Flows》。该工作首次提出了一种基于生成流(Generative Flow)模型的零样本学习方法,并在多个数据库上取得了目前最好的识别结果。

image.png


全文链接:

https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123610596.pdf


一、零样本学习简介


众所周知,在当今计算机视觉领域,深度学习可谓“一统天下”,在诸多视觉任务中都取得了目前最好的(检测、识别、分割等)结果。而数据可谓是深度学习算法的“Buff”,算法的好坏往往取决于是否有充足且多样性的标注好的训练数据。举例而言,我们要识别下图中的三种动物,那么首先我们需要标注大量老虎、兔子和斑马的图片,然后基于这些有标签的图片训练深度学习模型,最后将未知类别的图片输入训练好的模型中,才能够准确识别出图片中包含的动物类别。然而,在实际应用场景中,我们往往会遇到以下“尴尬”情况:当我们在训练深度学习模型时,能“看见”的是标注好的大量老虎和兔子的图片,然而我们需要识别的图片中包含的却是斑马。可以预见的是,不管我们使用多么先进的模型架构,将斑马输入训练好的模型后,所得到的预测结果很有可能就是老虎(为啥?很简单,因为老虎和斑马长得更像不是嘛)。如下图所示,我们把斑马称作不可见类别(Unseen Class),而老虎和兔子就属于可见类别(Seen Class),而这个问题则被称为零样本识别(Zero-Shot Recognition)问题,用来解决这一类问题的方法则被称为零样本学习(Zero-Shot Learning,ZSL)方法。


image.png


在现实生活中,类似情况是十分常见的,因为:(1)“斑马”可能是新型物种,我们使劲浑身解数也没法捕捉到它那“迷人”的一瞬间;(2)有人见过“斑马”,但还是没法拍到它的照片,因为它可能是人体内的某个器官(每拍一次就会受一次辐射,这谁受得了)。换而言之,世界瞬息万变,新物种、新概念、新类型层出不穷,我们无法或很难获取某些类别的标注数据


那么,我们怎么才能识别这令人摸不着头脑的“斑马”呢?答案是——买装备!哦不对,是借助语义信息(Semantics)。啥叫语义信息?很简单,就是我们在描述某类事物特征时用到的一些形容词,比如斑马是“条纹状的”、“黑白相间的”、“毛茸茸的”、“脸长长的”等等。同样的,我们也可以对老虎和兔子进行描述。需要注意的是,这些描述类形容词在三种动物间是共享的,更一本正经的说:这些形容词共存于一个预先定义好的语义空间(Semantic Space)中,在这个空间中每种动物都有与之相对应的语义编码(Semantic Embedding)。这样一来,我们有了这些辅助信息,就可以自信地解决零样本问题了。具体来说,目前主流的零样本学习方法主要遵循以下三种思路


1. 学习视觉空间到语义空间的映射关系

image.png


使用这种方式,我们就可以学习到老虎和兔子身上的各种属性信息。当我们从未谋面的斑马进入我们的视野,我们就可以用学习到的映射关系来描述它。比如,我们可以自信的说,我们见到了一种动物,它身上是条纹状的、黑白相间的、毛茸茸的等等。从此,我们只要见到斑马的图片,就可以自然地把它们归为我们不知道名字的那一类动物。或者,我们也可以帮它取个名字叫“XX”,那我们就可以把斑马图片归类为“XX”类动物。至此,我们就可以识别出未知的动物类别了。


2. 学习语义空间到视觉空间的映射关系

image.png


这种思路反其道而行之,学习语义到视觉空间的映射,这样的话我们就可以基于斑马的语义编码生成斑马的视觉特征,当新来一幅包含斑马的图片时,我们就可以根据它在视觉空间中与之前生成的斑马特征进行相似度度量,从而识别出该图片的所属类别。值得一提的是,学习从语义到视觉空间映射这一任务与目前比较热门的图像生成(Image Generation)任务十分类似。因此,一些生成模型(Generative Model),比如生成对抗网络(Generative Adversarial Network, GAN) 和变分自编码器(Variational Autoencoder,VAE)都被广泛地扩展并应用于零样本识别任务,并且大多取得了目前最好(State-of-the-Art)的识别效果。


3. 学习视觉和语义空间到一个共享的隐空间的映射关系


image.png


这个思路也很直观,除了已有的两个空间外,我们还可以自定义一个“更好”的隐空间,然后把视觉特征和语义编码都投影到该空间中,最后通过距离度量等方式来获得最终的识别结果。


二、零样本学习与生成模型


1. 基本思路


一般而言,ZSL需要借助额外的知识来将模型的感知能力推广到不可见类别与模式上。基于生成模型的ZSL框架也基本遵循这个思路,只不过在策略上和传统方法稍有不同。近年来我们可以看到大量的生成式ZSL的工作,该类方法的大致流程如下图所示:

image.png


(1)先在可见(Seen)类别上训练一个可用于条件生成(Conditional Generation)的生成模型;

(2)利用语义空间的连续性,以不可见(Unseen)样本类别的语义特征作为输入,通过先前训练好的生成模型生成一些近似的未知类别样本;

(3)使用生成的不可见类别的样本作为训练数据,训练一个独立的分类器。


现阶段较为流行的深度生成模型大致可以被归纳为如下几类:


(1)生成对抗网络(GAN):ZSL中最常见的选择,早期的工作极大提高了ZSL的效能。但训练不够稳定,加入额外正则项的时候有可能会导致不可预测的训练结果。

(2)变分自编码器(VAE):ZSL中另一个常见的选择。训练较为稳定,但是变分推断所使用的下界模型(ELBO)有时对于样本空间的描述不够精准(尤其是Conditional VAE),再加之其训练过程对于隐空间的特性有要求(主要是Reparametrization Trick需要一个可导的采样策略),使得条件生成的效果往往不够好,进而影响后续分类器的识别能力。

(3)自回归模型(Auto-Regressive Model):自回归模型一般情况下不作为视觉问题的主要解决策略,这很大程度上(大概)是因为CNN不像RNN一样可以方便地进行自回归迭代 (而且也不需要),生成过程的并行化能力不够强。在这里不做讨论。

(4)生成流(Generative Flow):我们的选择,它可以直接描述样本空间的概率特性,拥有较为简单而稳定的训练过程,也有不错的生成效果。具体比较可见下表:

image.png


在以往的ZSL研究中,人们往往为了克服GAN的问题而去选择VAE,亦或为了克服VAE的问题而去选择GAN。那么,我们何不考虑开辟一条新的道路来同时解决更多问题呢?这个时候,Generative Flow进入了我们的视野……


2. Generative Flow背景


Flow与VAE不同的是,VAE仅会给出样本概率的下界,而Flow则会直接计算单个样本的概率质量:

image.png


其中z是由关于x的一组双射性(Bijective)变换z=fθ(x)得到的。pθ(z)一般会选用比较好参数化的先验分布(例如0均值的高斯分布)。其核心理论是基于概率模型中的变量替换(The Change of Variables Formula)具体可以参考这个wiki页面

https://en.wikipedia.org/wiki/Probability_density_function#Dependent_variables_and_change_of_variables


Generative Flow的生成过程依赖于变换函数f()的逆变换 g=f^-1:

image.png


这个模型先前并没有在CV领域引起很广泛的关注,主要原因在于以下两个难点

(1)寻找一个任意深度神经网络的逆变换并不方便;

(2)雅可比行列式det(dz/dx)的计算并不方便。


这些问题在近几年已经被逐步改善,核心思路是构造特定的网络结构,在保证整体逆变换不需要改变计算图的前提下,形成三角阵样式的雅可比矩阵。我们这里列出几个在这个方面具有代表性的工作:


● NICE: https://arxiv.org/abs/1410.8516

● RealNVP: https://arxiv.org/abs/1605.08803

● Glow: https://arxiv.org/abs/1807.03039


我们本次的工作很大程度上是站在以上巨人的肩膀上完成的。更详细的综述可以参考:

● Normalizing Flows: An Introduction and Review of Current Methods: 

https://arxiv.org/abs/1908.09257


三、我们的方法: IZF


Generative Flow并不是为零样本学习而存在的,因此并不能直接做到即插即用。为此,本文提出了三个贡献来让生成流方法更好地服务于ZSL问题:


● 我们通过将网络的输出分解为语义和非语义部分,从而将语义信息注入生成流方法中,这也是首次生成流方法被用于零样本识别任务。

● 我们提出了一个简单有效的方法,即度量和控制可见-不可见(Seen-Unseen)类别间的样本分布差异,从而解决零样本识别中普遍存在的偏移(Bias/Shift)问题。

● 我们在四个经典的零样本识别数据库(AwA1&2、CUB、SUN、aPY)上,在两种不同实验设置(Classic/Generalized Setting)下,均达到了国际领先的识别效果。

image.png

这是我们方法(Invertible Zero-shot Flow, IZF)的示意图,可以看到,生成流方法本质上是一个可逆网络,网络两边的输入(也是输出)分别是特征空间和语义空间。值得注意的是,这和上文所提到的三种思路有所不同,我们通过学习特征和语义空间的一种双向映射关系来解决零样本识别问题。

image.png


IZF的具体网络结构如上图所示,网络的正向传播路径和逆向传播路径(注意这里并不是神经网络优化时使用的反向传播,即Back-Propagation)分别显示在示意图的上半部分和下半部分。


1. 条件生成式Flow


我们使用v来代表任意一张图片的视觉特征;y作为其分类标注;c代表对应类别的语义特征。在最终目标为利用Unseen类别的语义特征进行条件生成的前提下,我们略微改写了Flow,将其输出分为了语义相关部分(c)和语义不相关部分(z):

image.png

我们对两部分的输出进行不同的正则:

image.png


其中语义相关部分会被关联至该图片原本标签的语义特征,而非语义部分则保持原有Flow的设计。这两个先验概率在最终计算的时候都会化为2范数的形式,因此使用起来非常方便。当然,这样的设计非常经验主义,但已经足够好用。

整个生成过程和常见的模型类似,唯一的区别在于IZF不需要使用额外的Decoder网络,而只需要Encoder的逆变换:

image.png


这个过程和CVAE的Decoder以及GAN的Generator过程类似。


2. 修正Seen-Unseen偏差:扩大MMD


大部分模型都有可能有将输出结果“聚拢”在一起的倾向,对于ZSL而言这可能导致生成的Unseen样本或特征长得和Seen样本过于接近,这将直接影响整个模型的判别能力,而这一直以来也是ZSL的一个核心问题。已经有相关研究证明Generative Flow本身对于这种现象并没有什么抵抗力。为了让我们的模型更好地服务于ZSL,我们决定人为地略微扩大(生成的)Unseen样本的概率分布与Seen样本的概率分布之间的距离:

image.png

我们选择使用MMD来衡量两个概率分布之间的差异。这种做法在很多模型中已经被证明是一种行之有效的手段,例如Wasserstein Auto-Encoder以及MMD-GAN。不同点在于,已有的研究工作中往往通过最小化MMD来对齐两个不同的概率分布,而我们考虑略微增大Seen与Generated Unseen分布之间的MMD以达到更好的ZSL效果。所提出的损失函数如下:

image.png


这个思路对于难以参数化的分布来说应该是再合适不过了。当然,这个正则项会带来一些负面效果,例如会驱使模型生成一些不合理的样本,这个特性在我们的实验中也完整地体现了。


3. 训练


IZF的训练完全依赖于梯度下降,因此十分方便快捷。我们使用三项目标函数的组合作为最终的损失函数:

image.png


其中

● L_Flow即单个样本的负对数似元(Negative Log-Likelihood),由本文章节三.1确定,是Generative Flow的常规训练目标函数。在只需要Encoding输出的情况下合理化模型的生成结果。这也是Flow的一大便捷特性。

● L_iMMD由本文章节三.2确定。

● L_C是常见的规范Classification Prototype的正则项,在此就不赘述了。


四、实验结果


1. 模拟数据的仿真结果


我们首先在模拟数据上做了一些仿真性实验,用来验证我们的两个研究动机:1)生成流是否比GAN和VAE更适用于零样本识别任务?2)所提出的iMMD损失函数是否能够解决零样本识别中普遍存在的偏移问题?


具体而言,给定图(a)所示四类仿真数据,其中三类可见,一类不可见。图(b)是我们方法生成的数据分布结果,图(c)和(d)分别是GAN和VAE加上我们提出的iMMD损失的结果。显而易见,GAN和VAE由于训练不稳定等因素,无法生成满意的数据分布。而我们方法生成的数据则比较符合真实的数据分布。图(f-h)则展示了不同参数下iMMD损失的效果。可以看到:不加iMMD损失生成的不可见类别数据会向可见类别有所偏移;加过大的iMMD损失同样无法得到稳定的数据生成结果;加正向的MMD损失则会放大原本已经存在的偏移问题。

image.png


2. 真实数据库的实验结果


我们在国际通用的四个数据库(AwA1&2、CUB、SUN、APY)上将我们方法与目前最好方法进行了一系列对比。我们采用两种不同的实验设置,即经典零样本学习(Classic ZSL,CZSL)和泛化零样本学习(Generalized ZSL,GZSL)。下表展示的是在GZSL实验设置下的实验结果(图中加粗的数据表示目前最好效果,表中“H”列是最重要的对比指标,最后两行是我们方法的结果)。可以看出,我们方法在不同数据库上均领先于目前已有算法,并且在H指标上有着不小的提升(比如在APY数据库上比排名第二的方法提升了约6%)。

image.png

下表展示的是不同方法在CZSL设置下的实验结果,除了CUB数据库(我们比最好方法低了0.5%),我们在其他数据库上都取得了目前最好的零样本识别效果。比如在AwA2数据库上,我们比第二名提升了6.4%。

image.png

我们也对所提出的生成流方法进行了一系列对比实验/性能分析(Ablation Study),如下表所示。具体而言,我们对所提出框架中的一些关键因素通过控制变量方法,从而得出每个部件在整体模型中的作用。我们首先尝试将生成流模型替换为条件VAE模型,可以看出,识别率大幅下降,某些指标下降幅甚至达到50%,这也从侧面证明了生成流模型对零样本识别任务的贡献和重要性。其次,我们还尝试移除我们提出的两个损失函数,可以看到,整个模型的效果大打折扣。通过指标下降幅度,我们也可以看出在这两个损失中,iMMD损失对整体识别效果更具有决定性作用。


image.png


此外,我们还针对不同参数做了一些对比实验,也展示了一些可视化结果,感兴趣的读者可以点击阅读原文进一步阅读。


下载


本文论文PDF已打包好,在CVer公众号后台回复IZF,即可下载访问


下载1:动手学深度学习


在CVer公众号后台回复动手学深度学习,即可下载547页《动手学深度学习》电子书和源码。该书是面向中文读者的能运行、可讨论的深度学习教科书,它将文字、公式、图像、代码和运行结果结合在一起。本书将全面介绍深度学习从模型构造到模型训练,以及它们在计算机视觉和自然语言处理中的应用。




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200