Zero-shot Learning零样本学习 论文阅读(三)——Semantic Autoencoder for Zero-Shot Learning

Zero-shot Learning零样本学习 论文阅读(三)——Semantic Autoencoder for Zero-Shot Learning

  • 背景
    • 领域漂移(domain shift)
    • 自编码器
  • 算法原理
    • 思路
    • 设定
    • 算法原理
    • 具体流程
  • 参考文献

Semantic Autoencoder for Zero-Shot Learning提出的算法被简称为SAE,首次引入了自编码器结构,一定程度上解决了zero-shot learning中主要问题之一的领域漂移(domain shift)问题,直接导致之后的新方法大都采用了这种自编码器的结构。

背景

领域漂移(domain shift)

领域漂移问题首次被提出是在《Transductive Multi-View Zero-Shot Learning》这篇文章中,简单来说就是同一属性在不同的类别中,视觉特征的差异可能很大。比如,斑马和猪都有尾巴,那么在类别语义表示中,对于“有尾巴”这一属性,斑马和猪都是值“1”,但是在图片数据中,两者尾巴的视觉特征却差异很大,如果用猪的图片来训练,需要预测的是斑马,就很难达到预期的目标。

自编码器

自编码器(Autoencoder)是一种利用反向传播算法使得输出值等于输入值的神经网络,它先将输入压缩成潜在空间表征,然后通过这种表征来重构输出。
例如,我们输入一张图片,通过encoder将其现压缩成潜在表征(Latent Representation),再通过decoder将潜在表征重构成图片作为输出。
在这里插入图片描述
因此,自编码器由两部分组成:

  1. 编码器,将输入压缩成潜在空间表征,用函数 h = f ( x ) h=f(x) h=f(x)表示;
  2. 解码器,重构潜在空间表征得到输出,用函数 s = g ( h ) s=g(h) s=g(h)表示。

自编码器就可以用函数 g ( f ( x ) ) = s g(f(x))=s g(f(x))=s表示, x x x是输入, s s s是输出,让 x x x s s s相近。
那么,让输出和输入的东西一样,那这个自编码器还有什么用呢?
其实,我们的目的在于,通过训练输出值等于输入值的自编码器,让潜在表征 h h h作为有价值的属性。
通常,为了从自编码器获得有用特征,我们会限制h的维度使其小于输入x,使得自编码器能学习到数据中最重要的特征。

算法原理

思路

在这里插入图片描述

在传统的自编码器的目标函数 m i n W , W ∗ ∥ X − W ∗ W X ∥ F 2 min_{W,W^*}\|X-W^*WX\|^2_F minW,WXWWXF2中,为了使中间层能够表征属性,在这个目标函数中加入一个约束 W X = S WX=S WX=S S S S为属性对应的语义向量,即 m i n W , W ∗ ∥ X − W ∗ W X ∥ F 2 , s . t . W X = S min_{W,W^*}\|X-W^*WX\|^2_F,s.t.WX=S minW,WXWWXF2,s.t.WX=S,以此来最优化求解。

设定

X ∈ R d ∗ N \quad X \in R^{d * N} XRdN 代表 d d d 维共 N N N 个特征向量组成的矩阵,投影矩阵 W ∈ R k ∗ d , W \in R^{k * d}, WRkd, 将特征向量投影到语义空间, 得到latent representation S ∈ R k ∗ N , S \in R^{k * N}, SRkN, 假设 k < d kk<d,通过一个投影矩阵 W ∗ ∈ R k ∗ d , W^{*} \in R^{k * d}, WRkd, 将语义向量投影到特征空间。 Y = { y 1 , y 2 , … … y s } Y=\left\{y_{1}, y_{2}, \ldots \ldots y_{s}\right\} Y={y1,y2,ys} 为s个可见类标签的标签向量, Z = { z 1 , z 2 , … … , z u } Z=\left\{z_{1}, z_{2}, \ldots \ldots,z_{u}\right\} Z={z1,z2,,zu} 为u个不可见类标签的标签向量, Y ∩ Z = ϕ Y \cap Z=\phi YZ=ϕ S Y = { s 1 , s 2 , … . s s } S_{Y}=\left\{s_{1}, s_{2}, \ldots . s_{s}\right\} SY={s1,s2,.ss} 为可见类标签的prototype的集合, S Z = { s 1 , s 2 , … . . s u } S_{Z}=\left\{s_{1}, s_{2}, \ldots . . s_{u}\right\} SZ={s1,s2,..su} 为不可
见类标签的prototype的集合, X Y = { ( x i , y i , s i ) } ∈ R d ∗ N X_{Y}=\left\{\left(x_{i}, y_{i}, s_{i}\right)\right\} \in R^{d * N} XY={(xi,yi,si)}RdN 为拥有N个k维训练样本 x i x_{i} xi 的训练 集,测试集 X Z = { ( x i , y i , s i ) } X_{Z}=\left\{\left(x_{i}, y_{i}, s_{i}\right)\right\} XZ={(xi,yi,si)} 其中 y i , s i y_{i}, s_{i} yi,si 未知.

算法原理

在这里插入图片描述

上图表示了本文中的自编码器结构,以传统的自编码器的思想,本问题的目标函数为 m i n W , W ∗ ∥ X − W ∗ W X ∥ F 2 min_{W,W^*}\|X-W^*WX\|^2_F minW,WXWWXF2
为了使中间层能够表征属性,在这个目标函数中加入一个约束 W X = S WX=S WX=S S S S是实现定义好的属性对应的语义向量,目标函数为: m i n W , W ∗ ∥ X − W ∗ W X ∥ F 2 , s . t . W X = S min_{W,W^*}\|X-W^*WX\|^2_F,s.t.WX=S minW,WXWWXF2,s.t.WX=S
考虑到zero-shot learning旨在提高大规模计算机视觉的速度,为了减少参数数量,设置 W ∗ = W T W^*=W^T W=WT,则目标函数可以化为 :
m i n W ∥ X − W T S ∥ F r o 2 , s . t . W X = S min_{W}\|X-W^TS\|^2_{Fro},s.t.WX=S minWXWTSFro2,s.t.WX=S
显然,约束 W X = S WX=S WX=S有点过于强了,所以将其变为一个软约束加入目标函数:
m i n W ∥ X − W T S ∥ F r o 2 + λ ∥ W X = S ∥ F r o 2 min_{W}\|X-W^TS\|^2_{Fro}+\lambda \|WX=S\|^2_{Fro} minWXWTSFro2+λWX=SFro2
其中, λ \lambda λ为超参数
显然这是一个凸优化问题,通过对 W W W求导,令导数为零,求解 W W W即可。
∂ ( ∥ X − W ⊤ S ∥ F r o 2 + λ ∥ W X − S ∥ F r o 2 ) ∂ W \frac{\partial\left(\left\|X-W^{\top} S\right\|_{F r o}^{2}+\lambda\|W X-S\|_{F r o}^{2}\right)}{\partial W} W(XWSFro2+λWXSFro2)
= ∂ ( t r ( ( X ⊤ − S ⊤ W ) ⊤ ( X ⊤ − S ⊤ W ) + λ ( W X − S ) ⊤ ( W X − S ) ) ) ∂ W =\frac{\partial\left(t r\left(\left(X^{\top}-S^{\top} W\right)^{\top}\left(X^{\top}-S^{\top} W\right)+\lambda(W X-S)^{\top}(W X-S)\right)\right)}{\partial W} =W(tr((XSW)(XSW)+λ(WXS)(WXS)))
= ∂ ( t r ( W ⊤ S S ⊤ W − 2 W ⊤ S X ⊤ + λ ( X ⊤ W ⊤ W X − 2 S ⊤ W X ) ) ∂ W =\frac{\partial\left(t r\left(W^{\top} S S^{\top} W-2 W^{\top} S X^{\top}+\lambda\left(X^{\top} W^{\top} W X-2 S^{\top} W X\right)\right)\right.}{\partial W} =W(tr(WSSW2WSX+λ(XWWX2SWX))
= ∂ t r ( W ⊤ S S ⊤ W ) ∂ W − 2 ∂ t r ( W ⊤ S X ⊤ ) ∂ W + λ ∂ t r ( X ⊤ W ⊤ W X ) ∂ W − 2 λ ∂ t r ( S ⊤ W X ) ∂ W =\frac{\partial t r\left(W^{\top} S S^{\top} W\right)}{\partial W}-2 \frac{\partial t r\left(W^{\top} S X^{\top}\right)}{\partial W}+\lambda \frac{\partial t r\left(X^{\top} W^{\top} W X\right)}{\partial W}-2 \lambda \frac{\partial t r\left(S^{\top} W X\right)}{\partial W} =Wtr(WSSW)2Wtr(WSX)+λWtr(XWWX)2λWtr(SWX)
= ∂ t r ( X ⊤ S W ) ∂ W + λ ∂ t r ( W X X ⊤ W ⊤ ) ∂ W − 2 λ ∂ t r ( X S ⊤ W ) ∂ W =\frac{\partial t r\left(X^{\top} S W\right)}{\partial W}+\lambda \frac{\partial t r\left(W X X^{\top} W^{\top}\right)}{\partial W}-2 \lambda \frac{\partial t r\left(X S^{\top} W\right)}{\partial W} =Wtr(XSW)+λWtr(WXXW)2λWtr(XSW)
= 2 S S ⊤ W − 2 S X ⊤ + 2 λ W X X ⊤ − 2 λ S X ⊤ =2 S S^{\top} W-2 S X^{\top}+2 \lambda W X X^{\top}-2 \lambda S X^{\top} =2SSW2SX+2λWXX2λSX
= 0 =0 =0
A = S S ⊤ , B = λ X X ⊤ , C = ( 1 + λ ) S X ⊤ A=S S^{\top}, B=\lambda X X^{\top}, C=(1+\lambda) S X^{\top} A=SS,B=λXX,C=(1+λ)SX
则等式可以写作:
A W + W B = C \quad A W+W B=C AW+WB=C
此为著名的Sylvester方程的标准形式,可利用Bartels-Stewart algorithm求解,值得注意的是,Bartels-Stewart algorithm算法的复杂度为 o ( d 3 ) o(d^3) o(d3) ,与训练集大小无关,因此在大规模数据集上同样可以表现优异。

具体流程

对于测试特征向量 x i x_i xi,有两种方式给出预测,其中距离度量记作 D ( x , y ) D(x,y) D(x,y)

  1. S Z j S_{Z_{j}} SZj 为未见类标签集中第 j j j 个类在属性空间中对应的属性向量,也就是原型prototype
    Φ ( x i ) = argmin ⁡ j D ( W x i , S Z j ) \Phi\left(x_{i}\right)=\operatorname{argmin}_{j} D\left(W x_{i}, S_{Z_{j}}\right) Φ(xi)=argminjD(Wxi,SZj)
  2. s i s_{i} si 为不可见标签集中的一个元素
    Φ ( x i ) = argmin ⁡ j D ( x i , W s j ) \Phi\left(x_{i}\right)=\operatorname{argmin}_{j} D\left(x_{i}, W s_{j}\right) Φ(xi)=argminjD(xi,Wsj)
    Φ ( x i ) \Phi\left(x_{i}\right) Φ(xi) 的值为输出的预测值。

实验结果表明两种形式输出非常相似。

参考文献

[1]Kodirov E , Xiang T , Gong S . Semantic Autoencoder for Zero-Shot Learning[J]. 2017.

你可能感兴趣的:(Zero-Shot,Learning,少样本学习,零样本学习,算法,深度学习)