赞
踩
根据训练过程中是否有label来监督,机器学习被分为:监督学习和无监督学习。分类问题和回归问题是监督学习的代表,聚类学习是非监督学习的代表。
尽管当前监督学习技术已经取得了巨大的成功,但是由于数据标注过程的成本太高,很多任务很难获得如全部真值标签这样的强监督信息。
因此,延伸出了无监督学习,它的数据集中没有任何的label。此外,自监督学习是一种特殊的无监督学习,它与传统的无监督学习区别如下:
尽管如此,无监督学习由于学习过程太过困难,所以发展缓慢。在自然界中,数据也不可能一个标签没有,一般的情况是存在少数labeled data,和大量的unlabelled data。所以针对这种现实情况,在这两种学习范式之外有没有其他的学习范式?当然有,那就是弱监督学习。
弱监督学习指的是给定的数据有label,但是标签不全或不对。根据给定label的情况,弱监督学习可以分为三种典型的监督类型:不完全监督(Incomplete supervision),不确切监督(Inexact supervision),不精确监督(Inaccurate supervision)。
用西瓜来举例,这三种弱监督情况如下所示:
针对这三种典型的弱监督情况,分别使用不同的技术去解决,如下图所示:
重点讲一下半监督学习。在不完全监督情况下,我们已知少量带标签的数据,比如一个数据是positive,另一个数据是negative,和大量未标注数据。现在在两个label data正中间有一个test data,如果只根据这两个labeled data,我们是很难去判断这个test data到底是positive 还是negative的。但是如果我们被允许去观察一些unlabeled data的分布,观察到的结果如下图右边部分的灰点,这时我们就可以较肯定的认为test data是positive。这种半监督学习的方式有些类似于聚类。
参考:浅谈弱监督学习(Weakly Supervised Learning)、《A Brief Introduction to Weakly Supervised Learning》
在机器学习中,“域(domain)”通常指的是在训练或测试机器学习模型期间遇到的特定数据分布(distribution)。我们称训练集所在的域叫做Source Domain(源域),测试集所在的域叫做Target Domain(目标域)。以图像分类为例,不同的域可能对应不同类型的图像,例如照片、素描或卡通。
Domain shift/gap(域偏移/域间隙,DS) 指的是Source Domain和Target Domain的分布存在差异,导致Source Domain上训练的模型在Target Domain中性能下降的问题。解决域偏移是机器学习的一个重要问题,因为模型需要在new或unseen的数据上良好的执行。
域适应 (Domain Adaptation,DA) 和域泛化 (Domain Generalization,DG) 是解决域偏移问题的两种方法。
域适应可以看作是 transfer learning的变体,对于一个source-trained model,DA希望使用来自Target Domain的 sparse(少量带标签) 或 unlabelled data来修正或微调这个模型。这个微调的过程叫做Adaptation,相当于对在Source Domain上已经训练好的模型,使用Target Domain中的一些数据进行modify(or, finetuning),从而使模型能够适应新的领域,克服DS问题。
域泛化指的是在Source Domain上训练的模型足够鲁棒,以至于面对一个新的domain,无需adaption就可以实现良好的性能。
**总之, DA 和 DG 都旨在解决机器学习中的域偏移问题,但它们的区别是DG无需Adaption就可以实现良好的性能。**在实现DA或DG的过程中,可以用监督学习、无监督学习或弱监督学习。
根据data的标注情况,域适应还分为以下几种:(就是Adaption时数据的标注情况)
此外,域适应是迁移学习(Transfer Learning)的一个重要分支,迁移学习有很多种方法,常见的有以下几种:
人类非常擅长通过极少量的样本识别一个新物体,比如小孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。在人类的快速学习能力的启发下,研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习,这就是 Few-shot Learning 要解决的问题。
小样本学习的方法包括迁移学习、元学习、数据增强、半监督学习、主动学习等,这些方法可以降低模型对数据量的依赖,提高泛化性能,使得模型在处理长尾数据时具有更好的鲁棒性。(Few-shot Learning 是 Meta Learning 在监督学习领域的应用。)
在meta leanring中,一个task包含support set和query set,为N-way K-shot。同时task分为traning task和testing task。Tranining task是用来训练模型的,testing task用来测试。无论traning task还是testing task,其组成是一致的。
在few-shot leanring中,support set和query set采取的也是这种机制。
N-way K-shot是few-shot learning中常见的实验设置。
首先将整体数据集划分为训练集和数据集。在每次训练的时候,类似于pytorch中的Dataloader抽取出一批类别(N个),这就是N-way,指一批数据中有N个类别。然后对着N个类别,我们需要构造support set和query set,因此将每一个类别的K个labeled data作为support set,这个就是K-shot。再从剩下的unlabelled data随机抽出来一部分,作为query set。
这样定义的数据集,要求模型从N*K个labeled data中学会如何区分这N个类别,因此这样的任务被称为N-way K-shot问题。
Batch-Support和Episodic Training都是将每个类别划分为Support Set和Query Set,但它们的训练方式和数据集划分方式不同。
Episodic Training则是针对更加严格的小样本学习任务而设计的一种训练方式。Episodic Training将数据集划分为若干episode,每个episode仅包含若干个类别的Support Set和Query Set,不同episode之间的数据是独立的。每个episode进行一次前向传播和梯度更新。Episodic Training更加适用于数据集较小的情况,可以更充分地利用每个样本数据,从而提高模型泛化能力和鲁棒性。一个episode,就是选择几个类,然后对于选择的每个类再选择support set和query set,用选择的某几个类的support set和query set训练一次模型。下一个episode,再选择其他几个类,然后在选择support set和query set训练模型。一个epoch中存在多个eposide。
而Batch-Support是针对小样本学习中的一个训练技巧,主要是为了提高计算效率和减小过拟合风险。Batch-Support将数据集划分为若干batch,每个batch包含多个类别的Support Set和Query Set,同一个batch中的数据共享参数权重,每个batch进行一次前向传播和梯度更新。Batch-Support更加适用于数据集较大的情况,可以在每个batch中随机选择类别,从而提高训练效率。
总的来说,Batch-Support更加注重计算效率和过拟合的控制,而Episodic Training更加注重模型的泛化能力和鲁棒性,它们在小样本学习中都扮演着重要的角色,可以根据实际任务和数据集情况选择适合的训练方式。
目前的小样本学习研究中,可以分为以下几类方法:
在更早期,还有:
重点讲一下metric-based方法,这类方法比较主流且有潜力。匹配网络(Match-Network)、原型网络(Prototype Network)、关系(Relation Network)都属于这一类方法。
先来讲一下度量学习(metric learning)的定义:
度量学习是指在机器学习中,通过学习一个映射函数,将输入的数据映射到一个特征空间,并在该特征空间中定义一个距离函数来度量数据点之间的相似性或距离。 度量学习一般适用于无监督学习或半监督学习中,通常通过度量相似性来解决聚类、分类、回归等问题。度量学习的主要目的是通过学习合适的距离或相似度函数,使得同类样本更加接近,异类样本更加分散。在很多应用中,如人脸识别、图像检索、推荐系统等,度量学习都能够取得很好的效果。
常见的度量学习方法包括最近邻(KNN)、局部线性嵌入学习(LLE)、流形学习(Manifold Learning)、对比学习(Contrastive Learning)、三元组损失(Triplet Loss)等。在实际应用中,如何选择适合问题的度量学习算法以及调整度量学习算法的参数,是一个关键的问题。
再来分别介绍metric-based的三种方法:
匹配网络(Match Network):为 support set 和 query set 构建不同的编码器,最终分类器的输出是support set样本和 query set中样本之间预测值的加权求和。这种思想其实就是attention的方式,看与哪种类别的相似度更高。比如下图中的基于 memory 和 attention 的 matching nets。
原型网络(Prototype Network):每个类别都存在一个原型表达,该类的原型是 support set 在 embedding 空间中的均值。然后,分类问题变成在 embedding 空间中的最近邻。如下图所示,c1、c2、c3 分别是三个类别的均值中心(称 Prototype),将测试样本 x 进行 embedding 后,与这 3 个中心进行距离计算,从而获得 x 的类别。
关系网络(Relation Network):认为度量方式也是网络中非常重要的一环,需要对其进行建模,所以该网络不满足单一且固定的距离度量方式,而是训练一个网络来学习(例如 CNN)距离的度量方式,在 loss 方面也有所改变,考虑到 relation network 更多的关注 relation score,更像一种回归,而非 0/1 分类,所以使用了 MSE 取代了 cross-entropy。
长尾分布通常指由一个小部分高频数据和一个大部分低频数据组成的概率分布。在许多真实世界的数据集中,都存在大量的长尾分布数据。小样本学习是处理长尾数据的有效方法。
先回顾机器学习,它可以分为三个步骤: 先定义一个参数未知的function,然后定义一个关于θ的loss function, 最后要做的就是优化,找一个
θ
∗
\theta^*
θ∗使得
L
(
θ
)
L(\theta)
L(θ)越小越好。
回顾了machine-learning的步骤之后,再来理解 meta-learning。因为整体上,meta-learning与machine-learning的框架很相似,都可以分为“定义函数、设计损失、进行优化”这三步。
那Meta-learning要做的是什么呢? 学习如何学习。meta-learning要做的就是学习“如何学习”这个过程,它手工定义了一个函数
F
F
F(其实就是一个学习算法),这个函数表示的意思就是"如何学习"这个过程,所以它的输入是训练资料,输出是机器学习中的预测函数
f
f
f。
因此,在meta-learning中,我们要做的就是学习一个“学习算法F”,它的输入是data,输出是预测函数 f ,最后再用输出函数 f 做预测。就是说我们的学习目标从“预测函数 f ”转换为了“学习算法F”。
做了这样的定义后,就相当于机器学习的第一个步骤“定义参数未知的函数”。定义好函数后,那接下来要做的就是为这个函数定义一个损失函数,进一步的再优化。
那在这个“学习算法F”中,有什么东西是需要学习的呢?它们可以是:网络架构、初始化参数、学习率等,被统称为learnable components。 其实,不同类别的meta-learning方法,就是学习不同的learnable components。
虽然meta-learning与machine-learning的宏观架构相同,但是在训练细节上仍有区别。machine-learning的数据集是一批data,被分为training data,testing data。与此不同,meta-learning是task-level,它的整个数据集是一批tasks,进一步地被分为training tasks,testing tasks。每个task中都包含了一批data,被分为train set和test set,为了避免歧义,我们一般称为 support set 和 query set。
为什么要这么做?是因为我们要去评判训练后的学习算法
F
ϕ
F_\phi
Fϕ的效果是好是坏,需要拿学习到的预测函数
f
f
f的预测效果来间接性衡量,
f
f
f的预测效果好,就证明学习算法
F
ϕ
F_\phi
Fϕ的效果好,
f
f
f的预测效果差,就证明学习算法
F
ϕ
F_\phi
Fϕ的效果差。为了衡量学习算法
F
ϕ
F_\phi
Fϕ,也就是定义loss function,我们在meta-learning的训练数据中,也要有供学习
F
ϕ
F_\phi
Fϕ的training examples,和供测试学到函数
f
f
f效果的testing examples,所以才将整个数据集划分成这样。
此外,以分类问题而言,Meta-learning的目的是不仅学会水果的分类,还要学会其他的分类,比如车子的分类,总的来讲就是Meta-learning要学会如何得到分类器这件事。因此在同一个task domain下,需要使Meta-learning在该task domain上的很多任务上训练,这样才能使Meta-learning在任何物体上都能实现分类,所以Meta-learning的训练样本是各种任务的分类,这也是为什么说Meta-learning是task-level。
定义好函数,设计好loss之后,剩下的就是优化了。假设上述的损失函数对
ϕ
\phi
ϕ可微分,则可以用梯度下降来优化,如果不可微分,则可以用强化学习或演化算法等来优化。总之,对上述损失函数进行优化后,就可以得到一个学习算法
F
ϕ
F_\phi
Fϕ。
到此,Meta-learning的整体框架总结如下:
从这里其实就能看出,few-shot learning是meta-learning的应用,两者还是有着微妙的区别。few-shot learning有点像我们要实现的目标,只需要一点样本的监督,就可以让模型有不错的性能。而meta-learning是学习如何学习这件事,训练完后的meta-learning在testing task上,给定一点点labeled data来训练,就可以在test data上有不错的性能,这样算是实现了few-shot learning。或者说,few-shot learning的algorithm,可以用meta-learning得到。
讲了这么多,meta-learning与machine-learning的区别到底是什么?
在以MAML为主的 “learning to initialize” 文献中,称 across-task training 为 outer loop,称 within-task training 为 inner loop。
了解完meta-learning后,我们知道它可以用来学习很多东西, 但用的比较多的 meta-learning 方式是 “learning to initialize” ,就是用 meta-learning 来学习一个比较好的初始化参数,因为我们知道初始化参数对模型的影响是较大的。好的初始参数能够提高模型收敛速度,并且更加接近最优解;而不好的初始参数会导致梯度传播异常,降低训练速度,影响训练效果。这类工作中,最有代表性的就是本篇文章,简称MAML(此外还有一个MAML的变体,叫Reptile)。
MAML其实与Self-supervised learning异曲同工,他们的目标都是寻找一个好的初始化参数,他们其实都是为了 fast adaptation。MAML的核心思想是:通过少量的数据寻找一个合适的初始值范围,使得模型能够在有限的数据集上快速拟合,并获得一个不错的效果。这个方法的优点在于,无论是什么样的损失函数,无论是什么样的网络结构,都可以轻松实现适配,所以MAML更像是一个基于元学习的预训练框架。
MAML的伪代码如下:
首先看两个Require:
再来看算法的每一步:
MAML真正好在哪里?ICLR‘2020有篇文章对其进行了解释《Rapid learning or feature reuse? towards understanding the effectiveness of maml》,结果是好在了Feature reused上。
除了像MAML一样学习初始化,meta-learning还可以学习网络结构、优化器等,这些不在这里展开。
参考:(强推)李宏毅2021/2022春机器学习课程,Model-Agnostic Meta-Learning (MAML)模型介绍及算法详解
多任务学习与元学习的区别:
Meta Learning,也称为Learning to Learn,即学会学习,它的目的就是学会某种学习的技巧,从而在新的任务task上可以学的又快又好。这种学习的技巧我们可以称为Meta-knowledge。
Meta learning是一个通用性的方法论,可以对几乎任意的可调整参数进行meta learning。在这篇综述中作者对Meta Learning按照是什么(What,Meta-Representation),怎么做(How,Meta-Optimizer),**为什么(Why, Objective)**来分类。
Meta learning的第一大应用就是few-shot learning(FSL)了。FSL是一个挑战性的任务,数据量通常是影响性能的主要因素,用小数据集训练大模型会导致过拟合或不收敛。
分类:Meta learning最常见的应用就是few-shot multi-class image recognition,其中内、外loss一般是在训练、验证集上的cross-entropy。在这类工作中,Optimizer-centric, black-box, 和metric learning模型也有涉及到。与早期的方法相比,这一类工作已经导致了性能的稳步提高,但性能仍然远远落后于完全监督的方法,所以还有更多的工作要做。目前的研究问题包括改进跨域泛化,在由元元素和元测试类定义的联合标签空间内的识别,以及增量添加新的少镜头类。
除了分类外,应用Meta learning的FSL应用还有:关键点预测、目标检测、目标分割、行为识别、图像和视频生成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。