精华内容
下载资源
问答
  • MetaLearning

    2020-03-29 10:18:21
    人工智能前沿研究,元学习研究资料—Meta-Learning: A Survey,Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networ,Online Meta-Learnin,Task Agnostic Meta-Learning for Few-Shot Learning
  • Meta Learning学习笔记】Meta Learning详解

    万次阅读 多人点赞 2019-06-07 14:09:03
    · 为何要研究Meta Learning? 尽管我是研究生成模型的,但是最近对于meta learning产生了强烈的兴趣。理由在于,GANs本身是一个特别吃数据集的模型,从某种意义上来说,数据集的好坏对最后生成效果的影响,不...

    完整笔记:www.gwylab.com/note-meta_learning.html
    李宏毅老师的视频教程:/www.bilibili.com/video/av46561029/?p=32
    ——————————————————————————————————

    前言

    · 为何要研究Meta Learning

    尽管我是研究生成模型的,但是最近对于meta learning产生了强烈的兴趣。理由在于,GANs本身是一个特别吃数据集的模型,从某种意义上来说,数据集的好坏对最后生成效果的影响,不亚于甚至高于生成模型本身的设计对最后生成效果的影响。造成这一现象的原因是,GANs学习的本质是拟合数据的潜分布,而数据潜分布很大程度上由训练数据所具有的样本广度和质量来决定,因此GANs的训练效果容易受到来自训练数据的质量的影响。

    如何摆脱这种GANs对于数据集的过度依赖呢?一个比较好的检测方法是在少样本学习(few-shot learning)上检验模型的学习效果。但是直接用GANs架构是很难实现少样本学习的,原因是在数据量大的时候,充足的训练样本能够让判别器精准地找到真假样本的划分界线,从而让生成器拟合出精确的生成分布,但是在数据量少的时候,要想准确地拟合数据的潜分布就会变得比较困难。

    最近出现的meta learning为解决这一问题提供了比较好的方法,首先因为meta learning已经被证明在少样本学习上取得了较好的效果,另外meta learning的方法也比较符合GANs的学习需求。为何这么说呢?meta learning的目标是学习如何去学习,换言之,它能够依靠对数据集规律的探索去制定学习策略,从而将传统GANs的训练过程由设计模型->寻找数据->验证模型,变为寻找数据->设计模型->验证模型,这对于我们解决GANs训练中的数据不匹配以及数据缺乏问题带来很大的帮助。

    综上,meta learningGANs的传统训练思维,由用数据去匹配模型,转变为用模型去匹配数据,为解决生成模型的少样本学习问题提供了突破口。下面是meta learning学习笔记的正文。



     

    第一章 Meta Learning概述

    Meta Learning被称作元学习,不同于Machine Learning的目标是让机器能够学习,Meta Learning则是要让机器学会如何去学习

    举例来说,机器已经在过去的100个任务上进行了学习,现在我们希望,机器能够基于过去100个任务学习的经验,变成一个更厉害的学习者,这样当在第101个新任务到来之时,机器能够更快地学习。值得注意的是,机器之所以能够学习地更快并不是依赖于在旧任务中已获取的“知识”,而是机器学到了如何去更好获取知识的方法,并将这一方法应用于新任务当中,从而较快地提升学习效率。

    以上图为例,假设前99个学习任务都是各种辨识任务,例如语音辨识、图像辨识等,在前99个任务学习完成之后,我们给机器一个新的学习任务,而这个新的学习任务与前99个任务没有任何关联,譬如是一个文本分类任务。而现在,Meta Learning的目的就是希望能够通过前99个辨识任务的学习让机器在新的文本分类任务上学习得更好,也就是说,机器在前面的学习中不仅仅学到了如何解决某些特定的任务,而是学习到了学习本身这件事情,从而能提升自己在面对新任务上的学习能力。所以,Meta Learning就是一门研究如何让机器学会更好地学习的新兴研究方向。



     

    第二章 Meta Learning的建模思路

    前篇提及的概念描述可能依然比较抽象,下面我们用具体的模型架构来解释一下Meta Learning实际上在做的事情。

    首先,上图描述的是传统机器学习在做的事情——由人来设计一套学习算法,然后这个算法会输入一堆训练资料,通过长时间的训练得到算法里的参数,这堆参数拟合出一个函数 ,然后用测试资料来测试这个,如果效果达标就证明机器学到了该特定任务的实现函数。而Meta Learning做的事情与上述描述不同的地方在于,将其中由人来设计学习方法的过程,改成了由机器来设计一套学习方法。

    如上图所示,如果将原本机器学习中的训练资料记为,那么在Meta Learning中的训练资料变为一堆和一堆的组合,然后现在机器要求解的结果不再是,而是一个新的函数

    简言之,如果机器学习的定义表述为:根据资料找一个函数f的能力,如下图所示:

    那么Meta Learning的定义就可以表述为:根据资料找一个找一个函数f的函数 F 的能力,如下图所示:

    现在,清楚了Meta Learning的架构搭建思路以后,我们就可以顺着该思路一步一步寻找解决方案。

    首先第一步要做的,是准备Meta Learning的训练资料。前面说过,Meta Learning的训练资料是一堆和一堆的组合,显然一堆是很好准备的,于是重点在于,一堆该如何准备。事实上,本身是一个抽象概念,我们需要知道它的具体实例是什么,不妨以传统的神经网络为例来介绍。

    上图是大家都熟悉的梯度下降算法,它的流程可以简述为:设计一个网络架构->给参数初始化->读入训练数据批次->计算梯度->基于梯度更新参数->进入下一轮训练->……。对于每一个具体的任务来说,它的全部算法流程就构成了一个,也就是说,(如图中红色框架)每当我们采用了一个不同的网络架构,或使用了不同的参数初始化,或决定了不同的参数更新方式时,我们都在定义一个新的。所以,针对梯度下降算法来说,Meta Learning的最终学习成果是在给定训练资料的条件下,机器能够找到针对这笔资料的SGD最佳训练流程()。因此,前边我们探讨的为Meta Learning准备的,实际上是由包含尽量多和丰富的组合方式的不同训练流程来组成的。

    接下来,第二步要做的,就是设计评价函数 F好坏的指标。具体来说,F可以选择各种不同的训练流程,如何评价F找到的现有流程,以及如何提升,这是Meta Learning中比较重要的部分。

    我们先来说明Meta Learning中函数F的损失函数的定义。

    如上图所示,在Task1中,函数F学习到的训练算法是,而Task1中的测试集在上的测试结果被记作在Task1上的损失值(注意测试结果不仅仅可以是分类任务中的分类损失,也可以定义为损失下降的速率等等,取决于我们希望F学习到什么样的算法效果);同理,在Task2中的测试集在上的测试结果记作在Task2上的损失值。最终,函数F的损失函数就定义为所有Task上的损失的总和:

    损失函数定义完毕后,我们该如何降低F的损失呢?由于Meta Learning的求解是非常复杂的过程,我们先以MAML算法为例讲解一个Meta Learning的简单情况的求解。



     

    第三章 Meta Learning的简单实例:MAML

    MAML算法想要解决的问题是,对于F在每一个任务中学习到的规定只负责决定参数的赋值方式,而不设计模型的架构,也不改变参数更新的方式。也就是说,MAML中的的网络结构和更新方式都是提前固定的,MAML要解决的是如何针对不同任务为网络赋不同的初始值。

    如上图所示,只需考虑参数的初始化方式。假设当前参数的初始化为,将应用于所有的训练任务中,并将所有任务最终训练结束后的参数记作表示第个任务),然后该参数下的测试损失记作。于是,当前的初始化参数的损失函数就表示为:

    接下来,我们需要求解,使得:

    放入梯度下降算法中,得到:

    MAML为了更快地计算出上式的结果,做了两处计算上的调整。

    首先,如上图所示,由于在每一个训练任务上更新多次参数会占用太多时间,因此MAML选择只更新一次的参数结果作为该任务下的最终参数,即只走一次梯度下降:

    能这样做的原因是,如果模型只需训练一次就能达到好的效果,那么这样的训练初始参数基本上能符合好的参数,不过,在测试资料上依然需要训练多次以检验该初始参数的真正效果。

    MAML的第二处调整是,对于的实际计算做了简化。由于

    不妨观察一下的展开式:

    的具体关系是:

    由此可以得到的具体计算式为:

    很明显,上式的第一项是容易计算的,因为它直接取决于函数的定义是什么,下面我们来求解第二项

    带回到中,得到:

    注意到当时,有:

    时,有:

    现在的问题是,由于上式含有二次微分,并不好计算,MAML提出将二次微分项()直接舍弃掉(这种仅保留一次微分项的方法叫做“first-order approximation”)。

    舍弃二次微分项之后的计算结果就变成了:

    带回到的计算式中,得到:

    进而得到最开始的展开式变为:

    综上,简化后的MAML计算就变得简单许多,MAML的理论分析也到此结束。下面我们用一个实际的例子来理解上面的计算是如何执行的。

    首先,最开始有一个初始化的参数

    然后,在Task m上训练一次得到最终参数,接着计算的梯度(即上图中第二根绿色箭头),将这一梯度乘以学习率赋给,得到的第一次更新结果

    接下来,同样地,在Task n上训练一次得到最终参数,接着计算的梯度(即上图中第二根黄色箭头),将这一梯度乘以学习率赋给,得到第二次训练的更新结果

    这样不断循环往复,直至在所有的训练Task上完成训练,就找到了最终的初始化参数

    上述就是MAML算法的完整介绍,其实参数初始化问题还有很多其他的解法,其中一个有趣的想法是用LSTM来训练,因为梯度下降算法本质上可以看作序列模型(如下图所示),于是通过改LSTM的架构也能实现的训练:

    具体的实现过程就不在此细述了,感兴趣的读者可以去观看李宏毅老师的视频教程:

    https://www.bilibili.com/video/av46561029/?p=41



     

    第四章 Meta Learning的复杂问题的解决方案

    上篇介绍的MAML,只是解决了Meta Learning中一个较为简单的问题:如何为模型赋值初始化参数。Meta Learning中还有很多更复杂的问题,譬如如何设计模型的架构,以及如何构造参数更新的方式等。由于这些问题涉及到的的求解已经不可微分,因此无法用梯度下降算法进行求解,我们只能考虑使用强化学习(Reinforcement Learning)。

    4.1.Meta Learning如何设计模型架构

    先考虑第一个问题:如何设计一个能够设计模型的模型?假设我们的任务是学习设计CNN模型,可以考虑引入RNN网络来实现设计CNN

    如上图所示,RNN横向的宽度取决于待设计网络的层数,而纵向的每一个cell的输出就对应网络的具体单元配置。譬如在设计CNN的网络中,RNN会输出一系列数据,分别对应到每个卷积核的具体参数配置,例如卷积核数目、核高度、核宽度、步幅高度、步幅宽度等。值得注意的是,每决定一个参数后,该参数就会成为下一个参数的输入,所以第一层的参数设计至关重要,它会影响到接下来的所有设计。

    设计完网络之后,我们需要评价此网络的好坏。首先依据给出的参数搭建好对应的网络,然后将该网络应用于众多训练Task中进行训练,并在训练完成后计算准确性(Accuracy)。值得注意的是,由于无法进行梯度下降,该准确性只能作为reward反馈给设计网络,并用强化学习的方式让网络在大量reward下学会产生更好的网络。

    上述的训练方式有一个显著的弊端是,得到大量reward消耗的时间是非常久的,譬如在谷歌一篇设计LSTM网络架构的文献中的方法,需要同时用450GPU3-4天。我们可以用weight share的方法来降低得到reward的时间,简单来说,就是对于采用过的模块设计,直接将上一次采用该模块时训练得到的参数复制过来,作为该模块的初始化参数,这样能大幅加快新网络的训练收敛时间。实验证明,该方法让谷歌提出的设计LSTM架构的网络的训练时间,缩短到在1080Ti上仅需16小时。

    下面展示一个用meta learning设计出的LSTM架构(如下右图):

    可以看出,右边机器设计的LSTM比左边人工设计的LSTM要复杂许多,其中一个有意思的地方是,右边机器设计的LSTM中完全没有使用sin函数,这与人的设计方式是一致的。而最终实验结果证明,右边的LSTM的训练效果,比左边的LSTM有少量提升。

    4.2.Meta Learning如何设计参数更新策略

    这一节来介绍如何设计新的参数更新策略的网络。实际上,每一个参数更新策略,都可以看作由一个五元组构成。

    如上图所示,列举了三个最熟知的参数更新算法:SGDRMSPropAdam。每个5元组中左下角蓝色区域代表第一个操作数(记作,通常指梯度),右下角蓝色区域代表第二个操作数(记作,通常指学习率),左边黄色区域代表的单元计算(),右边黄色区域代表的单元计算(),最上边紫色区域代表对两个单元计算结果的二元计算()。

    不妨将上图中的表达式代入三个参数更新算法中,得到SGD的更新值 RMSProp的更新值,以及Adam的更新值:。因此,如过想设计新的参数更新算法,我们可以使用如下的RNN网络:

    这个网络很好理解,每个cell输出对应元件的选择项,最后组合在一起就是新设计的参数更新算法。其中各个元件的可选项有:

    下面展示一个用meta learning设计出的更新策略——PowerSign

    如上式所示,其中代表代表取决于是否同向,若同向它的值就大一些,若不同向它的值就小一些。下面看一下PowerSign的实验结果:

    可以看出,在月牙型的梯度训练轨迹下,SGDAdamRMSProp都无法走到终点,Momentum能到达终点但非常慢,只有PowerSign能较快地到达终点。由此可以看出,由meta learning设计的参数更新策略在某些情况下是占有优势的。

    4.3.Meta Learning如何设计激活函数

    激活函数同样遵循如下的设计范式(即激活函数仅对x操作,一般不超过两次计算):

    依据这一范式可以构造出对应的设计网络:

    其中各个元件的可选项有:

    下面展示一个用meta learning设计出的激活函数——Swish

    如上图所示,当取β=1.0的时候Swish的实验效果是最好的。有意思的地方在于,Swish(β=1.0)的形状有点像ReluLeaky Relu的结合,因为在从0向负走的时候,Swish是先降低后又回归接近于0。下面我们看一下Swish的实验测试结果:

    可以看出,Swish对于所有基线的比较都是占优的,特别是在与Relu的比较中,在9个任务集上达到了完胜。

    综上,关于meta learning在复杂网络设计上的方法已全部介绍完毕。上述的这些网络设计模块还能通过组合使用,从而设计出包含模型架构、激活函数和更新策略在内的更复杂、更完善的网络。



     

    第五章 Meta Learning的未来趋势

    总的来说,meta learning还是一个挺神奇的研究方向,而且它解决的问题也颇具实际意义。除了前边介绍的诸多meta learning方法之外,还有一些奇妙的领域有待人们研究和开拓,下边将介绍Learn to Learn to Learn问题和F函数黑盒化想法。

    首先Learn to Learn to Learn问题解决的是,如何学习一个模型,它能够学习出会学习的模型。举一个实例来说,在第三节中介绍的MAML,能够学习为模型初始化参数,那么这个参数本身的初始化(也就是初始化参数的初始化参数),依然是一个可以被学习的内容(如上图所示);再比如,4.1节中介绍的RNN模型,能够设计出CNN模型,而这个RNN模型本身的设计,也可以被一个能设计模型的模型来学习(如上图所示)……循环往复,我们可以衍生出一系列Learn to Learn to Learn,甚至是Learn to N Learn问题。而解决这些问题对于Meta Learning来说是具有里程碑意义的,因为那标志着机器学习的完全自动化。

    另外一个值得研究的领域是F函数的黑盒化想法。因为,当前F学到的策略是透明的,并且人为限制了策略的内容,所以其结果不一定是机器学习能产生的最优结果。如果我们减少人为的影响,将F封装成一个更大的目标H,让机器自己去学习F的关系,其中H的输入是训练资料+测试资料,输出是测试资料的预测结果,或许能让机器学习到更好的结果。

    这方面已经有一些应用在尝试,譬如人脸辨识领域——输入一堆人脸库和一张测试人脸,输出预测该人脸是否是人脸库中的人脸。具体的做法及相关研究在此不再细述,感兴趣的读者可以观看李宏毅老师的视频教程:

    https://www.bilibili.com/video/av46561029/?p=44

    综上,Meta Learning的介绍到此就结束了,下一篇将回归到GANs上,介绍Meta LearningGANs的结合,并且讲述它们在少样本学习上取得的成果和应用。

    展开全文
  • Meta learning

    2020-09-15 16:46:22
    Meta learning = Learn to learn 二、Meta Learning 1、比较 与Life-long的区别: Life-long:所有任务使用一个模型 Meta:每个任务可能有不同的模型 与Machine Learning的区别: 2、算法步骤 # Step 1:定义一...

    一、Introduction

    Meta learning = Learn to learn

    二、Meta Learning

    1、比较

    与Life-long的区别:

    • Life-long:所有任务使用一个模型
    • Meta:每个任务可能有不同的模型

    与Machine Learning的区别:
    在这里插入图片描述
    在这里插入图片描述

    2、算法步骤

    # Step 1:定义一个learning algorithm的集合;
    # 初始化参数不一样,表示不一样的学习算法
    

    在这里插入图片描述

    # Step 2:评价一个learning algorithm的好坏;
    # N个Task任务的损失函数之和
    

    在这里插入图片描述
    Meta learning的样例的一个个的Task。经常和few-short learning配合使用。

    # Step 3:找到最好的F;
    

    在这里插入图片描述

    3、典型案例

    在这里插入图片描述
    在这里插入图片描述

    4、方法

    在这里插入图片描述

    1. MAML–学习最好的初始化参数
    在这里插入图片描述
    MAML方法的限制:所有task的model structure必须一致。
    MAML和Model Pre-training的区别:
    在这里插入图片描述
    在这里插入图片描述
    Model Pre-training注重模型现在表现怎么样;而MAML注重的是模型经过训练之后表现得怎么样,注重模型的潜力。

    在这里插入图片描述

    MAML训练过程中只update一次,原因是:

    • 速度快。如果update几千次,每个task上训练一个小时,那么时间太久了。
    • 如果只update一次就可以得到很好的参数,,说明这种做法很强,因此将这个作为目标。
    • 可以在测试的时候多update几次。
    • 对于few-shot的任务,如果update很多次,容易过拟合。

    2. Reptile–
    在这里插入图片描述

    展开全文
  • Meta Learning

    2018-12-18 10:01:13
    Meta Learning(元学习)或者叫做 Learning to Learn(学会学习)已经成为继Reinforcement Learning(增强学习)之后又一个重要的研究分支(以后仅称为Meta Learning)。对于人工智能的理论研究,呈现出了:...

    1.前言

    Meta Learning(元学习)或者叫做 Learning to Learn(学会学习)已经成为继Reinforcement Learning(增强学习)之后又一个重要的研究分支(以后仅称为Meta Learning)。对于人工智能的理论研究,呈现出了:Artificial Intelligence --> Machine Learning --> Deep Learning --> Deep Reinforcement Learning --> Deep Meta Learning这样的趋势。

    之所以会这样发展完全取决于当前人工智能的发展。在Machine Learning时代,复杂一点的分类问题效果就不好了,Deep Learning深度学习的出现基本上解决了一对一映射的问题,比如说图像分类,一个输入对一个输出,因此出现了AlexNet这样的里程碑式的成果。但如果输出对下一个输入还有影响呢?也就是sequential decision making的问题,单一的深度学习就解决不了了,这个时候Reinforcement Learning增强学习就出来了,Deep Learning + Reinforcement Learning = Deep Reinforcement Learning深度增强学习。有了深度增强学习,序列决策初步取得成效,因此,出现了AlphaGo这样的里程碑式的成果。但是,新的问题又出来了,深度增强学习太依赖于巨量的训练,并且需要精确的Reward,对于现实世界的很多问题,比如机器人学习,没有好的reward,也没办法无限量训练,怎么办?这就需要能够快速学习。而人类之所以能够快速学习的关键是人类具备学会学习的能力,能够充分的利用以往的知识经验来指导新任务的学习,因此Meta Learning成为新的攻克的方向。

    与此同时,星际2 DeepMind使用现有深度增强学习算法失效说明了目前的深度增强学习算法很难应对过于复杂的动作空间的情况,特别是需要真正意义的战略战术思考的问题。这引到了通用人工智能中极其核心的一个问题,就是要让人工智能自己学会思考,学会推理。AlphaGo在我看来在棋盘特征输入到神经网络的过程中完成了思考,但是围棋的动作空间毕竟非常有限,也就是几百个选择,这和星际2几乎无穷的选择对比就差太多了(按屏幕分辨率*鼠标加键盘的按键 = 1920*1080*10 约等于20,000,000种选择)。然而在如此巨量选择的情况下,人类依然没问题,关键是人类通过确定的战略战术大幅度降低了选择范围(比如当前目标就是造人,挖矿)因此如何使人工智能能够学会思考,构造战术非常关键。这个问题甚至比快速学习还要困难,但是Meta Learning因为具备学会学习的能力,或许也可以学会思考。因此,Meta Learning依然是学会思考这种高难度问题的潜在解决方法之一。

    经过以上的分析,不过是为了得出下面的结论:

    Meta Learning是实现通用人工智能的关键!

    在本文之前,专栏已经发布了两篇和Meta Learning相关的文章:

    学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习机器人革命与学会学习Learning to Learn

    2.Meta Learning百花齐放的研究思路

    为什么说Meta Learning的研究是百家争鸣呢?因为每一家的研究思路都完全不同,真的是各种方法各种试,呈现出一种智慧大爆发的阶段。

    这里主要分析一下最近一两年来的发展情况,先作个分类,然后做一下简要的分析。

    2.1 基于记忆Memory的方法

    基本思路:既然要通过以往的经验来学习,那么是不是可以通过在神经网络上添加Memory来实现呢?

    代表文章:

    [1] Santoro, Adam, Bartunov, Sergey, Botvinick, Matthew, Wierstra, Daan, and Lillicrap, Timothy. Meta-learning with memory-augmented neural networks. In Proceedings ofThe 33rd International Conference on Machine Learning, pp. 1842–1850, 2016.

    [2] Munkhdalai T, Yu H. Meta Networks. arXiv preprint arXiv:1703.00837, 2017.

    以Meta-Learning with memory-augmented neural networks这篇文章为例,我们看一下他的网络结构:

    我们可以看到,网络的输入把上一次的y label也作为输入,并且添加了external memory存储上一次的x输入,这使得下一次输入后进行反向传播时,可以让y label和x建立联系,使得之后的x能够通过外部记忆获取相关图像进行比对来实现更好的预测。

    2.2 基于预测梯度的方法

    基本思路:既然Meta Learning的目的是实现快速学习,而快速学习的关键一点是神经网络的梯度下降要准,要快,那么是不是可以让神经网络利用以往的任务学习如何预测梯度,这样面对新的任务,只要梯度预测得准,那么学习得就会更快了?

    代表文章:

    [1] Andrychowicz, Marcin, Denil, Misha, Gomez, Sergio, Hoffman, Matthew W, Pfau, David, Schaul, Tom, and de Freitas, Nando. Learning to learn by gradient descent by gradient descent. In Advances in Neural Information Processing Systems, pp. 3981–3989, 2016

    这篇文章的思路很清奇,训练一个通用的神经网络来预测梯度,用一次二次方程的回归问题来训练,然后这种方法得到的神经网络优化器比Adam,RMSProp还要好,这样显然就加快了训练。

    2.3 利用Attention注意力机制的方法

    基本思路:人的注意力是可以利用以往的经验来实现提升的,比如我们看一个性感图片,我们会很自然的把注意力集中在关键位置。那么,能不能利用以往的任务来训练一个Attention模型,从而面对新的任务,能够直接关注最重要的部分。

    代表文章:

    [1] Vinyals, Oriol, Blundell, Charles, Lillicrap, Tim, Wierstra, Daan, et al. Matching networks for one shot learning. In Advances in Neural Information Processing Systems, pp. 3630–3638, 2016.

    这篇文章构造一个attention机制,也就是最后的label判断是通过attention的叠加得到的:

    attention a则通过g和f得到。基本目的就是利用已有任务训练出一个好的attention model。

    2.4 借鉴LSTM的方法

    基本思路:LSTM内部的更新非常类似于梯度下降的更新,那么,能否利用LSTM的结构训练出一个神经网络的更新机制,输入当前网络参数,直接输出新的更新参数?这个想法非常巧妙。

    代表文章:

    [1] Ravi, Sachin and Larochelle, Hugo. Optimization as a model for few-shot learning. In International Conference on Learning Representations (ICLR), 2017.

    这篇文章的核心思想是下面这一段:

    怎么把LSTM的更新和梯度下降联系起来才是更值得思考的问题吧。

    2.5 面向RL的Meta Learning方法

    基本思路:既然Meta Learning可以用在监督学习,那么增强学习上又可以怎么做呢?能否通过增加一些外部信息的输入比如reward,之前的action来实现?

    代表文章:

    [1] Wang J X, Kurth-Nelson Z, Tirumala D, et al. Learning to reinforcement learn. arXiv preprint arXiv:1611.05763, 2016.

    [2] Y. Duan, J. Schulman, X. Chen, P. Bartlett, I. Sutskever, and P. Abbeel. Rl2: Fast reinforcement learning via slow reinforcement learning. Technical report, UC Berkeley and OpenAI, 2016.

    两篇文章思路一致,就是额外增加reward和之前action的输入,从而强制让神经网络学习一些任务级别的信息:

    2.6 通过训练一个好的base model的方法,并且同时应用到监督学习和增强学习

    基本思路:之前的方法都只能局限在或者监督学习或者增强学习上,能不能搞个更通用的呢?是不是相比finetune学习一个更好的base model就能work?

    代表文章:

    [1] Finn, C., Abbeel, P., & Levine, S. (2017). Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks. arXiv preprint arXiv:1703.03400.

    这篇文章的基本思路是同时启动多个任务,然后获取不同任务学习的合成梯度方向来更新,从而学习一个共同的最佳base。

    2.7 利用WaveNet的方法

    基本思路:WaveNet的网络每次都利用了之前的数据,那么是否可以照搬WaveNet的方式来实现Meta Learning呢?就是充分利用以往的数据呀?

    代表文章:

    [1] Mishra N, Rohaninejad M, Chen X, et al. Meta-Learning with Temporal Convolutions. arXiv preprint arXiv:1707.03141, 2017.

    直接利用之前的历史数据,思路极其简单,效果极其之好,是目前omniglot,mini imagenet图像识别的state-of-the-art。

    2.8 预测Loss的方法

    基本思路:要让学习的速度更快,除了更好的梯度,如果有更好的loss,那么学习的速度也会更快,因此,是不是可以构造一个模型利用以往的任务来学习如何预测Loss呢?

    代表文章:

    [1] Flood Sung, Zhang L, Xiang T, Hospedales T, et al. Learning to Learn: Meta-Critic Networks for Sample Efficient Learning. arXiv preprint arXiv:1706.09529, 2017.

    本文构造了一个Meta-Critic Network(包含Meta Value Network和Task-Actor Encoder)来学习预测Actor Network的Loss。对于Reinforcement Learning而言,这个Loss就是Q Value。

    本文详细分析详见:学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习

    本文 纽约大学的Kyunghyun Cho 做了评价:

    也算是一种全新的思路。

    3 小结

    从上面的分析可以看出,Meta Learning方兴未艾,各种神奇的idea层出不穷,但是真正的杀手级算法还未出现,非常期待未来的发展!也希望更多的朋友们可以投入到Meta Learning这个研究方向上来。

    展开全文
  • meta learning

    2020-04-07 18:01:05
    1.什么是meta learning 像上图蓝色笔圈起来说的,当准备用一个神经网络解决一个任务时,神经网络的架构(比如是CNN还是RNN,是VGG还是resnet)、初始值的设定、参数更新方式(比如是SGD还是Adam)都是我们自己决定的...

            差不多要一个月没有看李老师的视频了,昨天终于又点开了收藏夹里的视频,OK,开始吧~

    一.概述

    1.什么是meta learning

    在这里插入图片描述
            像上图蓝色笔圈起来说的,当准备用一个神经网络解决一个任务时,神经网络的架构(比如是CNN还是RNN,是VGG还是resnet)、初始值的设定、参数更新方式(比如是SGD还是Adam)都是我们自己决定的,meta learning的目的就是学习一个F,这个F能针对不同的任务,给出解决问题的最好NN。(可能不一定是最合适的,但是比我们自己瞎设定初始值、更新方式会好一点)

    2.meat learning和machine learning的区别

    在这里插入图片描述
            上图是老师的解释,感觉有点抽象,这里举一个例子:
            有很多种怪兽(每一种怪兽都有很多只),相当于是需要我们解决的不同task;我们有很多种武器来对付不同的怪兽,武器就相当于图中的f,即某一具体的NN。
            machine learning:
                    针对某种怪兽(即针对某一task),
                    我们目前已经捕获了一定数量的该种怪兽(即train_set),
                    根据这些被捕获的怪兽挑打磨出最适合对付该种怪兽的武器(即根据train_set找出最适合的f*);
                    但在得到最终的武器之前,我们对武器有一些限定,比如必须要是剑(即NN的架构),剑的初始长度是70cm(初始值的设定)等等(也就是说,这些都是我们自己定的)。
            meta learning:
                    我们捕获了若干种怪兽(即若干个task),
                    我们要让一群人来学习这些被捕获的怪兽的信息,学习完成后,表现最好的那个人就成为了武器专家(即F),他能在我们面对不同的怪兽时告诉我们应该选择怎么样的武器(即面对不同task时,能给出f*, F(Dtask_n) = fn

            如果将原本机器学习中的训练资料记为Dtrain,那么在Meta Learning中的训练资料变为一堆 Dtrain (Dtask_1、Dtask_2…) 和一堆 f* (f1,f2…)的组合。

    3. meta learning的步骤

            我们之前说过,machine learning的步骤是:
    在这里插入图片描述
            meta learning的步骤其实差不多,只是把f变成了F
    在这里插入图片描述
            (a set of F对应上面例子中的那群人,the best F对应上面例子中的武器专家)
            那么如何衡量F的好坏呢?即上图中goodness of F是怎么定义的呢?
    在这里插入图片描述
            还是用上面那个例子。这群人经过学习之后,对于怪兽1(即task1),给出他们觉得最好的武器(即f1),我们用f1去对付一些新的怪兽1(即test_set),最终我们的伤亡数看作 l1;对于怪兽2(即task2),这群人继续给出他们觉得最好的武器(即f2),我们用f2去对付一些新的怪兽2(即test_set),最终我们的伤亡数看作 l2…一共有N个task,我们把每个人的l1,l2…lN之和(即L(F))作为最终的评估标准,谁的L(F)最小,谁就称为最终的武器专家。

    二.MAML

    1.概述

            MAML是一种meta learning方式,全称是model agnostic meta-learning(与模型无关的meta-learning)
    在这里插入图片描述
    在这里插入图片描述

            如上两图所示,maml的训练步骤是:设F初试化的参数是Φ0,将第一个task的数据扔进来,得到一个loss,用这个loss算gradient(g1),然后用这个gradient更新Φ(学习率为ε),变到θ;再利用θ和task的数据结合,又算出一个loss,用这个loss再算出一个gradient(g2),Φ0按照g2的方向进行更新(学习率为η),变到Φ1;再把第二个task的数据扔进来,又得到一个loss,又算出一个gradient…如下图所示:
    在这里插入图片描述

    2.maml和model pre_training的区别

            maml:
    在这里插入图片描述
            图中两条绿色的曲线是不同task上的loss。
            Φ1是maml最终得到的Φ。直接用Φ1的效果不一定是很好的(loss值分别为a,b);但是以Φ1为初始值,训练task1和task2,最终得到的θ_hat1和θ_hat2的loss是很好的(loss值分别为c,d)。
            Φ2是model pre_training得到的Φ。直接用Φ2的效果(loss分别为c和e)要比直接用Φ1的效果好(即c+e<a+b),但是以Φ2为初始值,训练task1和task2,最终的效果(loss值分别为c和f)比以Φ1为初始值训练的效果(loss值为c,d)差(即c+f>c+d)。
            举个不是很恰当的比喻,pre_training就是在挑选目前表现最好的,而maml则是在挑选“潜力股”,即经过历练后表现最好的。

    3.reptile

            与maml相对应的一种方法叫作reptile(不知道这个名字怎么来的…可能只是想与哺乳动物对应),reptile与maml唯一的区别在于:
    在这里插入图片描述
            maml由Φ0到θ1、Φ1到θ2的时候,都只是做了一次更新。而reptile中由Φ0到θ1、Φ1到θ2时,可以做多次更新;Φ0沿着指向θ1的方向更新(学习率为η)就得到Φ1,Φ1沿着指向θ2的方向更新(学习率为η)就得到Φ2

            拖了这么多天,终于写完了!
    在这里插入图片描述

    展开全文
  • Awesome Meta Learning

    2020-09-30 17:55:00
    Awesome Meta Learning A curated list of Meta Learning papers, code, books, blogs, videos, datasets and other resources. Table of Contents Papers and Code Books Blogs Lecture Videos Datasets Workshops...
  • Meta Learning技术 MAML

    2020-04-10 01:41:03
    Meta Learning 最常被用来解决少样本(Few-Shot)的问题,在这边我们介绍一篇经典的论文 Model-Agnostic Meta-Learning(MAML)。由题目可知他是一种「与模型无关的」元学习,亦即这种方法可以匹配任何使用梯度下降...
  • meta learning 第二章

    2019-01-17 09:56:52
    meta learning 第二章,算是比较系统的meta learning 教材,基本上介绍了什么是元学习。
  • Meta-learning

    2020-03-03 03:10:45
    Meta-learning
  • Meta Learning – Step 1Meta Learning – Step 2 Introduction of Meta Learning What is Meta Learning? 在 Meta learning 中,输入使要学习的任务,输出是一个训练好的模型 3 steps: (1) Function with ...
  • MetaLearning入门

    2020-10-30 22:31:46
    Meta Learning 入门 Introduction Machine Learning 让机器能够学习 Meta Learning 让机器学习应该如何学习 以上图为例,假设现在有一百个识别任务,例如是语音识别,图像识别等等,在这些任务学习完成之后,我们...
  • Meta-Learning 论文

    千次阅读 2018-11-24 09:56:03
    Meta Learning/ Learning to Learn/ One Shot Learning/ Lifelong Learning 转自github: https://github.com/floodsung/Meta-Learning-Papers 1 Legacy Papers [1] Nicolas Schweighofer and Kenji Doya. Met...
  • 元学习Meta Learning/Learning to learn

    万次阅读 多人点赞 2018-12-11 12:56:35
    Meta Learning 元学习或者叫做 Learning to Learn 学会学习 已经成为继Reinforcement Learning 增强学习之后又一个重要的研究分支(以后仅称为Meta Learning)。对于人工智能的理论研究,呈现出了 Artificial ...
  • Meta Learning/Learning to learn

    千次阅读 2019-05-30 11:09:32
    转自:知乎 智能单元 Flood Sung 《最前沿:百家争鸣的Meta Learning/Learning to learn》 仅供学习使用,如有侵权,请私删 1 前言 Meta Learning 元学习或者叫做 Learning to Learn 学会学习 已经成为继...
  • 一. Few-shot learning(少样本学习) 1. 本质 N-way K-shot问题:分N类,训练集中每类只有K个样本。... Meta-learning(元学习/学习去学习 learning to learn) 1. 本质 从多个task中学习一个先验知识(prior),用
  • <初入该领域希望能和大家多交流> 关键字:人脸识别、元学习、泛化模型 应用场景:大部分现有模型预训练效果良好,实际应用中多模型是未见过的场景和身份(目标域),即源域与目标域(身份信息、人种信息、...
  • Deep Meta Learning

    千次阅读 2018-09-03 07:41:19
    智能单元第100篇 最前沿:解读ICLR 2018 Best Paper:基于Meta Learning在动态竞争环境中实现策略自适应 https://zhuanlan.zhihu.com/p/35695477     Deep Meta Learning for Real-Time Visual Tracking based...
  • Meta_Learning

    2019-10-05 16:12:12
    模型与解释 meta_learning: 输入训练数据, 输出拟合函数()
  • metalearning_tutorial.pdf

    2020-08-25 15:00:29
    ICML2019 Meta-learning tutorial.ICML 是 International Conference on Machine Learning的缩写,即国际机器学习大会。ICML如今已发展为由国际机器学习学会(IMLS)主办的年度机器学习国际顶级会议。
  • meta-learning few-shot learning
  • MAML: meta learning 论文分析

    千次阅读 2019-12-12 18:07:31
    Meta-Learning(即元学习)是最近比较火的研究方向,其思想是learning to learn(学会学习)。Meta-Learning面向的不是学习的结果,而是学习的过程。其学习不是一个直接用来预测的数学模型,而是学习“如何更快更好地...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,887
精华内容 5,554
关键字:

learningmeta介绍