小样本学习&元学习经典论文整理||持续更新
核心思想
本文提出一种基于度量学习的小样本分类算法(DSN)。作者引入了子空间的概念,为每种类别都寻找到一个适合的子空间,然后在子空间中进行距离度量,并预测类别。首先作者介绍了几种常见的基于度量学习的小样本分类器,其分类方式如下图所示
(a)成对的分类器,分别计算查询样本对应的特征向量和每个支持样本对应的特征向量之间的距离,然后按照最近邻的思想预测类别,如Matching Network。
(b)原型分类器,为支持集中每个类别计算出一个原型(每个类别所有样本特征向量的平均值),然后根据查询样本的特征向量与各个类别原型之间的距离预测类别,如Prototypical Network。
(c)非线性二元分类器,利用神经网络学习到一个非线性的距离度量函数,如Relation Network。
(d)子空间分类器,为每个类别计算出一个特征空间的子空间,然后将查询样本的特征向量投射到子空间中,在子空间中进行距离度量,并预测类别,如本文的算法(DSN)。DSN的处理过程如下图所示
首先,利用特征提取器
f
Θ
f_{\Theta}
fΘ将输入图像映射到特征空间中得到对应的特征向量
f
Θ
(
x
i
)
f_{\Theta}(x_i)
fΘ(xi),然后通过平均的方式计算每个类别
c
c
c对应的特征向量均值
μ
c
\mu_c
μc,计算过程如下
对于每个类别
c
c
c都可以得到集合
X
~
c
=
[
f
Θ
(
x
c
,
1
)
−
μ
c
,
.
.
.
,
f
Θ
(
x
c
,
K
)
−
μ
c
]
\tilde{X}_c=[f_{\Theta}(x_{c,1})-\mu_c,...,f_{\Theta}(x_{c,K})-\mu_c]
X~c=[fΘ(xc,1)−μc,...,fΘ(xc,K)−μc],对
X
~
c
\tilde{X}_c
X~c进行奇异值分解(SVD)得到
X
~
c
=
U
∑
V
T
\tilde{X}_c=U\sum V^T
X~c=U∑VT,然后选取
U
U
U中前
n
n
n个维度得到截断矩阵
P
c
P_c
Pc,由
X
~
c
\tilde{X}_c
X~c得到子空间
P
c
P_c
Pc的过程其实就是截断奇异值分解(TSVD),其与主成分分析PCA非常类似,是一种数据降维的方法。得到每个类别对应的子空间
P
c
P_c
Pc后,可以计算查询向量
f
Θ
(
q
)
f_{\Theta}(q)
fΘ(q)与每个类别之间的距离
d
(
q
)
d(q)
d(q),计算过程如下
式中
M
c
=
P
c
P
c
T
M_c=P_cP_c^T
Mc=PcPcT,最后利用softmax函数计算查询样本属于各个类别的概率
p
c
,
q
p_{c,q}
pc,q,计算过程如下
实现过程
网络结构
特征提取网络采用4层卷积神经网络或ResNet网络
损失函数
损失函数包含两项:分类损失和正则化项
第一项分类损失采用分类概率的负对数,是常见的操作;第二项正则化项目的是最大化各个子空间之间的距离,距离度量方式如下
根据上式可知,为了最大化
δ
p
2
\delta_p^2
δp2,就需要最小化
∥
P
i
P
j
T
∥
F
2
\left \| P_iP_j^T\right \|_F^2
∥∥PiPjT∥∥F2
训练策略
整个训练过程如下
算法推广
本文的方法还可以拓展到半监督训练中,修改
μ
c
\mu_c
μc的计算方式如下
式中
r
i
r_i
ri表示无标签样本
创新点
- 将特征空间降维到特定的子空间中,并在子空间中进行距离度量
- 采用TSVD的方法生成子空间
算法评价
本文对每个类别都计算了特定的子空间,并在子空间中进行距离度量,因此作者称其为自适应子空间(Adaptive Subspaces)。因为每个类别的距离度量过程都与类别相关,因此作者称其为动态分类器(Dynamic Classifier)。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。