1. 出处
2018 CVPR workshop
2. 问题
已有的zero-shot learning方法尝试通过一些迁移函数建模类属性空间和图像空间之间的关系,以便将图像空间对应到unseen class
3. 方法
学习一个class embedding到image space的映射函数,但由于图像空间的不连续性,从seen class images上学到的映射无法捕获unseen classes的关系(domain shift问题)
作者没有直接建模迁移函数,而是将问题视为“数据丢失”(相当于训练的时候,丢失了unseen class),将class embedding vector作为条件,通过VAEs建模图像生成过程,把生成的数据填充unseen classes缺失的数据
通过cVAE,利用给定的属性生成样本,使用生成的样本对unseen classes分类
**方法的核心:**为unseen classes生成样本
4. 框架
4.1 整体结构
训练阶段:
对于ZSL来说:
-
训练CVAE
encoder将x和语义嵌入A拼接作为输入,输出高斯参数向量,然后在学到的高斯分布中随机选取z
对于每一个unseen class,decoder将z和语义嵌入A拼接作为输入,在给定隐变量z的情况下重构类别y所对应的x(pseudo traindata)
使用pseudo traindata训练SVM分类器
对于GZSL来说:
一种直观的方法是使用seen classes原始的训练数据和unseen classes生成的数据来训练SVM,但会产生bias towards the seen classes
因此,不仅为unseen classes生成pseudo data,也为seen classes生成pseudo data
测试阶段:
对真实的unseen classes的图像使用SVM分类器分类
5. 启发
-
模型存在mode dropping问题,实际的数据分布峰值有多个,然而生成的图像是单峰的,训练过程只拟合了其中一个
(通常是通过改变散度来解决)