Free Lunch For Few-Shot Learning: Distribution Calibration

https://arxiv.org/pdf/2101.06395v2.pdf

https://github.com/ShuoYang-1998/Few_Shot_Distribution_Calibration

Free Lunch For Few-Shot Learning: Distribution Calibration,ICLR,2021

总结:迁移学习比较类似,从有充足样本的基类中学习特征分布,迁移到新类数据集,修正新类数据集特征分布,再从修正后的分布中做采样,生成大量样本用于分类器的训练。从迁移特征分布这个角度切入,再进行样本生成,感觉角度找的很好。

1. 简介

1.1 摘要

Learning from a limited number of samples is challenging since the learned model can easily become overfitted based on the biased distribution formed by only a few training examples. In this paper, we calibrate the distribution of these few-sample classes by transferring statistics from the classes with sufficient examples.Then an adequate number of examples can be sampled from the calibrated dis-tribution to expand the inputs to the classifier. We assume every dimension inthe feature representation follows a Gaussian distribution so that the mean andthe variance of the distribution can borrow from that of similar classes whosestatistics are better estimated with an adequate number of samples. Our methodcan be built on top of off-the-shelf pretrained feature extractors and classifica-tion models without extra parameters. We show that a simple logistic regressionclassifier trained using the features sampled from our calibrated distribution canoutperform the state-of-the-art accuracy on three datasets (5% improvement onminiImageNet compared to the next best). The visualization of these generatedfeatures demonstrates that our calibrated distribution is an accurate estimation.The code is available at: https://github.com/ShuoYang-1998/Few_Shot_Distribution_Calibration

从有限样本中学习知识是一个具有很大挑战的任务,因为基于少量样本形成的biased distribution很容易让模型过拟合。本文作者通过从具有充足样本的其他类别中迁移统计数据到只有少量样本的类别中,来修正biased distribution。然后可以从修正后的分布中采样充足样本来扩充输入到分类器中的样本数量。我们假设特征表示的每个维度都遵从高斯分布,这样分布的均值和方差就可以从那些具有充足样本的相似类别借用得到。我们的方法可以建立在预训练好的特征提取器和分类器上,无需额外参数。三个数据集上的实验表明,即使是简单地逻辑回归分类器,使用从我们修正后的分布中采样得到特征,其性能也优于当前最好方法(miniImageNet数据集上相比较当前最优方法提升5%)。对生成特征的可视化结果表明我们修正后的分布是准确的。

1.2 本文工作

在训练集样本数量很少的情况下,模型会出现过拟合问题,得到一个biased distribution,如下图所示:

本文作者希望通过修正得到的biased distribution,使其更接近真实的分布状态。然后从修正分布中采样样本,来训练模型,提高模型泛化能力。本文作者并不是修正原始数据空间的分布,而是尝试修正特征空间的分布,因为它维度更低,更容易修正。

作者假设:特征向量的每一个维度都服从高斯分布,并且相似的类别有相似均值和方差。

如下表所示,展示了不同类别样本特征分布之间的相似度:

这样我们就能在相似类别之间传递高斯分布的均值和方差。基于此,作者将有充足的样本类别中的特征分布迁移到小样本类别中,根据类别之间的相似度,来更好地估计小样本类别的特征分布。根据得到的分布,我们能采样到充足的样本来更好地训练分类模型。

3. 方法

3.1 问题定义

和典型的小样本分类一样。给定有标签数据集D={(xi,yi)}\mathcal D=\{(x_i,y_i)\},其中xiRdx_i\in\mathbb R^d表示特征向量,yiCy_i\in C表示样本类别标签。整个数据集被划分成两部分base classes CbC_b和novel classes CnC_n,并且CbCn=, CbCn=CC_b\cap C_n=\empty,\ C_b\cup C_n=C。模型的目标是:在base classes上训练,在novel classes上能取得很好地效果。

为了评估模型的快速适应能力和泛化能力,和小样本其他方法一样,构建N-way-K-shot任务,每个任务中有support集合S={(xi,yi)}i=1N×KS=\{(x_i,y_i)\}_{i=1}^{N\times K}和query集合Q={(xi,yi}i=N×K+1N×K+N×qQ=\{(x_i,y_i\}_{i=N\times K +1}^{N\times K+N\times q}

3.2 校正特征分布

根据前面的描述我们可以知道,如果假设样本特征分布服从高斯分布,那么特征分布的均值和方差和类别之间语义相似度是高度相关的。比如北极狐和白狼之间的特征分布就高度相似。

我们知道用于训练的base classes样本数量充足,基于此,如果我们能学习到不同类别之间的相似度的话,就可以将从基类样本中学习到的特征分布迁移到novel classes中。

现在需要讨论的问题有三个:

  1. 如何计算两个类别之间的语义相似度?
  2. 如何利用base classes中学习到的特征分布,校准 classes中的特征分布?
  3. 如何利用校准后的特征分布提高小样本学习的性能?

这三个问题弄清楚了,就理解了该论文中提出的方法。

一、计算样本特征

采用预训练好WideResNet计算样本特征向量。

二、计算特征分布

假定base calsses的特征服从高斯分布,base class i的特征分布计算方式如下:

μi=j=1nixjni(1)\boldsymbol{\mu}_{i}=\frac{\sum_{j=1}^{n_{i}} \boldsymbol{x}_{j}}{n_{i}}\tag 1

其中xjx_j表示类别ii下第j个样本的特征向量,nin_i表示类别ii下样本总数。因为特征向量xjx_j通常都是多个维度的,因此采用covariance可以更好地表示特征分布的方差,协方差矩阵计算方式如下:

Σi=1ni1j=1ni(xjμi)(xjμi)T(2)\boldsymbol{\Sigma}_{i}=\frac{1}{n_{i}-1} \sum_{j=1}^{n_{i}}\left(\boldsymbol{x}_{j}-\boldsymbol{\mu}_{i}\right)\left(\boldsymbol{x}_{j}-\boldsymbol{\mu}_{i}\right)^{T}\tag 2

考虑从novel classes中采样的某个N-way-K-shot任务。

三、特征转换

为了让特征分布更Gaussian-like,作者采用Tukey‘s Ladder of Powers transformation技术(一系列幂变换来减少分布的偏态,使分布更像高斯分布)来调整样本特征。计算方法如下:

x~={xλ if λ0log(x) if λ=0(3)\tilde{\mathrm{x}}=\left\{\begin{array}{ll} \boldsymbol{x}^{\lambda} & \text { if } \lambda \neq 0 \\ \log (\boldsymbol{x}) & \text { if } \lambda=0 \end{array}\right.\tag 3

其中λ\lambda为超参,如果λ=1\lambda = 1,则表示不对特征进行调整,减小λ\lambda会使得分布的正偏态减小,反之亦然。

四、特征分布的修正

基于特征空间中类别之间的欧式距离进行分布的修正。具体来说,从base classes中选取top k个距离x~\tilde x最近的base类别,计算方法如下:

\begin{align} \mathbb{S}_{d}=\left\{-\left\|\mu_{i}-\tilde{\boldsymbol{x}}\right\|^{2} \mid i \in C_{b}\right\}, \tag 4 \\ \mathbb{S}_{N}=\left\{i \mid-\left\|\mu_{i}-\tilde{\boldsymbol{x}}\right\|^{2} \in \operatorname{topk}\left(\mathbb{S}_{d}\right)\right\},\tag 5 \end{align}

其中Sd\mathbb S_d表示基类别和样本x~\tilde x之间的欧氏距离,topk(Sd)topk(\mathbb S_d)表示距离最小的前k个类别,储存在SN\mathbb S_N中。然后利用距离最近的这k个类别对特征分布校准:

μ=iSNμi+x~k+1,Σ=iSNΣik+α(6)\mu^{\prime}=\frac{\sum_{i \in \mathbb{S}_{N}} \mu_{i}+\tilde{x}}{k+1}, \Sigma^{\prime}=\frac{\sum_{i \in \mathbb{S}_{N}} \Sigma_{i}}{k}+\alpha\tag 6

其中α\alpha是超参,决定校准分布的分散程度。对于超过one-shot的小样本任务,上述校准过程应进行K-shot次,每次使用一个样本进行校准。

经过校准后,对于每一个yCny\in C_n,我们可以得到一系列高斯分布Sy={(μ1,Σ1),,(μK,ΣK)}\mathbb{S}_{y}=\left\{\left(\boldsymbol{\mu}_{1}^{\prime}, \boldsymbol{\Sigma}_{1}^{\prime}\right), \ldots,\left(\boldsymbol{\mu}_{K}^{\prime}, \boldsymbol{\Sigma}_{K}^{\prime}\right)\right\},其中μi\mu_i'i\sum_i'分别表示均值和协方差,K即为N-way-K-shot中的K。

五、如何利用校准后的分布

利用校准后的分布Sy\mathbb S_y大量生成类别标签为y下的样本:

Dy={(x,y)xN(μ,Σ),(μ,Σ)Sy}(7)\mathbb{D}_{y}=\left\{(\boldsymbol{x}, y) \mid \boldsymbol{x} \sim \mathcal{N}(\boldsymbol{\mu}, \boldsymbol{\Sigma}), \forall(\boldsymbol{\mu}, \boldsymbol{\Sigma}) \in \mathbb{S}^{y}\right\}\tag 7

然后将生成的样本和原有的support集样本作为训练集合,利用交叉熵损失训练一个分类器:

=(x,y)S~Dy,yYTlogPr(yx;θ),(8)\ell=\sum_{(\boldsymbol{x}, y) \sim \tilde{S} \cup \mathbb{D}_{y, y \in \mathcal{Y}} \mathcal{T}}-\log \operatorname{Pr}(y \mid \boldsymbol{x} ; \theta),\tag 8

其中YT\mathcal Y^T表示任务T\mathcal T中的类别集合,S~\tilde S表示经过特征转换后的support集,θ\theta为分类器参数。

3. 实验

**数据集:**miniInamgeNet,tieredImageNet,CUB

**实验细节:**利用预训练好的WideResNet提取特征,用base classes训练特征提取器,novel classes测试特征提取器。具体超参数设置间原文。

3.1 实验结果

3.2 可视化

3.3 消融实验

  1. 将分布校正用于不同的特征提取器上

  2. DS消融

  3. 特征转换和样本生成的消融

  4. 特征转换和样本生成超参消融

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信