在做我自己的简陋的发展历程总结之前,先给想要入门零次学习的同学们推荐一个网友写的零次学习入门介绍,他写的非常通俗易懂,也比较接的上潮流,是一个非常好的学习资料,而我现在的发展历程的构建也主要基于他推荐的几篇标志性的文章。
另:后文频繁出现属性空间以及特征空间两个术语,为防止被绕晕,最好先充分理解这两个属于代表的是什么:属性空间,属性(Attribute)是指为了实现零次学习,我们需要为每个类别分配一定的属性作为额外信息,如有尾巴、有条纹、黄色或者学习到的词向量等,而将每个类别的每个属性排列起来就能得到一个高维的向量,这些向量展成的空间就是属性空间;特征空间,特征(Feature)是指输入图像经过网络处理之后得到的数据,而FC层所输出的就是每个输入对应的特征向量,这些向量展成的空间就是特征空间。
-
万物(误)起源:零次学习最初的提出文章,此时问题的解决方法还没有特别的清晰,文章提出了DAP和IAP两种方法也可以看做后来的语义嵌入方法(SE)和语义相关方法(SR)的方法的原型,而在09年能够提出并且给出自己的解决方法真的是一件很了不起的工作了。 -
三空间模型:非常早期但同时非常基础的文章,文章中提出的方法虽然“Embarrassingly Simple”,但基本上明确了ZSL的基本解决思路–三空间模型,即特征空间、属性空间和类别空间之间的映射。
-
引入空间嵌入思想:文章从单纯的三个空间中做映射进一步引入了嵌入(Embedding)的思想,将属性空间(文中的语义代表空间)嵌入到一个处理过的特征空间(文中的语义嵌入空间)中去,并在这个空间中进行相关分类。基本上引出了语义嵌入方法。
- 随后在语义嵌入方法中发展出了很多的针对性的方法:
- 引入自编码器:为解决作用域位移问题提出。文章第一次引入了自编码器作为一个限制条件,即编码器得到的信息必须能够重建会原输入,而这里实际上是用编码器或解码器来做一个嵌入,所以需要限制输入为特征空间向量,输出为属性空间向量来进行训练
(???Pardon那你这个限制条件是怎么加上去的啊emmmm)。 - 引入VAE:相当于用VAE模型对3中的模型进行改进。首先本文将嵌入的方向进行了反转,不再是属性空间向处理过的特征空间嵌入,而是特征空间向处理过的属性空间嵌入
(相当于原来是根据属性先生成一个prototype,然后其他图像和它比较,而现在是根据图像判断他的属性,然后与每个类别应有的属性相比较);其次基于VAE的思想优化了属性空间的处理方法和特征空间的嵌入方法。 - DMaP:为了解决特征空间和属性空间流型结构不同的问题而提出的。基本思路是先建立一个嵌入映射;然后通过这个映射的信息和一定的数学公式优化属性空间的流型结构,得到新的属性空间以及两个映射关系,新旧属性空间的映射关系、特征空间和属性空间之间的映射关系;如此递推直到属性空间的流型结构达到要求。
- 引入自编码器:为解决作用域位移问题提出。文章第一次引入了自编码器作为一个限制条件,即编码器得到的信息必须能够重建会原输入,而这里实际上是用编码器或解码器来做一个嵌入,所以需要限制输入为特征空间向量,输出为属性空间向量来进行训练
- 继续开发属性所含的信息:本文通过更进一步的利用属性中能给出的信息在优化网络,这也是一个独特的思考方向。本文提出利用的是属性中所含的语义关系这一信息,通过定义相似度测度,使对每一个类别来说,其他的类别分为三类:相同、相似和不相似
(而类别的相似与否是通过属性向量来判定的,所以确实是利用了属性所提供的信息哦)。最后通过定义了新的目标函数来保证在做嵌入的时候,能够保持这一语义关系,从而使嵌入过程更合理。
最后我这里列出的是根据论文写的一个简略的按照时间顺序的发展历程,想更系统更全面的了解ZSL及发展现状的话还是推荐大家去看综述丫丫丫。下面两篇是最近非常好的综述,供大家参阅: