本论文由Changzhi Luo,2018年发表于IEEE。zero-shot learning问题即是,在训练集中存在seen类和unseen类,在测试时,我们要区分出unseen类,并给出标签。seen类代表那些在训练集中有类原型,也有样本的类。unseen类指那些,只有类原型,或者说,只有语义描述,但是没有真实样本的类。
论文创新点:
- 提出了一种类原型修正方法,将seen类和unseen类连接了起来,解决了投影域偏移的问题。
- 提出了一种交替学习策略,即交替执行属性回归模型训练和类原型修正模型训练
- 提出了一种新的目标函数,兼顾了属性回归模型精度和类原型差别
引子
现有的zero-shot learning (ZSL)问题都是利用中间级信息(如属性等),将信息从seen类传到unseen类。比如,从seen类中训练得到seen类样本和其标签之间的映射关系,再将这样的映射关系应用到unseen类。但是这样的方法,不可避免会造成两个问题:投影域偏移和hubness问题。根源在于,训练模型的时候,只使用了seen类,而忽视了unseen类。因此,本文也沿用了将ZSL问题视为属性回归问题,不过,在学习回归模型是,考虑所有类的数据分布,包括unseen类,从而对类原型进行修正,用修正过的数据重新训练模型。如此迭代往复,实验证明,这种方法可以缓解甚至解决投影域偏移和hubness问题。
投影域偏移问题:由seen类训练得到的投影模型和unseen类训练得到的投影模型不兼容。
hubness问题:有的样本会出现在其他类样本的最近邻列表里面,会导致精度下降。
类原型修正
类原型是一个类的向量表示方法,也被称之为类中心或者类范例。seen类存在样本,有其类原型。unseen类没有样本,但是也有其对应的类原型。如上图所示,蓝色的代表一个样本,红色的代表类原型。相同形状的代表属于同一类。可以看到圆形,正方形,三角形,菱形有样本,也有对应的类原型,就是seen类。因为训练集中有其对应的样本。反之,剩下三个多边形只有类原型,没有样本,就为unseen类,训练集中没有其对应的样本。
之前的方法为只利用了seen类训练模型,在测试时,用的unseen类。换言之,测试标签和训练标签是互斥的,就算seen类和unseen类再相似,也会产生投影域偏移的问题。因此,我们必须引入一些额外的信息,称之为,side information,也被称为类的中级语义信息。即,我们可以通过一些映射,将类原型映射到语义空间去(就是通过一些函数,把样本变个样子,seen类和unseen类都有类原型,所以都可以映射)。这样的目的是,使得两个不同的类距离远一些,这样来了一个测试样本,我们按照同样的映射方式,将这个样本映射到语义空间。它离哪个类原型近,就是哪个类。但是用最邻近很容易产生hubness问题。因此,作者提出了类原型修正的方法,用在训练回归模型时,不断修正类(包括unseen类)原型。为了解决域偏移的问题,将unseen类和seen类一起训练模型。这样,用不断修正的所有类的类原型训练回归模型,既解决了投影域偏移的问题,也解决了hubness问题。
由于seen类有自己的样本,因此,可以用它的样本来修正类原型:
s
^
p
=
μ
1
s
p
+
α
1
n
∑
i
=
1
n
s
p
(
i
)
\hat s_p= \mu_1s_p + \alpha \frac{1}{n} \sum_{i=1}^ns_p^{(i)}
s^p=μ1sp+αn1i=1∑nsp(i)
μ
\mu
μ类似于冲量,防止震荡或发散;
α
\alpha
α是权重参数,权衡人类标注类原型和语义表达均值。
对于unseen类,因为没有样本,所以不能用样本的语义表达均值修正类原型。本文采用了unseen类周围的seen类原型的关系,来修正unseen类原型。
s
^
p
=
μ
2
s
p
+
β
1
k
∑
s
j
∈
N
k
(
s
q
)
g
(
s
q
,
s
j
)
s
j
\hat s_p= \mu_2s_p + \beta \frac{1}{k} \sum_{s_j\in N_k(s_q)}g(s_q,s_j)s_j
s^p=μ2sp+βk1sj∈Nk(sq)∑g(sq,sj)sj
其中,
β
\beta
β类似于
α
\alpha
α;
μ
2
\mu_2
μ2类似于
μ
1
\mu_1
μ1;
g
(
A
,
B
)
=
A
∗
B
∣
∣
A
∣
∣
∣
∣
B
∣
∣
g(A,B)=\frac{A*B}{||A||||B||}
g(A,B)=∣∣A∣∣∣∣B∣∣A∗B;
N
k
(
s
k
)
N_k(s_k)
Nk(sk)代表
s
q
s_q
sq周围的k个邻近类