zoukankan      html  css  js  c++  java
  • Meta Networks

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!

    ICML, (2017)

    Abstract

      神经网络已成功应用于带有大量标记数据的应用中。然而,在训练数据较少的情况下对新概念进行快速概括,同时保留先前学到的性能的任务仍然对神经网络模型提出了重大挑战。在这项工作中,我们介绍了一种新颖的元学习方法,即元网络(MetaNet),该方法可跨任务学习元知识,并通过快速参数化来转变其归纳偏差,以实现快速概括。在Omniglot和Mini-ImageNet基准测试中进行评估时,我们的MetaNet模型可达到接近人类水平的性能,并且以高达6%的精度优于基准方法。我们展示了与泛化和连续学习有关的MetaNet的几个吸引人的特性。

    1. Introduction

      当大量标记数据可用于训练时,深度神经网络已在多个应用领域中取得了巨大成功。但是,在大多数学习任务中,获得如此大的训练数据通常是先决条件。此外,标准的深度神经网络缺乏在不忘记或破坏先前学习的模式的情况下,连续学习或增量学习新概念的能力。相反,人类可以从相同概念的一些示例中快速学习和概括。人类也非常擅长增量(即连续)学习。这些能力大部分是通过元学习(即学会学习)来解释的(Harlow, 1949)。

      先前有关元学习的工作将问题描述为两级学习,对跨任务执行的元级模型的慢速学习以及对在每个任务中起作用的基级模型的快速学习(Mitchell et al., 1993; Vilalta&Drissi, 2002)。元级学习器的目标是获得不同任务的一般知识。然后,可以将知识转移给基级学习器,以在单个任务的上下文中提供概括。基级和元级模型可以构造为单个学习器(Schmidhuber, 1987)或分离的学习器(Bengio et al., 1990; Hochreiter et al., 2001)。

      在这项工作中,我们介绍了一种称为MetaNet(用于元网络)的元学习模型,该模型通过允许神经网络动态地从单个示例中学习和概括新任务或概念来支持元级连续学习。MetaNet的总体结构如图1所示。MetaNet由两个主要的学习组件组成,即基学习器和元学习器,并配备了外部存储器。学习在不同的空间(即元空间和任务空间)中的两个级别进行。基学习器在输入任务空间中执行,而元学习器在与任务无关的元空间中操作。通过在抽象元空间中进行操作,元学习器支持连续学习并跨不同任务执行元知识获取。为此,基学习器首先分析输入任务。然后,基学习器以较高阶元信息的形式向元学习器提供反馈,以解释其在当前任务空间中的状态。基于元信息,元学习器可以快速参数化自身和基学习器的参数,以便MetaNet模型可以识别输入任务的新概念。具体来说,MetaNet的训练权重在不同的时间尺度上发展:通过学习算法(即REINFORCE)更新标准慢速权重,在每个任务的范围内更新任务级快速权重,并对于特定的输入示例更新示例级快速权重。最终,配备有外部存储器的MetaNet允许快速学习和概括。

      在MetaNet框架下,定义可以从学习者那里获得的元信息的类型非常重要。尽管元信息的其他表征也适用,但我们使用损失梯度作为元信息。MetaNet具有两种类型的损失函数,它们具有不同的目标:为良好表征学习器标准定义的表征(即嵌入)损失和用于输入任务目标的主要(任务)损失。

      我们在几种不同的设置下,广泛研究了MetaNet在one-shot监督学习(SL)问题上的性能和特点。我们提出的方法不仅改进了标准基准测试的最新结果,而且还显示了一些与泛化和连续学习有关的有趣特性。

    2. Related Work

    (省略)

      最后,我们注意到配备外部存储器的MetaNet可以看作是存储器增强神经网络(MANN)。从小的程序设计问题(Graves et al., 2014)到大规模语言任务(Weston et al., 2015; Sukhbaatar et al., 2015; Munkhdalai&Yu, 2017),MANN在一系列任务上都显示出令人鼓舞的结果。

    3. Meta Networks

      MetaNet通过处理更高阶的元信息来学习快速参数化基础神经网络,以进行快速概括,从而产生一个灵活的AI模型,该模型可以适应具有可能不同的输入和输出分布的一系列任务。该模型包括两个主要的学习模块(图1)。元学习器负责通过跨任务进行操作来生成快速权重,而基学习器则通过捕获任务目标来执行每个任务。生成的快速权重被集成到基学习器和元学习器中,以改变学习器的归纳偏差。我们提出了一种新颖的层增强方法,以将标准的慢速权重与任务或示例特定的快速权重集成到神经网络中。

      为了训练MetaNet,我们采用了Vinyals et al. (2016)的任务制定程序。我们形成一个任务序列,其中每个任务都包含一个支持集和一个训练集。类标签对于同一任务的支持集和训练集都是一致的,但是在不同的任务之间会有所不同。总体而言,MetaNet的训练包括三个主要过程:元数据的获取,快速权重的生成和慢速权重的优化,由基学习器和元学习器共同执行。算法1中描述了MetaNet的训练。

      为了测试one-shot SL的模型,我们从具有未知类的测试数据集中采样了另一个序列任务。然后,部署模型以基于其支持集对测试示例进行分类。我们假设在训练和测试期间我们都为支持集设置了类标签。请注意,在one-shot学习设置中,支持集每个类仅包含一个示例,因此容易获取。

    3.1. Meta Learner

      元学习器由动态表征学习函数u和快速权重生成函数m和d组成。函数u具有表征学习目标,并通过使用任务级快速权重在每个任务空间中构造输入的嵌入。权重生成函数m和d负责处理元信息,并生成示例和任务级快速权重。

      更具体地说,函数m学习从基学习器b导出的损失梯度到快速权重的映射:

    其中m是带有参数Z的神经网络。然后将快速权重存储在存储器中。通过由动态表征学习函数u获得的支持示例的任务相关嵌入对存储器M进行索引。 

      表征学习函数u是由慢速权重Q和任务级快速权重Q*参数化的神经网络。它使用表征损失lossemb来捕获表征学习目标并获得梯度作为元信息。我们根据每个任务生成快速权重Q*,如下所示:

    其中d表示由G参数化的神经网络,它接受可变大小的输入。首先,我们从支持集中采样得到T个示例,并获得损失梯度作为元信息。然后,d观察与每个采样示例相对应的梯度,并总结为任务特定的参数。尽管d的输入顺序无关紧要,但我们将LSTM用于d。或者,我们可以求梯度的总和或平均值,并使用MLP。但是,在我们的初步实验中,我们观察到后者导致较差的收敛性。

      生成快速权重后,与任务相关的输入表征的计算公式为:

    其中参数Q和Q*使用第3.3节中描述的层增强方法进行整合。

      损失lossemb不必与主要任务损失losstask相同。但是,它应该能够捕获表征学习目标。当支持集每个类只有一个示例时,我们将使用交叉熵损失。当每个类有一个以上的示例时,对比损失(Chopra et al., 2005)是lossemb的自然选择,因为可以同时形成正样本和负样本。在这种情况下,我们随机抽取T对以观察梯度,并且损失是:

    其中li是辅助标签:

      一旦参数被存储在存储器M中并构造了存储器索引R,元学习器就用快速权重对基学习器进行参数化。首先,它使用动态表征学习网络(即公式5)将输入xi嵌入到任务空间中,然后以软注意力读取内存:

    其中attention计算内存索引和输入嵌入之间的相似度,而我们使用余弦相似度作为attention,并且norm是一个归一化函数,为此我们使用softmax。

    3.2. Base Learner

      基学习器(表示为b)是通过任务损失losstask估计主要任务目标的函数或神经网络。但是,与标准神经网络不同,b由慢速权重W和示例级快速权重W*参数化。慢速权重在训练期间通过学习算法进行更新,而快速权重由元学习器为每个输入生成。

      基学习器使用通过使用支持集获得的元信息的表征,为元学习器提供有关新输入任务的反馈。元信息以损失梯度信息的形式从基学习器中得出:

    其中Li是支持示例的损失。N是任务集中支持示例的数量(通常在one-shot学习设置中,每个类有一个实例)。是相对于参数W的损失梯度,也是我们的元信息。请注意,损失函数losstask是通用的,可以采用任何形式,例如强化学习中的累积奖励。对于one-shot分类设置,我们使用交叉熵损失。元学习器接受梯度信息并生成快速参数W*,如公式1所示。

      假设定义了输入xi的快速权重,基学习器将执行one-shot分类,如下所示:

    其中是预测输出,而是当前任务从训练集得出的输入。或者,基学习器可以将动态表征学习网络生成的任务特定表征作为输入,从而有效减少MetaNet参数的数量并利用共享表征。在这种情况下,基学习器被迫在由u构成的动态任务空间中操作,而不是从原始输入构建新的表征。

      在训练过程中,给定输出标签,我们最小化one-shot SL的交叉熵损失。MetaNet的训练参数θ由慢速权重W和Q以及元权重Z和G(即,θ = {W, Q, Z, G})组成,并通过诸如反向传播之类的训练算法共同更新以最小化任务损失losstask(公式12)。

      以类似的方式,如公式2-4中所定义,我们还可以使用任务级快速权重对基学习器进行参数化。在第4节中报道了针对MetaNet不同版本的消融实验。

    3.3. Layer Augmentation

      基学习器中的慢速权重层及其相应的快速权重得到扩展,以实现快速概括。图2显示了应用于MLP的层增强方法的示例。首先通过慢速权重和快速权重对增强层的输入进行转换,然后将其传递给非线性(即ReLU),从而得到两个单独的激活向量。最后,激活向量通过逐元素向量加法来汇聚。对于最后一个softmax层,我们首先汇聚两个转换后的输入,然后针对分类输出进行归一化。

      直观地,层增强神经网络中的快速权重和慢速权重可以看作是在两个不同的数值域中运行的特征检测器。非线性的应用将它们映射到相同的域,在ReLU的情况下为[0, 1),以便可以汇聚并进一步处理激活。我们这里的汇聚函数是逐元素和。

      尽管可以仅使用快速权重来定义基学习器,但是在我们的初步实验中,我们发现慢速权重和快速权重与层增强方法的集成对于MetaNet模型的收敛至关重要。一个仅依靠快速权重的基学习器的MetaNet模型无法收敛,据报道该模型的最优性能与为每个输入分配相同标签的固定分类器的性能相同。

    4. Results

    4.1. One-shot Learning Test

    4.1.1. OMNIGLOT PREVIOUS SPLIT

    4.1.2. MINI-IMAGENET

    4.1.3. OMNIGLOT STANDARD SPLIT

    4.2. Generalization Test

    4.2.1. N-WAY TRAINING AND K-WAY TESTING

    4.2.2. RAPID PARAMETERIZATION OF FIXED WEIGHT BASE LEARNER

    4.2.3. META-LEVEL CONTINUAL LEARNING

    5. Discussion and Future Work

      One-shot学习与元学习框架相结合可以成为解决某些神经网络缺点的有用方法,这些缺点与小数据快速泛化和连续学习有关。我们提出了一种新颖的元学习方法MetaNet,该方法在元空间中执行通用知识获取,并通过快速参数化来对基础神经网络的参数和归纳偏差进行移位以进行快速概括。

      在MetaNet框架下,重要的考虑因素是在执行新任务时可以从模型中提取出的高阶元信息的类型。这里的一个理想特性是元信息应该是通用的,并且与问题无关。它也应具有足够的表现力,以解释当前任务空间中的模型设置。我们探索了在这项工作中损失梯度作为元信息的用途。如结果所示,使用梯度作为元信息似乎是一个有前途的方向。MetaNet在几个one-shot SL基准测试中获得了最先进的结果,并产生了非常灵活的AI模型。例如,在MetaNet中,我们可以在测试过程中动态切换不同的softmax层。它支持连续学习到一定程度。我们观察到,固定慢速权重的神经网络在增强快速权重时可以很好地执行新任务输入。在训练过程中更新慢速权重时,它会学习域偏差,从而在识别同一域内的新概念时表现出更好的性能。但是,当针对远距离域的one-shot概括时,可以期望固定权重网络具有更高的性能。

      一个有趣的未来方向将是探索一种更强大和更具表现力的新型元信息,并开发能够维持这种更高阶信息的突触权重。这可能会从大脑的元学习过程中获得启发,并询问大脑是否在某种高阶信息上进行操作以概括各种任务并获得新技能。

      已经证明,此处介绍的快速参数化方法是直接优化方法的有效替代方法,直接优化方法可学习更新网络参数以进行one-shot泛化。但是,这种方法带来的问题是慢速权重和快速权重的集成。作为解决方案,我们提出了一种简单的层增强方法。尽管层增强工作得相当好,但是当神经网络具有在多个不同时间尺度上操作的许多类型的参数时,此方法将变得困难。例如,在基础层学习范式下集成了三种类型的权重(慢速,特定于示例的权重和任务级权重)的单个基学习器的性能不及一个简单的学习器。因此,潜在的扩展将是训练MetaNet,以便它可以发现自己的增强架构以提高效率。

      MetaNet可以轻松地用于在强化学习和模仿学习中对策略进行参数化,从而形成具有one-shot和元学习功能的智能体。基于循环网络作为基础学习器的MetaNet可以产生序列建模和语言理解任务中的有用应用。

    A. Training Details

      为了通过one-shot学习来训练和测试MetaNet,我们采用了Vinyals et al. (2016)介绍的训练程序。首先,我们将数据分为两个不相交的类组成的训练集和测试集。然后,我们从训练集中制定一系列任务(试验)。每个任务都有N个类的支持集,每个类有一个图像,从而导致N-way one-shot分类问题。除了支持集,我们还在每个任务集中包含了L个带标签的示例,以在训练过程中更新参数。对于测试,我们按照相同的过程从不相交的类组成一组测试任务。但是,现在MetaNet仅根据每个测试任务的带标签支持集将类标签分配给L个示例。

      对于Omniglot数据集的one-shot基准测试,我们使用具有64个滤波器的CNN作为基本学习器b。此CNN具有5个卷积层,每个卷积层都是3 x 3卷积,具有64个滤波器,其后是ReLU,2 x 2最大池化层,全连接(FC)层和softmax层。具有相同架构的另一个CNN用于定义动态表示学习函数u,从中我们将FC层的输出作为与任务相关的表征r。我们在Mini-ImageNet上针对32个滤波器训练了类似的CNN结构。但是,为了提高计算效率并证明MetaNet的灵活性,这些CNN模型的最后三层都增加了快速权重。对于网络d和m,我们使用具有20个隐含单元的单层LSTM和具有20个隐含单元和ReLU的三层MLP。如在Andrychowicz et al., (2016)中,在梯度r的坐标上共享d和m的参数G和Z,并使用相同的预处理规则对梯度进行归一化(p = 7)。MetaNet参数已通过ADAM优化。初始学习率设置为10-3。根据[-0.1,0.1)上的均匀分布随机初始化模型参数。

    B. MNIST as Out-Of-Domain Data

  • 相关阅读:
    如何通过Restful API的方式读取SAP Commerce Cloud的Product图片
    Permute Digits
    Browser
    Jamie and Alarm Snooze
    Perfect Squares
    Color the ball
    Stars
    1086. Tree Traversals Again (25)
    1085. Perfect Sequence (25)
    1083. List Grades (25)
  • 原文地址:https://www.cnblogs.com/lucifer1997/p/13611268.html
Copyright © 2011-2022 走看看