近来零样本学习文章大多基于生成模型,这篇文章也是在 GAN 的基础上更进一步来提高性能的。本文基于 VAE-GAN,作者说其他人用带 decoder 的模型,在训练之外就把 decoder 丢掉了,这很不好,因此作者倡议在训练、特征生成和分类都使用语义嵌入解码器 semantic embedding decoder (SED)。另外,使用的 feedback loop。创新点有两个,归纳起来就是
- 提出 semantic embedding decoder (SED),并设计 feedback module (for GZSL) 来在训练阶段、特征生成阶段使用 SED ,并依此调整生成器的潜在特征 表示。这是首次提出 feedback module 在 ZSL 任务中,反馈机制思路来源于 [1];
- 在分类阶段提出 discriminative feature transformation,同时使用 SED 的潜特征和对应的视觉特征类来减少对象类别之间的歧义性;
- 在几个数据集上进步明显,同时在 视频的zero-shot action recognition 进行了实验,效果也很显著。
创新之处就是 添加 SED 将视觉特征转化为语义嵌入并构建循环一致性损失,使用反馈机制指导特征生成,使用特征变换来指导分类。
[1] Firas Shama, Roey Mechrez, Alon Shoshan, and Lihi Zelnik-Manor. Adversarial feedback loop. In ICCV, 2019
1. Preliminaries: f-VAEGAN
即引用 f-VAEGAN-D2,该方法结合 VAE 和 GAN,该方法的 VAE 的 decoder 作为 GAN 的 generator。如下图所示,f-VAE 包含一个 encoder,将视觉特征映射到潜特征 z z z,也包含一个 decoder (同时作为 f-WGAN 的条件生成器)将 z z z 重建成 x x x。 E E E 和 G G G 都受到 a a a 的约束(属性特征),优化下列公式
L
V
=
K
L
(
E
(
x
,
a
)
∥
p
(
z
∣
a
)
)
−
E
E
(
x
,
a
)
[
log
G
(
z
,
a
)
]
(1)
\mathcal{L}_{V}=\mathrm{KL}(E(x, a) \| p(z \mid a))-\mathbb{E}_{E(x, a)}[\log G(z, a)] \tag 1
LV=KL(E(x,a)∥p(z∣a))−EE(x,a)[logG(z,a)](1)
p
(
z
∣
a
)
p(z|a)
p(z∣a) 是先验分布,为
N
(
0
,
1
)
N(0,1)
N(0,1) ,
l
o
g
G
(
z
,
a
)
logG(z,a)
logG(z,a) 是重建损失。后面的 f-WGAN 的 loss 如下
L
W
=
E
[
D
(
x
,
a
)
]
−
E
[
D
(
x
^
,
a
)
]
−
λ
E
[
(
∥
∇
D
(
x
~
,
a
)
∥
2
−
1
)
2
]
(2)
\mathcal{L}_{W}=\mathbb{E}[D(x, a)]-\mathbb{E}[D(\hat{x}, a)]-\lambda \mathbb{E}\left[\left(\|\nabla D(\tilde{x}, a)\|_{2}-1\right)^{2}\right] \tag 2
LW=E[D(x,a)]−E[D(x^,a)]−λE[(∥∇D(x~,a)∥2−1)2](2)
其中
x
^
=
G
(
z
,
a
)
\hat x = G(z,a)
x^=G(z,a) 是生成特征,
x
~
\tilde{x}
x~ 是从
x
x
x 和
x
^
\hat x
x^ 的连线上随机采样的。则 f-VAEGAN 优化方法如下:
L
v
a
e
g
a
n
=
L
V
+
α
L
W
(3)
\mathcal{L_{vaegan}} = \mathcal{L}_V + \alpha \mathcal{L}_W \tag 3
Lvaegan=LV+αLW(3)
f-VAEGAN 由于有公式 1 的第二项,能够在训练时对生成的特征进行循环一致性约束,然而却没有在 semantic embeddings 添加循环一致性约束。其他方法如GDAN 添加了循环一致性约束,然而只在训练阶段使用,在特征生成和分类阶段都抛弃了。
而本文引入 semantic embedding decoder (SED) 来在 semantic embeddings 上对所有阶段强制使用循环一致性约束。生成器模块将语义嵌入转换为特征实例,而 SED 将特征实例转化为语义嵌入,生成器和 SED 构成了互补。如下图,Dec 即表示 SED,用于重建嵌入
a
^
\hat a
a^,通过循环一致性损失
L
R
\mathcal{L}_R
LR 约束,同时通过反馈模型
F
F
F 将 Dec 的浅层特征反馈到
G
G
G 的浅层特征来实现改进的特征合成。
2. Semantic Embedding Decoder
语义嵌入的循环一致性损失 cycle-consistency 同通过 L1 重建损失来表示,即
L
R
=
E
[
∥
Dec
(
x
)
−
a
∥
1
]
+
E
[
∥
Dec
(
x
^
)
−
a
∥
1
]
\mathcal{L}_{R}=\mathbb{E}\left[\|\operatorname{Dec}(x)-a\|_{1}\right] +\mathbb{E}\left[\|\operatorname{Dec}(\hat{x})-a\|_{1}\right]
LR=E[∥Dec(x)−a∥1]+E[∥Dec(x^)−a∥1]
因此训练 TF-VAEGAN 的 loss 变为
L
t
o
t
a
l
=
L
v
a
e
g
a
n
+
β
L
R
\mathcal{L}_{total} = \mathcal{L}_vaegan + \beta \mathcal{L}_R
Ltotal=Lvaegan+βLR。
**Discriminative feature transformation ** 作者建议在分类阶段使用 SED 的潜在特征作为有用的信息源,来减少不同类别特征实例之间的歧义性,如下图 a 所示,将视觉特征和 DEC 重建的潜特征 h h h 拼接再输入分类网络进行分类。
3. Feedback Module
f-VAEGAN 没有在属性空间中使用一致性损失,导致真实的视觉特征和生成的视觉特征存在一定的语义gap,因此作者引入了 feedback loop 来迭代的优化特征生成(训练阶段和特征生成阶段),如下图所示。feedback module
F
F
F 如上图 b 所示,
g
l
g^l
gl 是
G
G
G 的第
l
l
l 层输出,
x
^
f
\hat x^f
x^f 是反馈部分,优化如下
g
l
←
g
l
+
δ
x
^
f
g^{l} \leftarrow g^{l}+\delta \hat{x}^{f}
gl←gl+δx^f
其中
x
^
f
=
F
(
h
)
\hat x ^f = F(h)
x^f=F(h),
h
h
h 是 Dec 的潜层,
δ
\delta
δ 控制着反馈机制。注意,文章 [1] 中使用鉴别器 D 的潜层作为反馈输入,而在 ZSL 中由于 unseen class 不可见,unseen class 特征生成和鉴别将不足以提供可靠的反馈,因此不适用 D 的潜层,而使用 Dec 的。
Training strategy 原始的反馈机制是 两阶段 的,先训练 G 和 D,然后训练 F。而本文使用交替训练策略,即交替训练 G 和 F。G 的训练策略不变,F 的训练过程中使用两个子迭代,如上图 b 所示。
注意在 transductive setting 中,同 f-VAEGAN-D2 一样,使用一个额外的 unconditioanl discriminator D2。
Experiments
下图为 inductive 和 transductive 的 ZSL 和 GZSL 的实验结果,注意到这里的原始特征使用的使用 ImageNet 预训练的 resnet101 提取的,特征提取网络的参数是固定的。
特征提取网络的参数不是固定的,经过了 fine-tuned,可以看到效果明显增加。
、
下面为一些消融实验。