DeepLearning | Semantic Autoencoder for Zero Shot Learning(论文、算法、数据集、代码)

这两天事情比较少,这里再分享一个简单好用的ZSL算法
Semantic Autoencoder for Zero Shot Learning
之前也写过几篇博客简单描述了几种基本的ZSL算法
DeepLearning | Relational Knowledge Transfer for Zero Shot Learning(论文、算法、数据集、代码)
DeepLearning | Zero Shot Learning 零样本学习(扩展内容、模型、数据集)
DeepLearning | Zero Shot Learning 零样本学习
这篇博客会描述SAE方法的思想和理论解释,在文章的最后会给出算法复现的python代码

一、 Introduction

我们先明确一下符号标记 X X X表示数据, S S S表示数据的属性标签, Y Y Y表示数据的标签。

在之前的几篇博客中,我们反复提到了直接属性预测(DAP)这一经典的ZSL方法,今天我们还是用它来引出SAE。DAP先用 X X X训练多个学习器预测 S S S,在测试阶段,用训练好的学习器预测测试样本,再对着属性表进行近邻搜索确定标签 Y Y Y

DAP存在着一些缺点,如没有办法克服域偏移的问题,训练很多学习器也是一件费时的事。
那么我们为什么不直接预测所有的属性呢?这是因为如果直接用1个网络同时预测所有的属性,会造成该网络学习得到已知类别属性的固有模式,而不具体的细分属性,这样一来,使用属性嵌入的意义就不大了,还是没有办法预测未知类别。

Semantic autoencoder(SAE)则为我们提供了另一种思路,它在普通的自编码网络上加上了一个约束,这个约束使得编码后得到的属性包含了更多数据样本本身的特点,从而使得模型可以识别未知类别

二、Approach

我们先来看一下普通的自编码器模型

m i n W ∗ , W ∥ X − W ∗ W X ∥ 2 min_{W^{*},W}\left \| X- W^{*}WX\right \|^{2} minW,WXWWX2

这一模型很好理解,即 X X X经过两次映射 W W W W ∗ W^{*} W后输出 X X X本身,即通过一次映射 W W W编码,第二次映射 W ∗ W^{*} W解码

我们再来看一下SAE的自编码模型

m i n W ∥ X − W T W X ∥ 2 min_{W}\left \| X- W^{T}WX\right \|^{2} minWXWTWX2
s . t . W X = S s.t. WX=S s.t.WX=S

相比于普通的自编码器,SAE做出了两点变化,一是要求 W ∗ W^{*} W= W T W^{T} WT,这是为了方便后面的优化求解,二是增加了线性约束,即 s . t . W X = S s.t. WX=S s.t.WX=S

该模型可以图解如下:
DeepLearning | Semantic Autoencoder for Zero Shot Learning(论文、算法、数据集、代码)_第1张图片
仔细研究该模型,可以发现,SAE其实要求所求得的 W W W具有两重性质

  1. X X X在经过 W W W映射之后可以通过 W T W^{T} WT还原,即 W X WX WX还包含 X X X的所有信息
  2. W X WX WX应当尽可能的逼近 S S S

这两条性质,使得映射后得到的 W X WX WX具有较好的类别区分性质,这是普通的自编码器做不到的。
该模型的求解也十分简单,通过拉格朗日乘子法,并求导可以但模型转化为Sylvester等式的形式

A W + W B = C AW+WB=C AW+WB=C

其中 A = S S T A=SS^{T} A=SST, B = λ X X T B=\lambda XX^{T} B=λXXT, C = ( 1 + λ ) S X T C=(1+\lambda)SX^{T} C=(1+λ)SXT

该等式可以通过python 库里的Sylvester求解器直接求解, 要注意,SAE最后用于判断属性和类别远近的距离是cos距离而不是欧式距离,这会很大程度上影响模型精度

三、算法复现

AwA2的数据链接在这里:DeepLearning | AWA2 图像数据集预处理
AwA和其他数据链接在这里:https://blog.csdn.net/qq_38451119/article/details/81624468
python源代码在这里:https://github.com/LiangjunFeng/Implement-of-ZSL-algorithms

你可能感兴趣的:(semantic,autoencoder,ZSL,代码,数据,DeepLearning)