根据训练过程中是否有label来监督,机器学习被分为:
监督学习和无监督学习
。分类问题和回归问题是监督学习的代表,聚类学习是非监督学习的代表。
尽管当前监督学习技术已经取得了巨大的成功,但是由于数据标注过程的成本太高,很多任务很难获得如全部真值标签这样的强监督信息。
因此,延伸出了无监督学习,它的数据集中没有任何的label。此外,
自监督学习是一种特殊的无监督学习,它与传统的无监督学习区别如下:
-
自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。简而言之,
自监督学习是从数据本身找标签来进行有监督学习
。
-
与此不同,
无监督学习不依赖任何标签值
,没有标签拟合过程。它通过对数据内在特征的挖掘,找到样本间的关系,
从数据分布的角度来构造损失函数
。
-
自监督的代表是语言模型,无监督的代表是聚类
。
尽管如此,无监督学习由于学习过程太过困难,所以发展缓慢。在自然界中,数据也不可能一个标签没有,一般的情况是存在少数labeled data,和大量的unlabelled data。所以针对这种现实情况,在这两种学习范式之外有没有其他的学习范式?当然有,那就是弱监督学习。
弱监督学习指的是给定的数据有label,但是标签不全或不对
。根据给定label的情况,弱监督学习可以分为三种典型的监督类型:
不完全监督(Incomplete supervision),不确切监督(Inexact supervision),不精确监督(Inaccurate supervision)
。
-
不完全监督
:训练数据中只有一部分数据被给了标签,有一些数据是没有标签的。
-
不确切监督
:训练数据只给出了粗粒度标签。我们可以把输入想象成一个包,这个包里面有一些示例,我们只知道这个包的标签,Y或N,但是我们不知道每个示例的标签。
-
不精确监督
:给出的标签不总是正确的,比如本来应该是Y的标签被错误标记成了N。
用西瓜来举例,这三种弱监督情况如下所示:
针对这三种典型的弱监督情况,分别使用不同的技术去解决,如下图所示:
-
解决不完全监督:
主动学习
和
半监督学习
。一种是有人类(oracle,业务专家)干预的,一种是没有人类干预的。
-
解决不确切监督:多示例学习。
-
解决不精确监督:带噪学习。
重点讲一下半监督学习
。在不完全监督情况下,我们已知少量带标签的数据,比如一个数据是positive,另一个数据是negative,和大量未标注数据。现在在两个label data正中间有一个test data,如果只根据这两个labeled data,我们是很难去判断这个test data到底是positive 还是negative的。但是如果我们被允许去观察一些unlabeled data的分布,观察到的结果如下图右边部分的灰点,这时我们就可以较肯定的认为test data是positive。这种半监督学习的方式有些类似于聚类。
在机器学习中,“域(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时数据的标注情况)
-
Unsupervised Domain Adaptation(UDA)
-
在这种setting下,我们可以获取到目标域的数据,但是不能获取到对应的标签,即使用有标签的源域数据和无标签的目标域数据进行训练。
-
Semi-supervised Domain Adaptation
-
由于UDA的性能较差,也不符合实际的应用。在实际的应用中,目标域不会完全的没有标注,一般会有少量的标注。在SSDA的setting下,训练时可以获取到少量的目标域标签,常见的是每个类别获取3或5个标签。
-
Universal Domain Adaptation
-
Source-Free Domain Adaptation
-
在上面的setting中,训练过程是可以访问到源域数据的。但是在实际情况中,由于隐私原因(医疗数据不能公开)或者数据传输问题(数据集非常大,下表),我们并不能获取到源域数据,而只能获取到源域所训练好的模型。这个setting的目的就是只利用源模型来完成domain adaptation。
此外,域适应是迁移学习(Transfer Learning)的一个重要分支,迁移学习有很多种方法,常见的有以下几种:
-
领域适应(Domain Adaptation)
:见上述;
-
多任务学习(Multi-Task Learning)
:多任务学习指的是在多个相关任务之间共享知识和模型的过程,从而提高模型的泛化能力和效果。例如,在一个图像分类任务中,可以将人脸识别和物体检测作为相关的子任务,从而提高模型在不同任务上的性能。
-
学习对抗网络(Adversarial Learning)
:学习对抗网络是指通过对抗的方式来学习一个模型,主要应用于解决源域和目标域之间的差异问题,从而提高模型在目标域的性能。
-
预训练网络(Pre-trained Networks)
:预训练网络主要是指在其他数据集上训练好的网络,在新的任务上再进行微调或者迁移学习,从而加速训练过程和提高模型的性能。
-
神经架构搜索(Neural Architecture Search)
:神经架构搜索是指通过自动化搜索方法寻找最优的神经网络结构,从而减少人类专家参与的程度,提高机器学习的效率和效果。
-
迁移强化学习(Transfer Reinforcement Learning)
:迁移强化学习是指通过将已有的经验和知识应用到新的任务中,来提高强化学习算法在新任务上的性能
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更加注重模型的泛化能力和鲁棒性,它们在小样本学习中都扮演着重要的角色,可以根据实际任务和数据集情况选择适合的训练方式。
目前的小样本学习研究中,可以分为以下几类方法:
-
Mode Based:旨在通过模型结构的设计快速在少量样本上更新参数,直接建立输入 x 和预测值 P 的映射函数
-
Metric Based
:通过度量 query set 中的样本和 support set 中样本的距离,借助最近邻的思想完成分类
-
Optimization Based:认为普通的梯度下降方法难以在 few-shot 场景下拟合,因此通过调整优化方法来完成小样本分类的任务。
在更早期,还有:
-
聚类方法:将相似的样本聚类成同一类别,然后通过样本与类别之间的距离或相似度进行分类。
-
特征扩展方法:通过使用数据增强和特征扩展等技术来绕过小样本数据集的问题。
重点讲一下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。