元学习的理解

点击上方“视学算法”,选择加"星标"或“置顶”
重磅干货,第一时间送达
来源:机器学习算法与自然语言处理

本文约1673字,建议阅读4分钟本文介绍了元学习机器相关方法。

今年各大顶会中,Meta learning这个关键词热度上升幅度很大,很兴奋(但是也怕这个领域像cv一样内卷。。。)

那么元学习是什么呢?我们知道,有监督学习是要学习一个从样本X到标签Y的映射  .我们学习到了这个函数,便可以用这个函数对所有可能的样本的标签进行预测。

但是,不同的学习任务,比如桌子和椅子的分类,或者人和动物的分类,映射f是不一样的,所以当我们学习了一个任务的映射f后,若要再学习另外一个任务,那么一切只能从头开始。

实际上,不同的相似任务之间是有联系的。人类能够做到只观看一个物体的一张或几张图片,便在之后的照片中准确地识别。这就是利用了不同任务间的联系,让我们积累了对学习这类任务的经验,并用这份经验快速地对新任务进行学习,这便是learn-to-learn(学习如何学习)。我们希望计算机也像人类一样,捕捉不同任务之间的相似之处,从而快速对新任务进行适应,而这就是元学习。

元学习的理解_第1张图片

左边为两个列分别为两个画家的画作。通过左边,你肯定能辨别右边来自哪一个画家。人类学习之快,值得深思。

下面我们从更本质的角度来进一步刻画元学习。

假设我们有N个元素的数据集  ,有了这个数据集D,我们便可以学习到一个函数f,使得  .换句话说,从数据集  到函数  有一个映射  ,使得  .注意这个函数是从数据集到函数的映射,与我们一般学习的函数不同。

在我们认识的一般的监督学习中,上面的函数g,便是整个梯度下降的过程的抽象,这个过程把数据集D转化为了函数f。

用梯度下降来作为映射g两个问题:

1.学习速度太慢。梯度下降动辄几个小时的训练,作为一个函数,规模也忒大了。于是我们想要找出一个函数g,使得求g的函数值f的过程能加快。

2.“梯度下降”这个映射仅仅利用了D的信息(因为这个过程只是在拟合训练集),因此若D的规模太小,则很可能会过拟合。于是我们想让  包含一部分D之外的信息,也就是从其他任务中获取信息,从而增加其泛化能力。

为解决这两个问题,可以想到用一个神经网络来代替整个梯度下降过程。

元学习的理解_第2张图片

如上图,左边是数据集D,D通过一系列的神经网络转化为 的参数  。这样一来,数据集直接通过一个简单的前馈函数g转化为最终的函数。

问题又来了,如何得到这个前馈函数的参数呢?刚刚说过,g是数据集到函数f的映射,回忆一下,一般的监督学习中,学习一个x到y的函数是用很多样本x来拟合。放到这个问题里,x变成了整个数据集D。因此我们需要用很多个数据集来拟合函数g。

如何拟合呢?注意到g是从数据集到函数f的映射,因此训练过程测试集中的元素是一个一个的数据集。也就是说,我们的学习目标是让函数 对各种任务的数据集作用都能得到对应任务的泛化能力很强的模型  。因此我们需要将每个数据集  拆分为两个部分:   ,训练时g作用于  ,得到模型  ,然后对  中样本进行测试,得到的预测值与真实值之间求loss,然后梯度回传更新函数g,这样便使得g产生的是具有更强泛化能力的  。这是一般的监督学习无法完成的,因为传统监督学习只能用训练集进行训练,泛化能力无法保证。而元学习使得学习上升了一个维度,从而能用测试集进行训练。

元学习的理解_第3张图片

元学习训练过程图示,数据集分为训练用数据集(meta-train)和测试用数据集(meta-test),每个数据集内部又分为训练集和测试集。

经过这样的训练,  经过各个数据集的洗礼,其中包含的是各个数据集所共有的信息,这些信息能够帮助模型  不仅仅利用数据集D的信息,而是综合各种数据集的信息,对新数据进行预测,从而泛化能力得以增强。这样一来,第二个问题也解决了。

g中所带信息也可称为先验信息。在一般的监督学习中,先验信息通常人为指定,比如在loss中加入参数的平方项来降低模型复杂度、batch normalization、dropout、CNN的卷积都是典型的增强泛化能力、减少过拟合的先验信息。但在元学习中,g的先验信息是从各个数据集中学习得来,这种根据数据集的共性来捕捉先验的方法,比人为指定更能贴合数据集本身的特征,因此效果显著。

由于元学习所习得模型泛化能力显著,因此模型可用于小样本学习(few-shot learning)。另外,迁移学习、自动机器学习本质上都属于元学习类别。

reference:

ICML tutorial 2019

——END——

点个在看 paper不断!

你可能感兴趣的:(算法,机器学习,人工智能,深度学习,神经网络)