【论文阅读】Meta-learning for semi-supervised few-shot classification

在这里插入图片描述

基于元学习的半监督小样本分类
引用:Ren, Mengye, et al. “Meta-learning for semi-supervised few-shot classification.” arXiv preprint arXiv:1803.00676 (2018).
论文地址:下载地址

Abstract

  在少样本分类(few-shot classification)中,我们关注的是从少量标注样本中学习分类器的算法。近年来,少样本分类的进展主要体现在元学习(meta-learning)方面,在元学习中,定义并训练了一个参数化的模型来表示学习算法,该模型在代表不同分类问题的训练集中进行训练,每个训练集包含少量的标注样本和相应的测试集。在本工作中,我们将这一少样本分类范式推进到一个新场景,其中每个训练集中还包含未标注的样本。我们考虑了两种情况:一种是所有未标注样本都假定属于与该训练集中标注样本相同的类别集合;另一种则是更具挑战性的情况,其中还提供了来自其他“干扰”类别的样本。为了解决这一范式,我们提出了对原型网络(Prototypical Networks)的新扩展,增强了其在生成原型时利用未标注样本的能力。这些模型在训练时采用端到端的方式,通过在每个训练集中学习,成功地利用未标注样本。我们在Omniglot和miniImageNet的版本上对这些方法进行了评估,这些版本经过了修改以适应这种新框架,其中包含了未标注样本。我们还提出了ImageNet的新划分,这个划分由大量类别组成,并且具有层次结构。实验结果表明,我们的原型网络能够通过未标注样本改善预测,类似于半监督学习算法的效果。

1 INTRODUCTION

  大规模标注数据的可用性使得深度学习方法在多个与人工智能相关的任务中取得了令人瞩目的突破,如语音识别、物体识别和机器翻译。然而,当前的深度学习方法在处理标注数据稀缺的问题时表现不佳。具体来说,虽然当前的方法在处理单一问题(具有大量标注数据)时表现出色,但缺乏能够同时解决多种具有少量标注的分类问题的方法。而人类则能够迅速学习新的类别,例如当我们访问热带国家时,能很快识别新的水果种类。这种人类与机器学习之间的显著差距为深度学习的发展提供了肥沃的土壤。

  因此,近年来出现了越来越多的关于少样本学习(few-shot learning)的研究,少样本学习旨在设计能够更好地泛化到具有小规模标注训练集问题的学习算法。在这里,我们重点讨论少样本分类问题,其中假设给定的分类问题每个类别只有少量标注样本。少样本学习的一种方法采用元学习(meta-learning)的方法,通过从大量可用标注数据生成的各种分类问题池进行迁移学习,应用到训练时未见过的类别的新分类问题中。元学习可以采取学习共享度量,为少样本分类器学习共同初始化。

  这些不同的元学习形式最近在少样本分类中取得了显著进展。然而,这些进展在每个少样本学习情境的设定中有所限制,这与人类学习新概念的方式在许多方面存在差异。本文旨在通过两种方式来概括这一设定。首先,我们考虑在存在额外未标注数据的情况下学习新类别的情境。虽然半监督学习在单一分类任务的常规设置中取得了许多成功应用,其中训练和测试时的类别相同,但这些工作并没有解决将学习迁移到训练时未见过的新类别的问题,这是我们在本文中所探讨的。其次,我们考虑学习新类别时,这些类别不是孤立地呈现。相反,许多未标注的样本来自不同的类别;这些“干扰”类别的存在为少样本问题引入了额外且更现实的难度。这项工作是首次研究这种具有挑战性的半监督少样本学习形式。

  首先,我们定义了这一问题并提出了适用于评估的基准,这些基准是从普通少样本学习中使用的Omniglot和miniImageNet基准中改编而来。我们对上述两种情境进行了广泛的实证研究,分别是有干扰类别和没有干扰类别的情况。其次,我们提出并研究了三种新型的原型网络扩展方法,将其应用到半监督情境中,原型网络是当前少样本学习的最先进方法。最后,我们在实验中证明了我们的半监督变体能够成功地利用未标注样本,并超越了纯监督的原型网络。

在这里插入图片描述
图 1:设定一个场景,其目标是学习一个分类器来区分两个先前未见过的类别(金鱼和鲨鱼),不仅有这两个类别的标注样本,还包含一个更大的未标注样本池,其中部分样本可能属于目标类别中的一个。在本研究中,我们旨在更接近这一更加自然的学习框架,通过在学习过程中引入来自目标类别(用虚线红色边框表示)的未标注数据,以及来自干扰类别的未标注数据。

2 BACKGROUND

  我们首先准确定义当前少样本学习的范式,以及原型网络(Prototypical Network)在解决这一问题中的方法。

2.1 FEW-SHOT LEARNING

  近期在少样本学习方面的进展得益于采用了一个基于情境(episodic)的方法。考虑一种情况,我们有一个大的标注数据集,包含类别集 C train C_{\text{train}} Ctrain。然而,在基于 C train C_{\text{train}} Ctrain 中的样本进行训练后,我们的最终目标是为一个不重叠的新类别集 C test C_{\text{test}} Ctest 生成分类器,对于这些新类别,只有少量标注样本可用。情境方法的核心思想是模拟测试时将遇到的少样本问题,充分利用 C train C_{\text{train}} Ctrain 类别的大量可用标注数据。

  具体来说,模型在 K-shot, N-way 的情境上进行训练,这些情境首先从 C train C_{\text{train}} Ctrain 中采样一个包含 N N N 类的小子集,然后生成:

  1. 一个训练(支持)集 S = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N × K , y N × K ) } S = \{(x_1, y_1), (x_2, y_2), \dots, (x_{N \times K}, y_{N \times K})\} S={(x1,y1),(x2,y2),,(xN×K,yN×K)},包含来自每个类别的 K K K 个样本;
  2. 一个测试(查询)集 Q = { ( x 1 ∗ , y 1 ∗ ) , ( x 2 ∗ , y 2 ∗ ) , … , ( x T ∗ , y T ∗ ) } Q = \{(x^*_1, y^*_1), (x^*_2, y^*_2), \dots, (x^*_T, y^*_T)\} Q={(x1,y1),(x2,y2),,(xT,yT)},其中包含来自同样 N N N 类的不同样本。

  每个 x i ∈ R D x_i \in \mathbb{R}^D xiRD 是一个维度为 D D D 的输入向量, y i ∈ { 1 , 2 , … , N } y_i \in \{1, 2, \dots, N\} yi{ 1,2,,N} 是类别标签(对 x i ∗ x^*_i xi y i ∗ y^*_i yi 也类似)。训练时,将支持集 S S S 输入模型,并更新模型参数,最小化模型在查询集 Q Q Q 中样本的预测误差。

  一种理解这种方法的方式是,我们的模型实际上是在训练成一个优秀的学习算法。事实上,和学习算法一样,模型必须接收一组标注样本,并生成一个可以应用到新样本的预测器。此外,训练直接促使模型产生的分类器在查询集的新的样本上具有良好的泛化能力。由于这个类比,这种方法的训练通常被称为“学习学习”或“元学习”(meta-learning)。

  另一方面,将情境中的内容称为训练集和测试集,并将这些情境的学习过程称为元学习或元训练(如某些文献中所做)可能会引起混淆。因此,为了清晰起见,我们将情境中的内容称为支持集和查询集,并将遍历训练情境的过程简单地称为训练。

2.2 PROTOTYPICAL NETWORKS

  原型网络是一个少样本学习模型,具有简单且取得最先进性能的优点。高层次上,它利用支持集 S S S 从每个类别中提取原型向量,并根据输入样本与每个类别原型的距离对查询集中的样本进行分类。

  更精确地说,原型网络学习一个嵌入函数 h ( x ) h(x) h(x),该函数是一个神经网络,用于将样本映射到一个空间,在该空间中,同一类别的样本彼此接近,而不同类别的样本则彼此远离。原型网络的所有参数都位于嵌入函数中。

  为了计算每个类别 c c c 的原型 p c p_c pc,执行对每个类别嵌入样本的平均操作:
p c = ∑ i h ( x i ) z i , c ∑ i z i , c z i , c = 1 [ y i = c ] (1) p_c = \frac{\sum_i h(x_i) z_{i,c}}{\sum_i z_{i,c}} z_{i,c} = 1[y_i = c] \tag{1} pc=izi,cih(xi)zi,czi,c=1[yi=c](1)

这些原型定义了对任何新(查询)样本 x ∗ x^* x 的预测器,该预测器根据样本 x ∗ x^* x 与每个原型之间的距离,为每个类别 c c c 分配一个概率,如下所示:

仅给定的三条引用内容未涉及“基于原型的伪标签细化方法用于半监督高光谱图像分类”以及 “Prototype-based pseudo-label refinement for semi-supervised hyperspectral image classification” 的相关信息,无法依据这些引用准确回答。不过,一般而言,在半监督高光谱图像分类里,基于原型的伪标签细化方法会先利用少量有标签样本构建原型,这些原型代表不同的类别特征。接着,用这些原型为无标签样本生成伪标签。之后,通过一系列细化操作来提升伪标签的质量,例如考虑局部上下文信息、特征相似性等。 伪代码示例(仅为概念示意): ```python # 假设 hyperspectral_data 是高光谱图像数据, labeled_indices 是有标签样本的索引, labels 是对应标签 import numpy as np def prototype_based_pseudo_label_refinement(hyperspectral_data, labeled_indices, labels): # 构建原型 prototypes = [] unique_labels = np.unique(labels) for label in unique_labels: label_indices = np.where(labels == label)[0] prototype = np.mean(hyperspectral_data[labeled_indices[label_indices]], axis=0) prototypes.append(prototype) # 为无标签样本生成伪标签 unlabeled_indices = np.setdiff1d(np.arange(len(hyperspectral_data)), labeled_indices) pseudo_labels = [] for idx in unlabeled_indices: distances = [np.linalg.norm(hyperspectral_data[idx] - proto) for proto in prototypes] pseudo_label = np.argmin(distances) pseudo_labels.append(pseudo_label) # 伪标签细化(简单示例:基于局部上下文) refined_pseudo_labels = [] for i, idx in enumerate(unlabeled_indices): # 这里简单假设周围 3 个样本作为局部上下文 local_indices = get_local_indices(idx, hyperspectral_data.shape) local_pseudo_labels = [pseudo_labels[np.where(unlabeled_indices == local_idx)[0][0]] for local_idx in local_indices if local_idx in unlabeled_indices] if len(local_pseudo_labels) > 0: most_common_label = np.bincount(local_pseudo_labels).argmax() refined_pseudo_labels.append(most_common_label) else: refined_pseudo_labels.append(pseudo_labels[i]) return refined_pseudo_labels def get_local_indices(idx, shape): # 获取周围 3 个样本的索引 rows, cols = shape[:2] row, col = np.unravel_index(idx, (rows, cols)) local_indices = [] if row > 0: local_indices.append(np.ravel_multi_index((row - 1, col), (rows, cols))) if row < rows - 1: local_indices.append(np.ravel_multi_index((row + 1, col), (rows, cols))) if col > 0: local_indices.append(np.ravel_multi_index((row, col - 1), (rows, cols))) if col < cols - 1: local_indices.append(np.ravel_multi_index((row, col + 1), (rows, cols))) return local_indices ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值