Python元学习:通用人工智能的实现
上QQ阅读APP看书,第一时间看更新

1.1 元学习

元学习是目前人工智能领域中一个令人振奋的研究方向。随着大量研究论文的发表和研究进展的取得,元学习在人工智能领域取得了重大突破。在开始探讨元学习之前,先来了解一下当前的人工智能模型的工作原理。

近年来,随着生成对抗网络和胶囊网络等优秀算法的出现,深度学习得到了快速的发展。但问题是,深度神经网络需要大规模的训练集来训练模型。当数据点很少时,它会突然失效。假设我们训练了一个深度学习模型来执行任务A。当我们有一个和A紧密相关的新任务B时,就不能使用相同的模型,而是需要从零开始为任务B训练模型。因此,虽然每个任务可能是相关的,但都需要从零开始训练模型。

深度学习真的是真正的人工智能吗?答案是否定的。我们人类是如何学习的呢?我们将学到的东西归纳为多个概念并从中学习。不过目前的学习算法只能处理一项任务。这就是元学习的用武之地。元学习能够生成一个通用的人工智能模型来学习执行各种任务,而无须从零开始训练它们。我们可以用很少的数据点来训练元学习模型去完成各种相关的任务,因此对于一个新任务,元学习模型可以利用之前从相关任务中获得的知识,无须从零开始训练。许多研究人员和科学家认为,元学习可以让我们更接近AGI。接下来的几节将阐释元学习模型如何学会学习的过程。

元学习与少样本学习

少样本学习(few-shot learning)或k样本学习k-shot learning)指的是利用较少的数据点进行学习,其中k表示数据集各个类别中数据点的数量。假设我们正在对狗和猫的图像进行分类。如果只有1张狗的图像和1张猫的图像,那就叫作单样本学习(one-shot learning)。也就是说,对于每个类别,我们只从1个数据点学习。如果有10张狗的图像和10张猫的图像,那就叫作10样本学习。因此,k样本学习中的k表示每个类别中数据点的数量。还有一种零样本学习(zero-shot learning),即所有类别中都没有数据点。等等,如果没有数据点,那可怎么学习呢?在这种情况下,我们虽然没有数据点,但是拥有关于每个类别的元信息,并将从中学习。因为数据集中有两个类别,即狗和猫,所以可以称之为双(n = 2)类别k样本学习——n表示数据集中类别的数量。

为了使模型从少量的数据点中学习,我们将用同样的方法训练它们。因此,当有一个数据集D时,我们从数据集中的每个类别中挑选几个数据点,称之为支撑集(support set)。同样,从每个类别中挑选一些不同的数据点,称之为查询集(query set)。于是,我们用一个支撑集训练模型,并用查询集来测试模型。我们以一种阶段式的方式(episodic fashion)训练模型,即在每个阶段中,从数据集D中抽取少量数据点,准备支撑集和查询集,并使用支撑集进行训练,使用查询集进行测试。因此,在多个阶段后,模型将学会如何从较小的数据集中学习。接下来的章节会对此进行更详细的探讨。