当前位置: 首页 > 编程日记 > 正文

快速适应性很重要,但不是元学习的全部目标

作者 | Khurram JavedHengshuai YaoMartha White

译者 | Monanfei

出品 | AI科技大本营(ID:rgznai100)

实践证明,基于梯度的元学习在学习模型初始化、表示形式和更新规则方面非常有效,该模型允许从少量样本中进行快速适应。这些方法背后的核心思想是使用快速适应和泛化(两个二阶指标)作为元训练数据集上的训练信号。但是,其他可能的二阶指标很少被关注。在本文中,研究者提出了一种不同的训练信号——对灾难性干扰的鲁棒性。与仅通过快速适应性最大化学习的表示相比,通过引导干扰最小化学习的表示更有利于增量学习。

以下为论文内容详细介绍,AI科技大本营(ID:rgznai100)编译:

背景介绍

当在大型数据集上训练和使用 IID 采样进行训练直至收敛时,人工神经网络被证明是非常成功的函数逼近器。但是如果没有大的数据集和 IID 采样,他们很容易产生过拟合和灾难性的遗忘。最近的研究表明,基于梯度的元学习能够成功地从元数据集中提取问题的高级平稳结构,从而可以在不过度拟合的情况下进行小样本泛化,它也证明可以减轻人们对更好的持续学习的遗忘。

基于梯度的元学习器具有两个重要组成部分。(1)元目标:算法在元训练期间最小化的目标函数;(2)元参数:元训练期间更新的参数,以最小化所选的元目标。这种元学习框架最流行的实现之一是 MAML。MAML 将最大化快速适应和泛化作为元目标,通过学习模型初始化(一组用于初始化神经网络参数的权重),解决了少样本学习的问题。这个想法是对固定任务结构进行编码,这些结构来自用于初始化模型的固定任务的权重分布,以使得从该初始化开始的常规SGD 更新对于少样本学习有效。

尽管 MAML 为元目标和元参数所做的选择是合理的,但我们还有许多其他选择。例如,除了学习模型初始化外,我们还可以学习表示形式、学习率、更新规则、因果结构甚至是完整的学习算法。类似地,除了使用少样本学习目标,我们还可以定义一个将其他二阶指标最小化的元目标。

本文在元目标中将鲁棒性与干扰相结合,研究该方式是否会改善元学习目标上增量学习基准的性能。最近,Javed 和 White 出了一个目标——MRCL,该目标通过最大程度地减少干扰来学习表示,并表明这种表示极大地提高了增量学习基准上的性能。但是,他们没有与通过少样本学习目标获得的表示形式进行比较。

另一方面,Nagabandi 发现在元训练时并入增量学习的影响(例如干扰)并没有在元测试时提高他们的持续学习基准的性能。那么,对于有效的增量学习而言,Javed 和 White 引入的新目标是否必要?对于元学习无干扰表示,是否仅使用快速适应就足够了?

问题表述

为了比较这两个目标,我们采用了在线持续学习预测任务(CLP):这是一个既需要快速适应和对干扰鲁棒性的任务。该任务定义如下:

640?wx_fmt=png

它由初始的观测目标 640?wx_fmt=png,误差函数 640?wx_fmt=png,过渡动态 640?wx_fmt=png,集合长度 H,集合640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png)组成。一个CLP任务的样本 S,由长度为 H 的潜在高度相关的样本流组成,该样本流的长度为 H,从 X1 开始,遵从 H 步的过渡动态,从而得到了
640?wx_fmt=png     

此外,我们将样本的损失定义为  640?wx_fmt=png。CLP 任务的学习目标:通过一次看到一个数据点,从单个样本 640?wx_fmt=png最小化任务的期望误差 640?wx_fmt=png。标准神经网络(没有任何元学习)在 CLP 任务上效果不佳, 因为它们难以通过单次传递从高度相关的数据流中进行在线学习。

比较两个目标

为了在 CLP 任务上运用神经网络,我们提出了一个元学习函数640?wx_fmt=png:一个受参数 θ 控制的深度神经网络,映射关系为640?wx_fmt=png。接下来我们要学习另一个函数 gw,它的映射关系为640?wx_fmt=png。通过组合这两个函数,我们得到了 640?wx_fmt=png,这个新函数能够适应我们的 CLP 任务。我们将 θ 作为元参数,它由最小化元目标学习得到,并将在元测试时间内被固定。学习到 θ 后,我们使用在线 SGD 更新,从单条轨迹 640?wx_fmt=png中学习 gw 。

640?wx_fmt=png
算法 1 .元训练:MAML 作为目标
对于元训练,假设 640?wx_fmt=png给出了 CLP 任务的分布,我们要考虑两个元目标用于更新元参数 θ :(1)MAML 形式的少样本学习目标;(2)MRCL,不仅最大化快速适应,而且还要最小化干扰。两个目标分别由算法 1 和算法 2 实现,两者之间的主要区别用红色突出显示。需要注意的是 MAML 使用 640?wx_fmt=png的完整批来执行 K 次内部更新,而 MRCL 每个更新只使用 640?wx_fmt=png的一个数据点。MRCL 的这种特性,可以将增量学习的影响(例如灾难性的遗忘)考虑在内。
       640?wx_fmt=png  算法 2. 元训练:MRCL 作为目标

数据集、实施细节和结果

  • 使用 OMNIGLOT 的 CLP 任务

Omniglot 是由 50 个不同字母组成的超过 1623 类字符的数据集。每个字符有20 个手写图像。我们将数据集分为两部分,前 963 个类别构成了元训练数据集,而剩余 660 个构成了元测试数据集。为了在这些数据集上定义 CLP 任务,我们对 200 个类的有序集合 640?wx_fmt=png进行了采样。X 和 Y 构成了这些类别的所有图像。样本 S 是一系列的图像:每个类有 5 张图像,我们会先看到 C1 的 5 张图像,然后再看到 C2 的 5 张图像,依次类推。此时集合长度 640?wx_fmt=png。值得注意的是,采样操作定义了用于元训练的任务的分布 640?wx_fmt=png

  • 元训练

我们使用 MAML 和 MRCL 目标学习了一个编码器:具有 6 个卷积和 2 个全连接层的深层 CNN。记卷积参数为 θ,全连接层参数为 W。由于 MRCL 在 H=1000 时的计算开销太大需要展开计算图 1000 次),我们将两个目标进行了近似。对于 MAML,我们通过最大化 5 张五路分类器的快速适应习640?wx_fmt=png

对于 MRCL,与算法2中遍历 640?wx_fmt=png时不执行内部梯度不同,我们在遍历 640?wx_fmt=png时一次执行五步。对于内部循环中的第 k 个五步,我们将 640?wx_fmt=png上的元误差进行累积,并在最后使用累积的梯度更新元参数,该过程如算法 4 所示。这样一来,我们再也不会展开计算图超过五步(类似于经过时间的截断反向传播),并且仍会考虑元训练中的干扰影响。
640?wx_fmt=png算法 3. 元训练
640?wx_fmt=png算法 4. 元训练:MRCL 的近似实现
最终,MAML 和 MRCL 都使用5个内部梯度步骤和类似的网络结构,这样它们就可以进行公平的比较了。此外,对于这两种方法,我们尝试使用了内部学习率 α 的多个值,并报告了它的最佳取值结果。有关超参数的信息如表 1 所示:
表 1. 超参数信息640?wx_fmt=png
  • 元测试

在元测试时间,我们从元测试集中采样了 50 个 CLP 任务。对于每个任务,我们使用算法 3 从单条轨迹 640?wx_fmt=png中学习 W,并计算在 640?wx_fmt=png上的精度。如图 1(a)和 图 1(b)所示,x 轴的每个点代表目前为止模型看到的样本类别数,随着样本类别数的增多,各条目标对应曲线的精度都在逐步降低。从图 1(a)中我们可以看到 ,MRCL 学习的表示比 MAML 学习的表示对灾难性干扰的鲁棒性要强得多。而且从图 1(b)我们看到,较高的训练准确率也导致更好的泛化性能(这表明 MRCL 不仅仅只是存储训练样本)。
640?wx_fmt=png图 1. 在增量学习中,比较由 MAML 和 MRCL 学习到的表示的性能。SR-NN 没有使用基于梯度的元学习;相反地,它通过规范表示层中的激活,使用元训练数据集来学习稀疏表示。我们使用 SR-NN 作为基线进行比较。
作为健全性检查,我们还对三个时期的数据进行了 IID 采样来训练分类器,结果如图 1(c)和图1(d)所示:即使 MAML 和 MRCL做了同样好的 IID 采样,由两种目标学习到的表示的质量具有可比性,而且 MRCL 具有更高的性能,因为它更适合于增量学习。

讨论

  • MRCL 和 MAML 区别背后的直觉

在直观上,MRCL 和 MAML 之间的主要区别在于内部梯度步骤。对于 MAML,内部梯度由对所有类的整批数据的 SGD 更新组成。作为结果,MAML 的目标仅仅是最大化快速适应和泛化能力。对于 MRCL,内部梯度步骤涉及对高度相关的数据流进行在线 SGD 更新。因此,该模型不仅必须从单个轨迹适应任务,而且还必须防止后续内部更新干扰较早的更新。这将激励模型学习一种防止忘记过去知识的表示。

  • 为什么要学习与网络初始化相反的编码器

在这项工作中,我们学习了一个给定的表示640?wx_fmt=png,而非一个网络的初始化。我们从经验上发现,对于高度相关的数据流进行在线学习,网络初始化是无效的归纳偏差。当学习涉及数千个 SGD 更新的长轨迹时,尤其如此。

总结

在本文中,我们比较了两个元学习目标,这些目标有助于学习增量学习的表示。我们发现,MRCL(一个直接最小化干扰的目标)在学习此类表示上要比 MAML(一个仅最大化泛化能力和快速适应的目标)要好得多。这与 Nagabandi 等人的发现相反。
一个可能的解释是,他们在工作中也具有检测任务变化的机制。根据检测到的任务,代理可以选择使用其他神经网络作为模型。这样的任务选择机制会使减少干扰的重要性降低。通过使用元学习来持续适应,我们的观点进一步得到了支持,而这是他们论文中使用单一模型进行持续适应的基线之一。对于此基准,他们确实观察这一现象,即通过优化 MAML 目标而学习到的初始化无法有效地防止遗忘。

原文链接:
https://www.arxiv-vanity.com/papers/1910.01705/

(*本文为 AI科技大本营编译文章,载请微信联系 1092722531


精彩推荐


2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。


即日起,限量 5 折票开售,数量有限,扫码购买,先到先得!

640?wx_fmt=png


推荐阅读

  • @程序员:Python 3.8正式发布,重要新功能都在这里

  • AutoML很火,过度吹捧的结果?

  • AI大佬“互怼”:Bengio和Gary Marcus隔空对谈深度学习发展现状

  • Python脚本BUG引发学界震动,影响有多大?

  • 太鸡冻了!我用Python偷偷查到暗恋女生的名字

  • 苹果 5G 芯片“难产”

  • 如果把线程当作一个人来对待,秒懂

  • C 语言这么厉害,它自身是用什么语言写的?

  • 从4个维度深度剖析闪电网络现状,在CKB上实现闪电网络的理由 | 博文精选

640?wx_fmt=png

你点的每个“在看”,我都认真当成了AI

相关文章:

面试题-自旋锁,以及jvm对synchronized的优化

背景 想要弄清楚这些问题,需要弄清楚其他的很多问题。 比如,对象,而对象本身又可以延伸出很多其他的问题。 我们平时不过只是在使用对象而已,怎么使用?就是new 对象。这只是语法层面的使用,相当于会了一门编…

DNS解析故障

在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的。这个现象发生的机率比较大,所以本文将从零起步教给…

cinder存储服务

一、cinder 介绍: 理解 Block Storage 操作系统获得存储空间的方式一般有两种: 1、通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直接使用裸硬盘存储数据&#xff0…

Ubuntu 14.04 64位机上配置Android Studio操作步骤

Android Studio是一个为Android平台开发程序的集成开发环境。2013年5月16日在Google I/O上发布,可供开发者免费使用。Android Studio基于JetBrains IntelliJ IDEA,为Android开发特殊定制,并在Windows、OS X和Linux平台上均可运行。1. 从 htt…

大规模1.4亿中文知识图谱数据,我把它开源了

作者 | Just出品 | AI科技大本营(ID:rgznai100)人工智能从感知阶段逐步进入认知智能的过程中,知识图谱技术将为机器提供认知思维能力和关联分析能力,可以应用于机器人问答系统、内容推荐等系统中。不过要降低知识图谱技术应用的门…

使用CSS 3创建不规则图形

2019独角兽企业重金招聘Python工程师标准>>> 前言 CSS 创建复杂图形的技术即将会被广泛支持,并且应用到实际项目中。本篇文章的目的是为大家开启它的冰山一角。我希望这篇文章能让你对不规则图形有一个初步的了解。 现在,我们已经可以使用CSS…

谷歌丰田联合成果ALBERT了解一下:新轻量版BERT,参数小18倍,性能依旧SOTA

作者 | Less Wright编译 | ronghuaiyang来源 | AI公园(ID:AI_Paradise)【导读】这是来自Google和Toyota的新NLP模型,超越Bert,参数小了18倍。你以前的NLP模型参数效率低下,而且有些过时。祝你有美好的一天。谷歌Resear…

C++中extern C的使用

C程序有时需要调用其它语言编写的函数,最常见的是调用C语言编写的函数。像所有其它名字一样,其它语言中的函数名字也必须在C中进行声明,并且该声明必须指定返回类型和形参列表。对于其它语言编写的函数来说,编译器检查…

Linux之tmpwatch命令

1、tmpwatch命令功能简介[rootvms002 /]# whatis tmpwatch tmpwatch (8) - removes files which havent been accessed for a period of... #删除一段时间内未被访问的文件tmpwatch删除最近一段时间内没有被访问的文件,时间以小时为单位,节省磁盘空间。…

你不得不知道的Visual Studio 2012(1)- 每日必用功能

2019独角兽企业重金招聘Python工程师标准>>> Visual Studio 2012已经正式发布,有很多花哨的新特性,也有很多方便使用者的新功能,当然也有负面声音。对于我们程序员,最关心的还是如何快速掌握VS2012,用于平时…

C++11中std::unique_lock的使用

std::unique_lock为锁管理模板类,是对通用mutex的封装。std::unique_lock对象以独占所有权的方式(unique owership)管理mutex对象的上锁和解锁操作,即在unique_lock对象的声明周期内,它所管理的锁对象会一直保持上锁状态;而unique…

为何Google将几十亿行源代码放在一个仓库?| CSDN博文精选

作者 | Rachel Potvin,Josh Levenberg译者 | 张建军编辑 | apddd【AI科技大本营导读】与大多数开发者的想象不同,Google只有一个代码仓库——全公司使用不同语言编写的超过10亿文件,近百TB源代码都存放在自行开发的版本管理系统Piper中&#…

小小hanoi

为什么80%的码农都做不了架构师?>>> View Code #include " iostream " using namespace std; int k 0 ; void hanoi( int m , char a , char b, char c){ if (m 1 ) { k ; printf( " %c->%c " ,a , c); return…

Unity3D心得分享

本篇文章的内容以各种tips为主,不间断更新 2019/05/10 最近更新: 使用Instantiate初始化参数去实例对象 Unity DEMO学习 Unity3D Adam Demo的学习与研究 Unity3D The Blacksmith Demo部分内容学习 Viking Village维京村落demo中的地面积水效果 Viking V…

django搭建示例-ubantu环境

python3安装--------------------------------------------------------------------------- 最新的django依赖python3,同时ubantu系统默认自带python2与python3,这里单独安装一套python3,并且不影响原来的python环境 django demo使用sqlite3&#xff0c…

C++11中std::lock_guard的使用

互斥类的最重要成员函数是lock()和unlock()。在进入临界区时,执行lock()加锁操作,如果这时已经被其它线程锁住,则当前线程在此排队等待。退出临界区时,执行unlock()解锁操作。更好的办法是采用”资源分配时初始化”(RAII)方法来加…

OpenAI机械手单手轻松解魔方,背靠强化学习+新技术ADR

编译 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】10月15日,人工智能研究机构OpenAI发布了一条机械手单手解魔方的视频。这个自学式的类人机器人手臂名为 Dactyl,不仅可以单手解魔方,甚至能在外加各种干扰&#x…

AMD and CMD are dead之js模块化黑魔法

缘由 在2013-03-06 13:58的时候,曾甩下一片文章叫:《为什么不使用requirejs和seajs》,并放下豪言说发布一款完美的模块化库,再后来就把那篇文章删了,再然后就没有然后。该用seajs还用seajs,甚至我码的SCJ都…

一文了解Python常见的序列化操作

关于我 编程界的一名小小程序猿,目前在一个创业团队任team lead,技术栈涉及Android、Python、Java和Go,这个也是我们团队的主要技术栈。 联系:hylinux1024gmail.com 0x00 marshal marshal使用的是与Python语言相关但与机器无关的二…

TEE(Trusted Execution Environment)简介

TEE(Trusted Execution Environment),可信执行环境,该环境可以保证不被常规操作系统干扰的计算,因此称为”可信”。这是通过创建一个可以在TrustZone的”安全世界”中独立运行的小型操作系统实现的,该操作系统以系统调用(由TrustZ…

自动驾驶关键环节:行人的行为意图建模和预测(上)

作者 | 黄浴出品 | AI科技大本营(ID:rgznai100)【导读】介绍一下最近行人行为意图建模和预测的研究工作,还是分上下两部分,本文为上半部分。Social LSTM: Human Trajectory Prediction in Crowded Spaces比较早的是斯坦福大学 201…

自定义windows下自动清除文件夹或者文件的只读属性的脚本

脚本内容入下:其中脚本中 ”/d"作用 (可以用来改变当前驱动器目录)例如: 我现在是在D盘,现在我要切换到C:\windows目录 脚本参数中 ATTRIB -R /S /D 解释内容如下:(上述脚本参数中的 cd …

C++11容器中新增加的emplace相关函数的使用

C11中,针对顺序容器(如vector、deque、list),新标准引入了三个新成员:emplace_front、emplace和emplace_back,这些操作构造而不是拷贝元素。这些操作分别对应push_front、insert和push_back,允许我们将元素放置在容器头…

Silverlight+WCF 新手实例 象棋 主界面-棋谱-获取列表(三十八)

2019独角兽企业重金招聘Python工程师标准>>> 在线演示地址:SilverlightWCF 新手实例 象棋 在线演示 在SilverlightWCF 新手实例 象棋 主界面-棋谱-布局写谱(三十六)中,我们完成下棋双方的棋谱显示,这节,我们为观众增加…

确认!语音识别大牛Daniel Povey将入职小米,曾遭霍普金斯大学解雇,怒拒Facebook

整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 【导读】10 月 17 日,语音界传奇 Daniel Povey 发布推特,宣布自己 2019 年末将要入职小米,目前正在签订合同阶段,入职后,他将带领一支团队研发…

软链接与硬链接

$ ln f1 f2 #创建f1的一个硬连接文件f2$ ln -s f1 f3 #创建f1的一个符号连接文件f3$ ls -li # -i参数显示文件的inode节点信息转载于:https://www.cnblogs.com/zhizouxiao/p/3794668.html

一文读懂Python复杂网络分析库networkx | CSDN博文精选

作者 | yyl424525来源 | CSDN博客文章目录1. 简介安装支持四种图绘制网络图基本流程2. Graph-无向图节点边属性有向图和无向图互转3. DiGraph-有向图一些精美的图例子环形树状图权重图Giant ComponentRandom Geometric Graph 随机几何图节点颜色渐变边的颜色渐变Atlas画个五角星…

C++11多线程中std::call_once的使用

C11中的std::call_once函数位于<mutex>头文件中。在多线程编程中&#xff0c;有时某个任务只需要执行一次&#xff0c;此时可以用C11中的std::call_once函数配合std::once_flag来实现。如果多个线程需要同时调用某个函数&#xff0c;std::call_once可以保证多个线程对该函…

Solaris 上网配置

2019独角兽企业重金招聘Python工程师标准>>> 早上装solaris10系统的时候&#xff0c;没选默认&#xff0c;选了desk-session模式安装。全英文无界面安装&#xff0c;中间还跑出几个乱码。 靠着随便选随便F2&#xff0c;终于安装完了。 就在那设完分辨率后&#xff0…

Configure,Makefile.am, Makefile.in, Makefile文件之间关系

为什么80%的码农都做不了架构师&#xff1f;>>> 1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题&#xff0c;比如检查编译器&#xff0c;库&#xff0c;头文件等&#xff0c;生成文件configure.scan,它是configure.ac的一个雏形。 your source files…