动机
基于GAN的ZSL方法,通过生成样本的方式,将ZSL问题转换成全监督问题。
本文的动机是利用(域)不变的信息的GAN来生成特征,而不是样本。
生成特征比生成样本好在哪里?
- 提出了一个conditional Wasserstein GAN, 输入是噪声和语义描述
- 定义了soul samples来作为 generative ZSL不变方面。【soul sample是类别的元表示】
- 提出串联的两个分类器,得到由粗到细的结果
generative ZSL不变的方面是每个类的soul sample,变的方面是每一个生成的样本。具体来说,已见类,每个生成样本是2048维的Resnet特征,而soul sample是已见类样本所有特征的均值。
GAN-based 方法的主要问题:
- diversity 多样性:怎么保证有限(一个)或者相似的属性条件下的生成多样性?
- reliability 可靠性(discrimination判别性):怎么确保每个生成样本和真实样本及其语义描述高度相关?
方案
- 利用WGAN生成未见类特征,输入是随机噪声和语义描述
- 多个soul samples用来对生成器进行调整
- 利用信心分数的未见类样本微调最后的结果
问题定义
ZSL:
f
:
X
u
→
Y
u
f: \mathcal{X_u \to Y_u}
f:Xu→Yu
GZSL:
f
:
{
X
,
X
u
}
→
Y
∪
Y
u
f: \mathcal{\{X, X_u\} \to Y \cup Y_u}
f:{X,Xu}→Y∪Yu
整体的想法
- 部署CWGAN是为了让类别嵌入(属性,语义描述)能够并入生成器G和判别器D
- 因为 { A , Y } \{A, Y\} {A,Y} 和 { A u , Y u } \{A_u, Y_u\} {Au,Yu}是有联系的,即 A A A和 A u A_u Au有共同的语义空间,条件GAN如果能够为可见类生成高质量的样本,也可以期待它为未见类生成高质量的样本。
两个创新点
- 使用soul samples来调整生成器
- 利用高信心分数的未见类样本来微调后面的未见类样本
soul sample的好处
soul sample缓解了域漂移问题(关于不同视角)
训练
G的loss:
L
G
=
−
E
[
D
(
G
(
z
,
a
)
)
]
−
λ
E
[
log
P
(
y
∣
G
(
z
,
a
)
)
]
,
(1)
L_G = -\mathbb E[D(G(z, a))] - \lambda \mathbb E[\log P(y|G(z, a))], \tag{1}
LG=−E[D(G(z,a))]−λE[logP(y∣G(z,a))],(1)
其中,随机噪声
z
∼
N
(
0
,
1
)
z \sim \mathcal N(0, 1)
z∼N(0,1),语义描述
a
a
a。第一项是Wasserstein损失,第二项是监督分类损失。
D的loss:
L
D
=
E
[
D
(
G
(
z
,
a
)
)
]
−
E
[
D
(
x
)
]
−
λ
(
E
[
log
P
(
y
∣
G
(
z
,
a
)
)
]
)
+
E
[
log
P
(
y
∣
x
)
]
−
β
E
[
(
∣
∣
∇
x
^
D
(
x
^
)
∣
∣
2
−
1
)
2
]
(2)
L_D = \mathbb E[D(G(z, a))] - E[D(x)] \\ -\lambda(\mathbb E[\log P(y|G(z, a))])+\mathbb E[\log P(y|x)] \\ -\beta \mathbb E[(||\nabla_{\hat x} D(\hat x)||_2 -1)^2] \tag{2}
LD=E[D(G(z,a))]−E[D(x)]−λ(E[logP(y∣G(z,a))])+E[logP(y∣x)]−βE[(∣∣∇x^D(x^)∣∣2−1)2](2)
最后一项是强制的Lipschitz约束, x ^ = μ x + ( 1 − μ ) G ( z , a ) \hat x = \mu x + (1-\mu)G(z, a) x^=μx+(1−μ)G(z,a), μ ∼ U ( 0 , 1 ) \mu \sim U(0, 1) μ∼U(0,1)。
k个soul sample
c类所有样本的均值就是c类的soul sample
每个类别c应该有多个soul sample来解决多视角问题。
作者提出,将所有特征聚成k个簇。为了简便,论文中k=3。
每个类训练样本的soul sample的定义:
s
k
c
=
1
∣
X
k
c
∣
∑
x
i
∈
X
k
c
x
i
(3)
s_k^c = \frac {1} {|X_k^c|} \sum_{x_i \in X_k^c} x_i \tag{3}
skc=∣Xkc∣1xi∈Xkc∑xi(3)
每个类生成样本的soul sample的定义:
s
~
k
c
=
1
∣
X
~
k
c
∣
∑
x
~
i
∈
X
~
k
c
x
~
i
(3)
\tilde s_k^c = \frac {1} {|\tilde X_k^c|} \sum_{\tilde x_i \in \tilde X_k^c} \tilde x_i \tag{3}
s~kc=∣X~kc∣1x~i∈X~kc∑x~i(3)
其中,
x
~
i
=
G
(
z
,
a
)
\tilde x_i=G(z, a)
x~i=G(z,a)是生成特征。
两个正则项
每个生成的样本至少要靠近某一个soul sample。
L
R
1
=
1
n
1
∑
i
=
1
n
1
min
j
∈
[
1
,
k
]
∣
∣
x
~
i
−
s
j
c
∣
∣
2
2
(5)
L_{R1} = \frac{1}{n_1} \sum_{i=1}^{n_1} \min_{j \in [1, k]} ||\tilde x_i - s_j^c||_2^2 \tag{5}
LR1=n11i=1∑n1j∈[1,k]min∣∣x~i−sjc∣∣22(5)
每个生成的soul sample必须靠近至少一个真实的soul sample。
L
R
2
=
1
C
∑
c
=
1
C
min
j
∈
[
1
,
k
]
∣
∣
s
~
j
c
−
s
j
c
∣
∣
2
2
(6)
L_{R2} = \frac{1}{C} \sum_{c=1}^{C} \min_{j \in [1, k]} ||\tilde s_j^c - s_j^c||_2^2 \tag{6}
LR2=C1c=1∑Cj∈[1,k]min∣∣s~jc−sjc∣∣22(6)
3.4 预测未见类
论文训练一个softmax分类器,对生成样本进行分类。
min θ − 1 ∣ X ∣ ∑ ( x , y ) ∈ ( X , Y ) log P ( y ∣ x ; θ ) (7) \min_{\theta} - \frac{1}{|\mathcal X|} \sum_{(x, y) \in (\mathcal{X, Y})} \log P(y|x; \theta) \tag{7} θmin−∣X∣1(x,y)∈(X,Y)∑logP(y∣x;θ)(7)
log P ( y ∣ x ; θ ) = exp ( θ y T x ) ∑ i = 1 N exp ( θ i T x ) (8) \log P(y|x; \theta) = \frac{\exp(\theta_y^T x)}{\sum_{i=1}^{N} \exp(\theta_i^Tx)} \tag{8} logP(y∣x;θ)=∑i=1Nexp(θiTx)exp(θyTx)(8)
向量的熵可以用来测量结果的确定性。如果一个概率向量比较低的熵,我们对结果更有信心。
所以,我们利用分类熵比较低的样本,部署它们作为参考来对其他的未见类样本进行分类。
样本熵
E ( y ) = − ∑ c = 1 C y c log y c (9) E(y) = - \sum_{c=1}^{C} y_c \log {y_c} \tag{9} E(y)=−c=1∑Cyclogyc(9)
本文的模型包含两个分类器。第一个分类器用来评估分类信心,第二个分类器用来利用正确分类的样本。本文的零样本识别中,第一个分类器是一个生成假样本上训练的softmax,第二个分类器可以是一个训练的分类器,比如softmax分类器,SVM,或者就是一个不用训练的最近邻分类器。
实验
4.2 实现细节和对比方法
判别器有两个输出。一个用来区分特征真假,一个是标准的N-类分类器,用来预测每个样本的正确类别。
λ
=
0.01
\lambda = 0.01
λ=0.01
β
=
10
\beta = 10
β=10
样本熵阈值设置为小于所有熵的均值。
零样本分类结果
广义零样本结果
4.5 模型分析
每类精度
分析:本方法在类别“tvmonitor”、“donkey”、“jetski”上的精度比f-CLSWGAN提升了10%。在某些未见类别上性能也很差。
精度好,说明和未见类的关联度比较大。而且,现有方法对未见类的拟合比另一个模型好。1. 分析,性能好的未见类对应了哪些已知类,探索如何构建这种已知类知识向未见类的传播,如种子生长的办法。2. 分析,性能不好的都是哪些类,是否存在细粒度的问题,解决细粒度现象。
消融实验和k的影响
实验证明了,k值对实验影响不大。
总结
作者提到了未来方向:用GAN来做语义描述的增强。