论文阅读《Expert Training Task Hardness Aware Meta-Learning for Few-Shot Classification》

原文链接:https://arxiv.org/abs/2007.06240

摘要

在一些深度神经网络的优化工作中发现,训练数据的顺序对于分类器的性能有一定影响,合理地安排顺序使分类器更快、更准。受此启发,作者将此思想融入meta-learning中,按照由易到难地顺序进行训练。如何度量task的难易程度呢?作者提出了一个Task Hardness Aware Module来实现。

主要贡献

作者提出一种“专家”训练策略,将meta-training分成两个阶段,第一阶段训练简单的tasks,第二阶段训练困难tasks,这种策略实现简单并且可在绝大多数meta-learning上实现;
作者设计了Task Hardness Aware Module(THAM),并分为两种:Se-THAM和Co-THAM用来度量tasks的难易程度。

简介

在传统的FSL中,每个episode的support set和query set中的samples是随机生成的。
然而,不同的episodes之间分类难度可能差别很大,如下图所示:
在这里插入图片描述

简单的tasks产生很小的loss而复杂tasks的loss会很大,如果meta-learner一视同仁地处理这些tasks显然是不合理的。我们知道人类在学习新事物时往往是按照从易到难的顺序,这启发了作者将此概念引入到meta-learning中。

作者设计了一种训练策略来提高meta-learner的性能,同时将Task Hardness Aware Module(THAM)加入到训练过程中,来评估每个task的难易程度,并据此将整个训练过程分成两个阶段:primary learning phase和advanced training phase。

在第一阶段,用简单的tasks来训练meta-learner使之获得基础的分类能力;在第二阶段,用困难的tasks来强化meta-learner使之成为分类任务的“专家”。这种“专家”训练策略其实也和人类学习新事物的过程不谋而合。

在这个“专家”训练策略中,THAM扮演着最重要的角色。一个task的难易程度即它的类别间的可区分度,这个可以用语义关系或者计算度量来表示。根据这两种表示方式,作者提出两种THAM的实现:Se-THAM(基于语义),Co-THAM(基于计算)。

Se-THAM直接根据WordNet中的标签树来生成简单task和复杂task。

如下图所示,父节点相同的子类节点之间比较容易区分,是简单task,而父节点不同的节点之间较难区分,是困难task。
在这里插入图片描述
Co-THAM方法通过给不同任务量化打分(hardness score)来决定难易程度。Co-THAM中的training tasks依然是随机取样的,每个类包含多个样本,不同类之间的关系是一种集合间的关系,如图所示:
在这里插入图片描述
我们可以通过三种距离来度量这种关系:pairwise Euclidean distance, Hausdorff distance以及Hilbert Schmidt independence criterion.

Hardness score基于从learner中提取的features,因此使得Co-THAM可以实现端到端训练。

具体实现

Se-THAM

训练过程和传统meta-training相似,但是每个episode中的样本不再是随机取样,而是根据语义树来确定每个tasks的难易程度。
在这里插入图片描述

在auxiliary dataset中,一共有M个类,表示为 { C i } i = 1 M \{C_i\}_{i=1}^M {Ci}i=1M,这M个类根据语义隶属关系分成L个子类,如下图所示:
在这里插入图片描述
我们使用一个标签字典来存储这些关系Label_Dic= { H C i { C j } j = 1 M i } i = 1 L \{HC_i\{C_j\}_{j=1}^{M_i}\}_{i=1}^L {HCi{Cj}j=1Mi}i=1L,Mi是父类 H C i HC_i HCi下的类别数量,并且M= ∑ i = 1 L M i \sum_{i=1}^{L}Mi i=1LMi

核心算法
总览
在这里插入图片描述
详细分析
在这里插入图片描述
输入:标签字典与数据字典,N-way,K-shot,Query
输出:根据难易程度分类后的tasks
在这里插入图片描述
构造Easy Task:
相同父类下的类别容易分类,属于简单tasks,而不同父类下的类别难以分类,是困难tasks。
对于N-way-K-shot,构建简单tasks:随机选择N个父类,然后从每个父类中选一个子类;
在这里插入图片描述
构建Hard Task:
先随机选取一个父类,然后从每个父类中选取N个子类;
如果这个父类的子类数小于N,那么再逐个加入其他父类的子类,直到子类个数大于等于N;
从新类中随机选择N个类构建Task;
注意,这里虽然加入了其他父类的数据,但是总体依然是hard task,如前文所述,只要存在来自相似类中的样本,这个task就会难以区分。
在这里插入图片描述
选择样本:
从上一步得到的类中随机选择K个样本作为support set,再从剩下的N-k个样本中随机选择Q个样本作为query set。

Co-THAM

在这里插入图片描述
主要由四个模块组成:
随机采样模块:产生epidoses喂给meta-training
Learner:通常是一个CNN,用来分类一个特定task
Meta-learner:初始化权重并且不断为Learner更新指令
Co-THAM:关键模块,基于从fine-tuned learner得到的特征给每个任务难易程度打分。

训练过程
1、 随机生成episode,support data
在这里插入图片描述
共N个categories,Ci表示第i个categories,K代表共K个shot,小k表示第k个
2、用support data来fine-tune learner,更新meta-learner的初始化weight
3、将query data 喂给fine-tuned CNN learner生成两种输出:
1)query集样本的loss
2)从CNN learner的最后一个全连接层提取出的特征 G e G_e Ge

在这里插入图片描述

4、 Co-THAM利用2)中得到的G_e来计算TH_e,然后将得分喂给meta-learner
5、 在一个minibatch中,meta-learner得到若干query集上的loss以及这些task对应的 T H e TH_e THe,meta-learner根据 T H e TH_e THe以及训练阶段为这些任务加权,然后更新参数。

Primary learning phase: 简单的任务权重更高
Advanced learning phase: 复杂任务权重更高

Task Hardness Score ( T H e TH_e THe)的计算

任务的难易程度主要取决于那些相似度较高的类别,如何量化 T H e TH_e THe
在这里插入图片描述

Dist(·)是两个类之间的距离,距离越小, T H e TH_e THe越高,task越复杂。有三种度量距离的方式:pairwise Euclidean distance、Hausdorff distance和Hilbert-Schmidgt independence criterion(HSIC)。

Pairwise Euclidean Distance
在这里插入图片描述
计算两个目标类的所有样本之间的欧式距离。

Hausdorff distance
遍历计算A类中样本到最近的B类中样本的距离为d,然后取d的最大值
在这里插入图片描述
其中d()可以是任意距离度量方式,简单起见我们使用欧氏距离。

Hilbert-Schmidgt independence criterion(HSIC)

为类 C i C_i Ci C j C_j Cj定义两个特征矩阵 G C i = [ g 1 C i , g 2 C i , . . . , g Q C i ] G_{C_i}=[g_1^{C_i},g_2^{C_i},...,g_Q^{C_i}] GCi=[g1Ci,g2Ci,...,gQCi] G C j = [ g 1 C j , g 2 C j , . . . , g Q C j ] G_{C_j}=[g_1^{C_j},g_2^{C_j},...,g_Q^{C_j}] GCj=[g1Cj,g2Cj,...,gQCj],两个类之间的HSIC值按照下式计算:

在这里插入图片描述
其中
在这里插入图片描述
公式里的 1 Q ∈ 1_Q\in 1Q R Q R^Q RQ,是值为1的列向量。
基于HSIC的 T H e TH_e THe为:

在这里插入图片描述
核心算法
总览

在这里插入图片描述
详细分析
在这里插入图片描述
输入:数据集,超参数α、β,N-way,K-shot,Query
输出:θ(meta-learner的参数),task的样本

在这里插入图片描述
对于T个训练任务,我们采用minibatch的方式,batchsize=B,因此iteration=T/B;
在这里插入图片描述
其中 x K C i j x_K^{C_i^j} xKCij表示第j个任务中的第i个类中的第k个support样本,L_j代表第j个任务的loss,作者用的是交叉熵损失:
在这里插入图片描述
然后通过梯度下降来更新参数θ,并根据前文所述用CNN learner提取query data的特征

在这里插入图片描述
计算当前任务的 T H e TH_e THe,用这两个公式:

在这里插入图片描述

在这里插入图片描述
然后再计算meta-loss,同样使用交叉熵损失。
在这里插入图片描述
最后调整当前minibatch的权重,然后更新θ。

在每个batch中, T H e TH_e THe用来根据training loss来调整权重,这一过程如下公式所述:
在这里插入图片描述

实验

数据集:
作者在miniImageNet和tieredImageNetSketch上进行了实验。
miniImageNet由60,000张图片组成,共100个类,其中64个类用来训练,16个类用来验证,20个类用来测试。因为miniImageNet是ImageNet的子集,我们可以直接用后者的语义标签结构提取出标签树。
tieredImageNetSketch共有608个类,34个父类,其中20个用来训练,6个用来验证还有8个用来测试,确保训练集和测试集有显著区别。

在meta-training阶段,训练集的样本组成auxiliary dataset,从中产生T个训练任务。在测试阶段,V个novel类任务从测试集中随机取样,每个任务有N×Q个样本用来计算分类准确率,并用均值和标准差来改进性能。

作者用λ区分两个训练阶段,λ×T个任务属于primary learning阶段,而剩余的任务属于advanced training阶段。

作者在Meta-SGD上使用了“专家”训练策略,结果如下:
在这里插入图片描述
参数设置:1-shot λ=1/4,5-shotλ=1/3
在这里插入图片描述

综上所述,用“专家“训练策略训练的meta-learner在novel tasks中有更好的表现;
Co-THAM比Se-THAM拥有更好的表现,因为前者实现端到端的训练过程,可随着meta-learner不断优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值