【论文理解】Revisiting Unsupervised Meta-Learning: Amplifying or Compensating for the Characteristics of..


前言

论文的名字太长了,放不进标题里,我再列一下论文的完整题目:Revisiting Unsupervised Meta-Learning:
Amplifying or Compensating for the Characteristics of Few-Shot Tasks
。论文的作者来自南京大学,2020/11/30挂在arxiv上。

这是一篇改进无监督少样本学习算法的论文(从题目中可以感受到,“增强和补偿特征”),作者在现存的一种无监督元学习少样本分类算法上,添加了几个改进点,获得了很好的实验结果。 作者也做了大量实验,来观测不同参数对结果的影响。

我认为实验结果很好,有一些是之前想不到的,感谢作者的实验,带我开眼哈哈哈哈~


一、无监督元学习算法

注意,这里的无监督元学习算法特指,用于解决少样本图像分类问题的一种算法哦~

元学习算法

基于元学习的少样本学习算法包括元训练及元测试阶段,在元训练阶段,每一个样本是人为构造出的假任务(fake task),一般称为episode。这个假任务中包含了support和query set,不过它们都是有标签的。训练使用的数据集称为基类数据。在元训练时,我们对每个task中query的预测结果求交叉熵损失,并用这个损失更新网络。训练完成后,在元测试阶段对网络解决FSL(Few Shot Learning)任务的能力进行测试。元训练与元测试阶段使用的数据类别是完全不交叉的。测试使用的数据集称为新类数据。

这里放一张我论文里面的图片,方便理解
在这里插入图片描述

无监督的元学习算法

这里的无监督指的是,在元训练阶段我们不知道基类图像的标签。 因此在构建假任务时,我们不知道把哪些图像放到一类的support set中去。

此时,之前的研究者提出一种类似于对比自监督学习的方式,把每张图像进行随机增广,并把每一张图像看作是一个类别,增广的图像和原图就构成了这一类别的数据集。
在这种设定下,我们按照之前的方式进行采样,构造假任务用于元训练。剩下的流程和有监督元训练是一致的。


至于具体如何进行少样本分类的,本文采用的是Prototype Net的度量式方法,即对每一类support set的特征求均值,作为该类的prototype,再计算query特征到每一类的prototype的距离,选择距离最近的类别,作为当前query的预测类别。此时的距离计算可以用欧式距离、余弦距离等。

欧式度量:
在这里插入图片描述
余弦度量(把上式的 S i m Sim Sim函数替换为余弦计算):
在这里插入图片描述

本文作者就是在这种算法上,进行自己的四方面改进。

二、四个改进点

1.Sufficient Episodic Sampling (SES)

这个翻译一下,就是在元训练的每一个mini-batch中,增加人为构造的假任务的个数。如何增加呢,就从当前采样的这个假任务中,再采样。下面解释一下为啥这么做。

为什么增加任务个数?

在第一部分介绍的无监督元学习算法中,每一个mini-batch只包含一个任务,网络在对每个mini-batch计算损失后就反向传播、更新参数,这有些草率。作者认为应该增加一个batch中的任务数量,让网络在多个任务上求平均损失,再反向传播。

我认为,这样会更接近于普通图像分类网络的训练。因为元学习中,一个假任务就相当于一个训练样本,在一个mini-batch中就应该包含几个样本,对他们的损失求均值再反向传播才对。所以,作者的思路我感觉很顺畅合理。

如何增加任务个数?

假设我们想用于训练的假任务是 N ∗ K N*K NK的(即N-way,K-shots),那么在当前batch中,先采样一个 C ∗ K C*K CK的任务,其中 C > N C>N C>N。把这个任务中的全部样本通过一次特征提取网络,获得每张图像的特征。

接着,我们对这些特征进行二次采样:从 C C C个类别中,采样出 N N N个类别,每个类别对应的support和query的样本也采样出来。如此采样100次,我们就能在当前的mini-batch下获得100个task。这是一种高效的方法。

2.Semi-Normalized Similarity metric (SNS)

这个改进点是针对于前面提到的余弦度量来说的。作者把余弦度量的计算变成了半归一化,只对prototype进行归一化,不再对query特征归一化。如下:
在这里插入图片描述
它和下面的式子相等:
在这里插入图片描述
可以看出,半归一化相当于在余弦距离上乘了一个自适应的temperature,这是作者如此修改的原因。实验证明“半归一化”的效果确实要好一些。

The instance-specific temperature softens the logit value well and improves the efficiency of meta-training.

接下来的两个改进点是变化幅度比较大的,是针对任务特征进行的增强和补偿。

3.Hard Mixed Supports (HMS)

这一点有点像难例挖掘。
在一个task中,作者找到难区分的图片,即离得很近却不属于同一类。并把它们进行特征融合(mix):
S ^ j \hat{S}_j S^j是针对query图像 x j x_j xj 的难例数据集。(对每一张query图像都进行这样的融合、扩充数据)
在这里插入图片描述
把融合后的结果重新加入原来的support set中,再用扩增的support set进行少样本分类。
在这里插入图片描述
通过这样融合“难例”的方式,作者想要增大训练过程中task的难度,以此提升训练效果。 下图中的(b)是对HMS的流程描绘。

在这里插入图片描述

4.Task-specific Projection Head

依赖任务的映射头——这个改进相当于加入了注意力模块,采用了类似于 transformer 中的 key, query 和 value这几个要素。作者引入 W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV三个网络参数,分别乘在特征上,获得其对应的query, key 和 value。对一个任务中的图像特征进行了改进。改进方式是对某张图像的特征,融合一些对它重要的其他图像特征。注意力大小的计算公式如下:

在这里插入图片描述
基于注意力值进行特征融合,式子中的 L ( . ) L(.) L(.)表示一个网络层序列 :

在这里插入图片描述
我感觉上面这个式子里的 W Q W_Q WQ应该是 W V W_V WV,可能是写错了。

上面的过程就完成了一次注意力聚合,作者也尝试了多头注意力方法,并且发现多头的效果比单头好,实验结果如下:
在这里插入图片描述

三、部分实验结果展示

1.对比其他算法

这里的主干网络采用ResNet,效果比Conv-4要好~
在这里插入图片描述

2.各种控制变量的实验

作者对网络的各种超参数设置做了对比实验,比如元训练时,对于假任务的 N , K , Q N, K, Q N,K,Q值的选择,实验中设置 C = 64 C=64 C=64,选择不同的 N , K , Q N, K, Q N,K,Q值做对比试验,结果如下:

在这里插入图片描述

3.HMS和TSP-Head不兼容

作者通过实验发现,这两种改进方式同时使用时效果会下降,不如单独使用某一种好。
在这里插入图片描述


总结

这篇论文是关于无监督的少样本学习算法的,使用了元学习的框架并取得了很好的实验结果。
1、这些实验结果证明了即便是在元学习框架下,测试阶段的任务类型也不会受到元训练时任务类型的限制,只是需要选择好训练时的 N , K , Q N,K,Q N,K,Q值。

从实验结果可以看出,在一种 N , K N,K N,K设置下训练获得的网络,可以很好地解决5way-1shot、5shot、20shot和50shot测试任务(训练时的 N , K N,K N,K和测试时的 N , K N,K N,K不同)。

2、实验结果同时表明了注意力是个好东西啊~

以上只是个人观点,如果有理解不对的地方,欢迎大家指出啊~

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值