zoukankan      html  css  js  c++  java
  • 什么是meta-learning

    什么是meta-learning

    一、总结

    一句话总结:

    虽然我要做的这个数据集数据很少,但是我有很多其它数据很多的数据集呀。如果模型可以先在其它数据比较多的数据集上学到这些有关“该如何学习新的知识”的先验知识,由此让模型先学会“如何快速学习一个新的知识”,岂不美哉

    1、传统的机器学习是在干嘛?

    有数据集$$D = { ( x _ { i } , y _ { i } ) }$$
    使得模型对于测试集上的数据的预测$$hat { y } = f _ { heta } ( x )$$有最小的误差。

    2、传统dnn在有大量可得数据的情况下是行得通的。然而事实上在很多情况下,有的数据集数据量非常少,我们很难在上面直接训练出来一个有用的机器学习模型。那么这个问题如何解决呢?

    先验知识:从人类学习分类物体的过程来看,人类认识新的物体并不需要很多的样本作为支撑,这从某些角度说明人类在学习一个新任务的时候,比机器学习模型拥有更多的先验知识。
    先验知识分类:比如说,我小的时候知道了书本是方的,杯子是圆的,那么我不光知道了如何分类书本和杯子,我还同时建立了这么一个概念:“形状不同的物体很可能不是同一类物体”。同理我有很多其它的知识,比如”颜色不同,物体不同“,”查克拉不同,物体不同“。
    让机器学习到先验知识:这些知识归结起来,可以认为是规定了我“如何去学习一个新知识”的方法。所以很多年以后我再看到鼠标和键盘的时候,我不需要见识特别多的键盘和鼠标,只要根据以往的经验,看看颜色,看看形状,识别一下查克拉,我发现根据形状能很轻易地判断鼠标和键盘,于是我就很快知道了该如何区分这两者。

    3、meta-learning的目标?

    从其它数据集获取先验信息:从多个给定的数据丰富的数据集D1、D2、D3...Dn捕捉跨数据集的总体信息(颜色,形状和查克拉很重要)
    较少数据集利用先验信息:从而当我们有一个新的数据较少的数据集D(n+1)的特征(比如根据数据集的特征来看,可能得出D(n+1)内的分类和形状比较相关),来利用这些从其它数据集学到的先验知识来做出判断。

    二、什么是meta-learning

    转自或参考:什么是meta-learning?
    https://www.zhihu.com/question/264595128


    首先简单说一下传统的机器学习是在干嘛:传统的机器学习方法是针对一个特定的,一般是有大量数据的数据集 [公式] ,试图学习出一个预测模型 [公式] (其中 [公式] 是模型 [公式] 的参数,决定了 [公式] 性能 ),使得模型对于测试集上的数据的预测 [公式] 有最小的误差。

    这个思路在数据集 D 有大量可得数据的情况下是行得通的。然而事实上在很多情况下,有的数据集数据量非常少,我们很难在上面直接训练出来一个有用的机器学习模型。那么这个问题如何解决呢?

    从人类学习分类物体的过程来看,人类认识新的物体并不需要很多的样本作为支撑,这从某些角度说明人类在学习一个新任务的时候,比机器学习模型拥有更多的先验知识。比如说,我小的时候知道了书本是方的,杯子是圆的,那么我不光知道了如何分类书本和杯子,我还同时建立了这么一个概念:“形状不同的物体很可能不是同一类物体”。同理我有很多其它的知识,比如”颜色不同,物体不同“,”查克拉不同,物体不同“。这些知识归结起来,可以认为是规定了我“如何去学习一个新知识”的方法。所以很多年以后我再看到鼠标和键盘的时候,我不需要见识特别多的键盘和鼠标,只要根据以往的经验,看看颜色,看看形状,识别一下查克拉,我发现根据形状能很轻易地判断鼠标和键盘,于是我就很快知道了该如何区分这两者。

    所以有的人就这么想:虽然我要做的这个数据集数据很少,但是我有很多其它数据很多的数据集呀。如果模型可以先在其它数据比较多的数据集上学到这些有关“该如何学习新的知识”的先验知识,由此让模型先学会“如何快速学习一个新的知识”,岂不美哉?

    到这里差不多就是meta-learning的motivation了。然后就是如何去做。首先我们先来明确一下meta-learning的目标:从多个给定的数据丰富的数据集 [公式] 捕捉跨数据集的总体信息(颜色,形状和查克拉很重要),从而当我们有一个新的数据较少的数据集 [公式] 时,可以根据 [公式] 的特征( 比如根据数据集的特征来看,可能得出[公式]内的分类和形状比较相关)。来利用这些从其它数据集学到的先验知识来做出判断。然后根据解决方案的建模方法的不同,meta-learning可以分为两种思路:

     

    第一种思路比较简单粗暴。meta-learning模型不是要根据数据集的特征来利用先验信息吗?那好,我直接把我的模型定义为 [公式] ,这里 T 代表训练集,要注意 [公式] 是包含标签信息的。这样一来,先验知识被编码到参数 [公式] 当中, [公式] 可以根据 x 所属的数据集 [公式] 的特征来确定如何分类当前样本 x。

    这个思路可以继续分为基于度量与基于模型两种。

    基于度量的思路把 [公式] 定义为一个与kNN类似的模型,先判断 x 与 [公式] 中各数据的距离,然后按比例将[公式] 中数据的标签整合作为 x 的标签输出。这种方法中模型要学习的也就是度量方法,即如何计算不同样本之间的距离,不同的距离度量可以产生不同的模型。

    而基于模型的思路不直接定义 [公式] 的形式,而是直接用神经网络的方式学习出全部的 [公式]。学习的过程也很简单:在训练中的每一步里,向模型暴露一部分训练数据的标签(这些数据被视作 g 参数表中的 [公式] ),同时隐藏另一部分训练数据的标签(这部分数据被视作 g 参数表中的 x),使模型学会利用有标签数据的信息来对无标签数据作出预测;而在测试过程中,暴露标签的数据也就是一个数据集 [公式] 中的整个训练集 [公式] ,隐藏标签的数据也就是 [公式] 中的整个测试集。

     

    第二种建模思路是这样的:我们知道在一个数据集上学习一个模型就是要根据它的训练集 [公式] 得出 [公式] 的最优参数 [公式] 。那么我们既然是要学会如何学习,自然就是要建模这个学习过程,也就是把学习过程建模为 [公式][公式] 就是meta-learning要学习的目标([公式] 是它的参数),即“决定了我们会对一个新的数据集生成一个什么样的模型 [公式] ”的所谓“学习方法”。

    这样一来,通过给定多个数据丰富的数据集 [公式] ,我们在学习 [公式] 的参数 [公式] 的过程中也渐渐学到了一个比较好的 [公式] 。从而当我们有一个新的数据较少的数据集 [公式] 时,可以根据从其它数据集学到的先验知识 [公式] 学到比较靠谱的模型参数[公式]。不同的 [公式] 的选择就产生了不同的meta-learning方法。现有的方法一般还是使用梯度下降, [公式] 的建模思路主要有两种

    1. 而在很多情况下,模型参数 [公式] 不能一步优化到最优值,所以 [公式] 往往是迭代式的:[公式]。现在的迭代式建模思路主要集中在参数更新过程中模型参数 [公式] 与其梯度 [公式] 的相对于 [公式] 的比例调节上。此时将RNN作为 [公式] 应该是比较典型的一种做法。
    2. 使用 [公式] 生成 [公式] 的初值,使得模型之后能够利用梯度下降快速下降到一个比较好的极值点。比较出名的MAML方法就是采用这个思路。
     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    python 发包爬取中国移动充值页面---可判断手机号是否异常
    python利用selenium和safari浏览器驱动实现新浪微博自动点赞 Demo
    Django学习报错记录
    nginx和tomcat的区别
    Mac主机映射到域名
    mac下eclipse安装svn插件-subclipse
    移动端——等分,居中
    移动端——重置样式
    M端页面-绝对定位布局
    jquery-练习-折叠效果
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13752920.html
Copyright © 2011-2022 走看看