0%

LisGAN

论文阅读:Leveraging the Invariant Side of Generative Zero-Shot Learning

动机

1570607788988

基于GAN的ZSL方法,通过生成样本的方式,将ZSL问题转换成全监督问题

本文的动机是利用(域)边的信息的GAN来生成特征,而不是生成样本。

生成特征比生成样本好在那里?

  • 提出了一个conditional Wasserstein GAN,输入是噪声和语义描述

  • 定义了soul sample来作为generative ZSL不变方面【soul sample是类别的元表示】

  • 提出串联的两个分类器,得到由粗到细的结果

generative ZSL不变的方面是每个类的soul sample,变的方面是每一个生成的样本,具体来说,seen类,每个生成样本是2048维的Resnet特征,而soul sample是seen类所有特征的均值

GAN-based方法的主要问题:

  • diversity多样性:怎么保证有限(一个)或者详细的属性条件下的生成多样性
  • reliability可靠性(discrimination判别性):怎么确保每个生成样本和真实样本及其语义描述高度相关?

方案

1570608194811

  • 利用WGAN生成未见类特征,输入是随机噪声和语义描述
  • 多个soul samples用来对生成器进行调整
  • 利用信心分数的未见类样本微调最后的结果

问题定义

ZSL:f:XuYuf: \mathcal {X}_{u} \rightarrow \mathcal {Y}_{u}

GZSL: f:{X,Xu}YYuf:\{ \mathcal {X}, \mathcal {X}_{u} \} \rightarrow \mathcal {Y} \cup {\mathcal {Y}_{u}}

整体的想法

  • 部署CWGAN是为了让类别嵌入(属性,语义描述)能够并入生成器G和判别器D
  • 因为{A,Y}\{A, Y\}{Au,Yu}\{A_u, Y_u\} 是有联系的,即 AAAuA_u 有共同的语义空间,条件GAN如果能够为类生成高质量的样本,也可以期待它为unseen类生成高质量的样本

两个创新点

  • 利用soul sample来调整生成器
  • 利用高信心分数的unseen类样本来微调后面的unseen类样本

soul sample的好处

soul sample缓解了域漂移问题

训练

G的loss:

LG=E[D(G(z,a))]λE[logP(yG(z,a))]L_{G}=-\mathbb{E}[D(G(z, a))]-\lambda \mathbb{E}[\log P(y | G(z, a))]

其中,随机噪声zN(0,1){\mathrm{z}} \sim \mathcal{N}(0,1),语义描述a。第一项是Wasserstein损失,第二项是监督分类损失。

D的loss:

LD=E[D(G(z,a))]E[D(x)]λ(E[logP(yG(z,a))])+E[logP(yx)]βE[(x^D(x^)21)2]\begin{array}{c}{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}\left[\left(\left\|\nabla_{\hat{x}} D(\hat{x})\right\|_{2}-1\right)^{2}\right]}\end{array}

最后一项是强制的Lipschitz约束,x^=μx+(1μ)G(z,a),μU(0,1)\hat{x}=\mu x+(1-\mu) G(z, a), \mu \sim U(0,1)

k个soul sample

c类所有样本的均值就是c类的soul sample

每个类别c应该有多个soul sample来解决多视角问题

作者提出,将所有特征聚类成k个簇。为了简便,论文中k=3

每个类训练样本的soul sample的定义:

skc=1XkcxiXkcxis_{k}^{c}=\frac{1}{\left|X_{k}^{c}\right|} \sum_{x_{i} \in X_{k}^{c}} x_{i}

每个类生成样本的soul sample的定义:

s~kc=1X~kcx~iX~kcx~i\widetilde{s}_{k}^{c}=\frac{1}{\left|\tilde{X}_{k}^{c}\right|} \sum_{\tilde{x}_{i} \in \tilde{X}_{k}^{c}} \tilde{x}_{i}

其中,x~i=G(z,a)\tilde{x}_{i}=G(z, a)是生成特征。

两个正则项

每个生成样本至少要靠近某一个soul sample

LR1=1n1i=1n1minj[1,k]x~isjc22L_{R 1}=\frac{1}{n_{1}} \sum_{i=1}^{n_{1}} \min _{j \in[1, k]}\left\|\tilde{x}_{i}-s_{j}^{c}\right\|_{2}^{2}

每个生成的soul sample必须靠近至少一个真实的soul sample

LR2=1Cc=1Cminj[1,k]s~jcsjc22L_{R 2}=\frac{1}{C} \sum_{c=1}^{C} \min _{j \in[1, k]}\left\|\tilde{s}_{j}^{c}-s_{j}^{c}\right\|_{2}^{2}

预测unseen类

论文训练一个softmax分类器,对生成样本进行分类

minθ1X(x,y)(X,Y)logP(yx;θ)logP(yx;θ)=exp(θyTx)i=1Nexp(θiTx)\begin{array}{l}{\min _{\theta}-\frac{1}{|\mathcal{X}|} \sum_{(x, y) \in(\mathcal{X}, \mathcal{Y})} \log P(y | x ; \theta)} \\ {\log P(y | x ; \theta)=\frac{\exp \left(\theta_{y}^{T} x\right)}{\sum_{i=1}^{N} \exp \left(\theta_{i}^{T} x\right)}}\end{array}

向量的熵可以用来测量结果的确定性。如果一个概率向量比较低的熵,我们对结果更有信心。

所以我们利用分类熵较低的样本,部署他们作为参考来对其他的未见类样本进行分类。

样本熵

E(y)=c=1CyclogycE(y)=-\sum_{c=1}^{C} y_{c} \log y_{c}

本文的模型包含两个分类器。第一个分类器用来评估分类信心,第二个分类器用来利用正确分类的样本。本文的领样本是杯中,第一个分类器是一个生成假样本上训练的softmax,第二个分类器可以是一个训练的分类器,比如softmax分类器,SVM,或者就是一个不用训练的最近邻分类器。