前言
在目前一些零样本或小样本学习任务中,通常将图像映射到embedding空间,然后利用feature embedding进行后续的操作。这样就存在一个问题,任务间共享的是通用的feature embedding,那么就会存在feature embedding可能并不适用于某些任务这样的情况,就会导致不好的结果。
本文基于这一点,提出了一种task-aware feature embedding network(TAFF-Net),它的基本思想是特征的动态表示,利用一个基于元学习的参数生成器将通用图像特征转换为task-ware feature embedding(TAFEs)。
上图是对TAFE的说明,TAFE的意思其实就是,同样的图像在不同的任务中可能会有不同的embedding,TAFE与给定任务的语义是相适应的,因此在测试时能够满足新任务的需要。特征转换是通过一个task-aware元学习器实现的,它为feature embedding层生成参数,这样的话生成的embedding也是task-aware。通过使用TAFE,可以采用一个简单的二值分类器来学习一个独立于任务的线性边界,从而将正样本与负样本分隔开,并泛化到新任务中。
本文还提出了两种方法以解决遇到的挑战:
- 训练任务的数量有限。为了解决这个问题,本文利用基于元学习的embedding loss将task embedding和TAFE结合起来,由此提升了跨任务的泛化能力;
- 参数生成的复杂性。在生成参数时需要从低维task embedding中预测大量的权值,这是非常复杂的。因此,利用因式分解将权值分解为低维的特定于任务的权值,和高维的在所有任务间共享的静态权值。
方法实现
1. TAFE-Net模型
上图是TAFE-Net模型的结构,它由两个子网构成:task-aware元学习器 G G G和预测网络 F F F。 G G G以任务描述 t ∈ T t \in T t∈T(word2vec编码或图像样本)作为输入,然后为 F F F中的特征层生成权值。对于一个输入图像 x ∈ X x \in X x∈X, F F F的输出为:
y ∈ Y y \in Y y∈Y是一个二值标签,它说明输入图像 x x x是否与 t t t相兼容,也就是说判断 x x x是否属于任务 t t t。
具体来说就是,采用一个在ImageNet上经过预训练的特征提取器,用它生成输入图像的通用特征,然后将这些通用特征送入一系列动态特征层(dynamic featur layer)中(动态特征层的参数 θ t \theta_t θt是由 G ( t ) G(t) G(t)生成的),那么动态特征层的输入就是TAFE(task-aware feature embedding),也就是说同样一个图像,它的feature embedding在不同的 t t t中可能是是不同的。可以看到,虽然没有直接将 t t t作为 F F F的输入,但 t t t却控制着 F F F中特征层的参数,从而进一步将任务信息与图像的feature embedding结合起来。
在 F F F中有一个二值分类器,它以TAFE作为输入,进而学习一个独立于任务的决策边界。当需要多个类的预测值时,就可以利用 F ( x ) F(x) F(x)在不同 t t t上的预测值作为概率分数。
G G G由 η \eta η进行参数化,它包括一个embedding网络 T ( t ) T(t) T(t)和一系列权值生成器 g i g_i gi。 T ( t ) T(t) T(t)是为了生成task embedding e t e_t et