概念深奥看不懂?一文读懂元学习原理

巴黎人网上赌场

这个概念是深奥的,无法理解?阅读文本中的元学习原理

来自fastforwardlabs

作者:Shioulin和Nisha

据说元学习是一种学习如何学习的方式,那么它与一般机器学习有什么区别?从学习任务到学习大量任务,本文将回答您想要了解的元学习原则。

从针对移动应用的内容推荐到暗物质,机器学习算法改变了人们的生活和工作方式。然而,传统的机器学习算法严重依赖于特定的注释数据,这在某种程度上限制了某些场景中的应用。

最近,一些研究提出了解决方案,例如使用预训练模型的迁移学习。但是,在某些情况下,缺乏可提供预培训的原始数据。场景中的数据可能与用于预训练的数据不同。单一类别中的样本也可能太少,例如罕见疾病的诊断或稀有物种的分类。等待。因此,许多研究人员已经开始关注Meta-Learning算法,它可以在极少数样本的情况下解决模型训练问题。这种新方法被认为是迈向一般人工智能的重要一步。

本文是一个元学习原则扫盲博客。作者通过一个简单的图像分类案例介绍了元学习背后的逻辑。感兴趣的朋友可以通过本文在概念上理解元学习和传统的机器学习算法。不同。

什么是元学习?

主动学习可以帮助我们更智能地创建特定数据的标签。如果正确应用此技术,则可以使用比正常模型更少的数据来训练它。在元学习领域,我们不再关心获取标签。相比之下,我们试图让机器从少量数据中学得更快。

79fc79f7fb36492c93e6a65b50e0ac08.png

图1:元学习的概念框架。元学习从大量任务中训练模型,并在少量数据的新任务中学得更快。

培训元学习者需要学习者和培训师。学习者(模型)的目标是使用少量数据快速学习新任务。因此,学习者有时被称为快速学习者。这里的“任务”是指任何监督学习问题,例如预测少量样本的类别。可以使用元学习者对该学习者进行培训,以学习各种其他类型的任务。学习过程主要是元学习者不断向学习者展示数百个任务,最后学习者学习许多任务的知识。学习之后,有两个阶段:第一阶段的重点是从每项任务中快速获取知识;在第二阶段(学习者),它慢慢地从所有任务中获取信息并对其进行消化。

让我们举一个例子来说明。例如,我们的目标是训练一个分类器,将图片分为4类(猫,熊,鱼和鸟),但每个类别只有少量标记数据。为了实现这一目标,我们首先定义一个学习者,其目标是预测两类问题,每个类别只有三个样本。然后我们定义一个元学习者,其作用是向学习者呈现任何两个类别的样本组合,每个类别只有三个样本。

一般深度学习将大量注释数据划分为不同的批次。元学习的训练数据以集合的形式表示。首先,我们需要一组样本或“支持集”,它由一些属于样本子集的图像组成。例如,在我们的例子中,支持集应包括三只猫和三只熊的图片。我们还需要指定分类图像,这些图像形成“目标集”。在我们的例子中,目标集应该是一些猫或熊的图片。支持集和目标集合在一起形成训练集。元学习者学习各种训练集并将其呈现给训练集中的学习者。学习者的工作是尝试正确地对每个训练集中的目标集的图像进行分类。

c956fefe58954f9e9349c3d64f53b6bb.jpeg

图2:元学习的训练集。在该示例中,需要对猫,熊,鱼和鸟类的总共四种类型的图片进行分类,但是每次构建训练集时,仅使用这些类别的子集,并且训练集被分成支持集和目标集。第一套训练集的支持设置是猫和鱼的照片(3张),目标集是每只鱼和猫的图片,所有这些都需要进行分类。在第二次训练中,猫和熊的照片被用作支撑组,目标组也是猫和熊的照片。多种类型的训练集(猫+鱼,猫+熊,熊+鱼)的组合不仅使快速学习者能够学习每个子集的分类,而且还允许它提取类别之间的共性和特征。

元学习领域中的论文通常使用k和N,k来表示快速学习者学习的机会,N表示需要被分类的快速学习者的数量。在我们的例子中,N=2,k=3,表明这是一个双向三镜头元学习设置。

聪明的读者可能已经意识到,虽然我们的目标是训练可以区分四个类别的分类器(猫,熊,鱼和鸟),但每个训练集只有两个类别,这是元学习的一个特征。元学习培训过程最初由Oriol 件必须匹配的原则。

我们不能同时向快速学习者显示所有类别的原因是因为当我们仅在几个类别中显示几个图像时,我们希望模型正确地预测结果(在推理的情况下)。此外,并非所有类别都用于训练集。在我们的例子中,我们可能只使用三个类别,并希望模型可以准确地预测最后一个类别。元学习者可以这样做,因为它可以被训练并推广到其他数据集。每次只向快速学习者提供训练集的数据时,它只能获得所有类别的一小部分。元学习者多次遍历训练集,为每个快速学习者提供不同的子集。最后,快速学习者不仅可以快速对每个小子集进行分类,还可以从所有类别中提取它们的共性和各自的特征。

分类相似

如果我们有一些样本图像并需要对新图像进行分类,我们会本能地比较新图像和样本,寻找与新图像最相似的样本,并使用此样本的类别作为新图像的类别。为了对新(目标)图像进行分类,基于现有样本(支持集),首先查找与新图像最相似的样本,然后使用样本的类别进行预测。

在匹配网络中,图像被转换为嵌入向量,其可以被认为是一组特征(线和边)或图像的密集表示。匹配网络的目标是找到与转换为嵌入向量的图像最相似的支持集图像标记。

814f895954d74afbbd7eb81296ec268f.jpeg

图3:匹配网络的工作原理。集合中有三种类型的狮子,大象和狗,并且要分类的图像类别是未知的。通过嵌入函数将每个类别(狮子,大象,狗和未知图片)转换为嵌入向量,并且使用诸如Softmax的关系函数来计算已知分类和未知分类之间的相似性。图片由Hands on Meta Learning with Python提供,第4章。

内部代表

实际上,先前的方法利用嵌入的距离矢量来比较新图像和支持集中的样本图像。该模型允许我们从概率的角度在新图像和现有样本图像之间建立连接。在训练之后,我们获得了图像表示(通过嵌入矢量),其捕获图像中捕获的特征和共性。这说明了基于少量训练数据快速训练机器的另一种方法。

我们首先寻找可以轻松适应新任务的内部表示,因此模型可以基于少量数据点快速适应新任务。在深度学习的背景下,内部表示可以被视为神经网络的一组参数。良好的内部表示可以广泛适应各种任务。微调表示可以使模型在新任务中运行良好,并且这些调整通常出现在迁移学习中。在使用迁移学习的特征提取示例中,训练网络仅需要使用少量新数据点并且仅调整网络的最后一层的权重。也可以使用新的数据点重新训练整个模型(或参数),这个过程也称为微调。

但这个神奇的内部表现来自哪里?在迁移学习中,该表示由预训练的神经网络在大量数据中训练。在初始化之后,新的小数据集将重新训练神经网络,作为整体或部分(仅最后一层)。获得此表示的另一种方法是使用一组初始神经网络参数(请参阅链接:使用正确的参数初始化网络时,可以使用少量新数据快速轻松地进行调整。这意味着初始神经网络参数集可能对新任务非常敏感,并且小参数变化将极大地改善任何任务上的损失函数的性能。

e4fea894c17e4d4591f2254db51521f4.jpeg

图4:不同任务的损失函数的梯度。当初始化理想神经网络时,损失函数的梯度根据新任务而变化。

这种方法的基本思想是我们首先训练具有初始参数的模型,使用eposide数据进行新任务的训练。在训练中,初始参数会更新。该模型的目标是找到一组初始参数,这些参数在评估新任务时可以在使用新参数时减少损失。

这个想法受到迁移学习的启发,但迁移学习需要一定数量的数据集,因此它对于非常小的数据集或与预训练数据非常不同的数据集不是非常有效。元学习中的优化策略是优化一组初始参数,或者优化可以快速完成每项任务的模型,并尝试使用系统方法在各种任务中学习非常好的初始化。参数。

元学习被认为是可行的,因为它考察了如何从有限标记的数据中学习,尽管元学习需要不同的数据组合模式。在传统的机器学习问题中,我们专注于在一个类别中获取大量样本。在元学习中,我们的重点已转移到收集多种任务。间接,这意味着我们需要从许多不同的类别中收集数据。

在我们的例子中,我们使用了四个类别(猫,熊,鱼和鸟),并定义了一个案例,我们在每个类别只提供三个样本的情况下进行了两次分类。这提供了六个不同的任务(四个中的两个),这显然是不够的。因此,在元学习中,虽然我们不需要大量的猫样,但我们确实需要大量不同种类的动物样本。此外,在推论中,还需要构建支持集和目标集,这是不同的数据要求(或限制)。

在许多情况下,这个成本相对较高,即使在研究中,数据集也只能限于Omniglot和miniImagenet。 Omniglot数据集共有1,623个手写字母,每个字母有20个样本。在miniImagenet数据集中,ImageNet有100个数据集,每个数据集有600个样本。

元学习是一个快速发展的领域,但它不是由单一算法支配。目前最可行的算法之一似乎是基于优化:这些方法来自迁移学习,可以快速采用。我们希望在相关算法成熟后,元学习可以更加重要(在现场),特别是在商品分类或稀有疾病的分类中。在这些任务中,数据分布在多个类别中,但每个类别可能只有少量样本。

,了解更多

原文地址:

从零开始,了解元学习(使用Pytorch代码):

使用Python进行Meta学习:

这是Github上的一个元学习Python教程,介绍了包括Siamese,Prototype Network,Matching Network,Model Agnostic Meta Learning以及Kears或Tensroflow的具体实现在内的原则。