小样本学习&元学习经典论文整理||持续更新
核心思想
本文在基于度量学习的小样本算法的基础上提出了几点改进方案:度量放缩(Metric Scaling),任务条件(Task Conditioning)以及辅助任务合作训练(Auxiliary task co-training)。首先,对于度量函数
d
(
z
,
c
k
)
d(z,c_k)
d(z,ck)增加一个放缩系数
α
\alpha
α,使得分类概率
p
(
y
=
k
∣
x
)
=
s
o
f
t
m
a
x
(
−
α
d
(
z
,
c
k
)
)
p(y=k|x)=softmax(-\alpha d(z,c_k))
p(y=k∣x)=softmax(−αd(z,ck))。作者通过数学的方式证明了,
α
\alpha
α的值越大就能更加直接的降低分类误差,但是如果
α
\alpha
α的值比较大,随着训练的逐步进行,正确分类样本越来越多,错误分类样本越来越少,训练过程对于模型效果的提升能力也越来越弱(梯度逐渐趋近于0)。因此作者认为应该存在一个最优的
α
\alpha
α能够平衡这一关系,就通过训练的方式去学习这一参数。然后作者对特征提取器
f
θ
(
x
)
f_{\theta}(x)
fθ(x)进行了改进,作者认为应该引入一个与任务相关的参数
Γ
\Gamma
Γ,得到一个与任务相关的动态特征提取器
f
θ
(
x
,
Γ
)
f_{\theta}(x,\Gamma)
fθ(x,Γ)。于是作者引入了任务嵌入网络(Task Embedding Network,TEN),通过对原有的特征图进行放缩和平移的方式引入任务信息,TEN结构如下图所示
图中Task encoding就表示需要嵌入的任务信息,本文选择原型网络Prototypical Network中的每个类别原型的平均值
c
ˉ
=
1
K
∑
k
c
k
\bar{c}=\frac{1}{K}\sum_kc_k
cˉ=K1∑kck作为任务信息,然后分别用两个带有残差结构的全连接网络
g
θ
g_{\theta}
gθ和
h
φ
h_{\varphi}
hφ对
c
ˉ
\bar{c}
cˉ进行处理,再与对应的L2惩罚项
γ
0
\gamma _0
γ0和
β
0
\beta_0
β0相乘,得到放缩系数
γ
=
γ
0
g
θ
(
c
ˉ
)
+
1
\gamma =\gamma_0g_{\theta}(\bar{c})+1
γ=γ0gθ(cˉ)+1和平移系数
β
=
β
0
h
φ
(
c
ˉ
)
\beta =\beta_0h_{\varphi}(\bar{c})
β=β0hφ(cˉ),最后将卷积层输出的特征图
h
l
h_l
hl进行放缩和平移得到
h
l
+
1
=
γ
⊙
h
l
+
β
h_{l+1}=\gamma \odot h_l +\beta
hl+1=γ⊙hl+β。作者文中并未说明
γ
0
\gamma _0
γ0和
β
0
\beta_0
β0的来源,根据代码分析可知是两个初始值为0的可学习的参数。
作者发现引入TEN结构给网络增加了额外的复杂度,使得网络训练变得困难。因此作者提出了利用辅助任务进行合作训练的方法,其实就是在原网络的基础上增加一个64类的分类器,然后在训练过程中会随机的从64类的miniImageNet数据集中抽取样本,用于训练该分类器。这与预训练的方式略有不同,两个训练过程共用一个特征提取网络,一起进行合作训练,且从辅助任务数据集中抽取样本的概率会随着训练次数的增加而呈指数下降。这就接近于课程学习(curriculum learning)的概念,一开始训练时会引入较多的简单分类任务,引导特征提取网络训练;随着训练次数不断增加,网络的能力也在不断增强,以此逐渐降低简单任务所占的比重,而增加真正需要学习的任务(小样本分类)比重。整个网络的流程如下图所示
支持集图片
x
i
x_i
xi分别利用两个权重共享的特征提取器进行处理,上方的
f
ϕ
(
x
,
Γ
)
f_{\phi}(x,\Gamma)
fϕ(x,Γ)是用于获取类别表征信息,而下方的
f
ϕ
(
x
,
0
)
f_{\phi}(x,0)
fϕ(x,0)则是用于获取任务表征信息,并通过TEN结构得到放缩和平移系数,用于改进
f
ϕ
(
x
,
Γ
)
f_{\phi}(x,\Gamma)
fϕ(x,Γ)。查询集图片
x
∗
x^*
x∗同样经过
f
ϕ
(
x
,
Γ
)
f_{\phi}(x,\Gamma)
fϕ(x,Γ)的处理得到对应的表征信息,并与支持集图片对应的表征信息进行相似性度量。最后将得到的相似性得分乘以放缩系数
α
\alpha
α,在经过softmax函数得到每个类别的预测概率。
实现过程
网络结构
特征提取器采用ResNet-12作为主干网络,TEN网络的结构如上文所示,普通的卷积块和残差块与TEN的结合方式如下图所示
损失函数
交叉熵损失函数
训练策略
主要的增加了辅助任务合作训练的内容,如上文所述
创新点
- 为度量函数增加了放缩系数,并通过数学方法和实验方法证明其有效性
- 设计了TEN结构,将任务相关信息引入到特征提取网络之中
- 采用了辅助任务合作训练的方式,降低了网络训练的难度
算法评价
本文提出的对度量函数进行放缩的观点是本文的核心内容,他看起来非常简单,只是增加一个可学习的放缩参数,但在实验过程中却能有效提升分类的准确率。对于特征图进行平移和放缩在之前解读的文章《Meta-Transfer Learning for Few-Shot Learning》中也有过类似的操作,只不过是对甚至网络中的权重值进行平移和放缩,起到元学习的效果。最后本文采用的合作训练算法,在之前的文章中没有看到过,而且实验表明该方法的提升作用明显,可以进行尝试。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。