小样本学习&元学习经典论文整理||持续更新
核心思想
本文提出一种基于变分自动编码器的广义零样本学习算法,通过结合图像特征信息和描述特征信息来构建包含重要的多模型信息的潜在特征,并借此实现对于未见过的(unseen)样本的分类。要想理解本文必须要先了解两个基础概念:广义零样本学习(Generalized zero-shot learning,GZSL)和变分自动编码器(Variational Autoencoders,VAE)。
零样本学习是指训练集和测试集之间不存在相同类别的样本,但训练集上不仅有带有标签的图片特征,还有该类别对应的描述信息。在训练集上得到的模型要在完全没看见过的测试集上进行验证,且判断模型好坏的标准只考虑在未见过的样本上的分类准确率。而广义零样本学习是零样本学习的一个更为实际的变种,在训练过程中二者获取的信息是相同的,但在评价模型好坏时考虑在看见过的样本和没见过的样本分类准确率的调和平均数。对于广义零样本学习,其训练集
S
S
S包含三部分内容:图像特征
x
∈
X
x\in X
x∈X(通常由CNN提取得到),类别标签
y
∈
Y
S
y\in Y^S
y∈YS,类别嵌入式描述
c
(
y
)
∈
C
c(y)\in C
c(y)∈C(通常由人工标记或者由词向量模型得到),此外还有辅助训练集
U
U
U,其只包含两部分内容:类别标签
u
∈
Y
U
u\in Y^U
u∈YU和类别嵌入式描述
c
(
u
)
∈
C
c(u)\in C
c(u)∈C,其中
Y
S
Y^S
YS和
Y
U
Y^U
YU分别表示看见过的和未见过的样本类别集合,二者之间没有相同的类别(即不存在交集),而广义零样本学习的目标就是构建
X
→
Y
S
∪
Y
U
X\rightarrow Y^S\cup Y^U
X→YS∪YU的映射。
变分自动编码器属于一种生成式的模型,他的前身是自动编码器AE,AE是由编码器和解码器两部分构成的,对于高维输入
x
x
x首先编码得到低维的
z
z
z然后在解码恢复得到
x
x
x,但这一过程只能简单的记住数据,而不能主动的生成数据(当模型参数固定后,给一个输入,会得到特定的输出)。因此在此基础上提出了VAE,引入了中间变量
z
z
z的先验分布
p
(
z
)
p(z)
p(z),这就使得中间变量
z
z
z由确定性的变成了随机性的。VAE的过程如图所示
其中
q
ϕ
(
z
∣
x
)
q_{\phi}(z|x)
qϕ(z∣x)描述了由
x
x
x到
z
z
z的编码过程,
p
θ
(
x
∣
z
)
p_{\theta}(x|z)
pθ(x∣z)描述了由
z
z
z到
x
x
x的解码过程,
p
θ
(
z
)
p_{\theta}(z)
pθ(z)则表示中间变量(隐藏变量,latent variables)
z
z
z的先验分布。VAE的优化目标如下
式中第一项表示了重构过程的对数似然,可以理解为希望由
x
x
x到
z
z
z再到
x
x
x的过程中,重构损失尽可能小,第二项则表示了
q
ϕ
(
z
∣
x
)
q_{\phi}(z|x)
qϕ(z∣x)与
p
θ
(
z
)
p_{\theta}(z)
pθ(z)之间的KL散度,希望两者之间的差别尽可能小。对于VAE详细介绍可以参考以下两个链接:
https://zhuanlan.zhihu.com/p/57574493
https://blog.csdn.net/matrix_space/article/details/83683811
在了解了上述两个关键词之后,我们看一下作者到底想要做什么。众所周知,我们在做图像分类时,通常是将图片映射到特征空间里,然后在特征空间上构建分类器实现图像分类。而作者是希望借助VAE将图像特征和类别描述映射到隐藏空间(latent space)中,在隐藏空间上构建分类器。不仅如此,作者还希望联合图像特征和类别表述两部分信息共同实现分类任务,而不是独立使用其中一个。于是作者提出了以下模型CADA-VAE
由上图可知,输入信息包含两个部分:图像特征
x
x
x和类别描述
c
c
c(当然二者表达的是同一个类别的样本),二者分别对应两个VAE模型,其中隐藏变量
z
z
z的分布
p
θ
(
z
)
p_{\theta}(z)
pθ(z)通常取高斯分布,由
μ
\mu
μ和
Σ
\Sigma
Σ两个参数来描述。为了充分结合两种形态(modality)输入的信息,作者提出了Cross-Alignment (CA) Loss 和 Distribution-Alignment (DA) Loss两种损失函数,来强化两个VAE之间的联系。
L
D
A
L_{DA}
LDA就是约束两个隐藏变量分布之间的距离要尽可能小,
L
C
A
L_{CA}
LCA就是要求每个VAE不仅对自身输入的重构损失
∥
x
−
x
′
(
z
1
)
∥
\left \| x-x'(z_1)\right \|
∥x−x′(z1)∥要小,而且对于其他形式输入的重构损失
∥
x
−
x
′
(
z
2
)
∥
\left \| x-x'(z_2)\right \|
∥x−x′(z2)∥也要小。最后基于低维的隐藏变量构建分类器,实现零样本分类任务。
实现过程
网络结构
所有的编码器和解码器都是由包含一个隐藏层的多层感知机构成,对于图片特征的VAE,其编码器的隐藏层共有1560个单元,解码器的隐藏层包含1660个单元;对于类别描述的VAE,其编码器的隐藏层共有1450个单元,解码器的隐藏层包含660个单元;隐藏变量的维度为64。
损失函数
损失函数包含三个部分VAE损失,DA损失和CA损失
其中VAE损失为
式中
M
M
M表示不同形态的输入(图像特征或者类别描述)。根据我的理解,该损失函数应该增加一个负号,以表示该值越小越好,而上式描述的是最大化优化目标。
DA损失为
这里采用了Wasserstein distance来描述两个分布之间的差异
CA损失为
D
j
D_j
Dj表示第
j
j
j个解码器,
E
i
E_i
Ei表示第
i
i
i个编码器。
创新点
- 采用变分自动编码器结构,将图像特征和类别描述信息映射到隐藏空间内,并在此基础上训练分类器,实现广义零样本学习任务
- 设计了DA损失和CA损失,引导VAE充分结合两种形式输入所包含的信息,寻找到二者之间的内在联系
算法评价
初读此文时我一头雾水,里面牵扯到很多新的概念和表达,但如果理解了广义零样本学习和变分自动编码器两个概念之后,理解本文也就变得容易了。其实就是利用编码器将输入信息映射到一个隐藏变量上,该变量要能充分的描述输入信息的本质特征(通过CA损失来约束),还要能够充分结合两种不同形式输入的共同特征(通过DA损失来约束),这样就提高了向量的表征能力,在此基础上训练的分类器也就具备更强大的分类能力了。本文提出的DA损失和CA损失也可以推广应用到其他的多模型问题中。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。