什么是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方法。现有的方法一般还是使用梯度下降, 的建模思路主要有两种
- 而在很多情况下,模型参数 不能一步优化到最优值,所以 往往是迭代式的:。现在的迭代式建模思路主要集中在参数更新过程中模型参数 与其梯度 的相对于 的比例调节上。此时将RNN作为 应该是比较典型的一种做法。
- 使用 生成 的初值,使得模型之后能够利用梯度下降快速下降到一个比较好的极值点。比较出名的MAML方法就是采用这个思路。