一文学会Machine Learning & Meta Learning

Machine Learning

Machine Learning的目标——找一个function(一般由神经网络搭建,即一个神经网络表示一个函数)。例如在分类问题中,我们向函数中输入一张猫图片,这个函数能够正确地识别出图片的内容是一个猫,如下图右上角所示。

Machine Learning有三步:

第一步:定义一个函数,该函数名为fθ,由神经网络搭建(用θ表示神经网络要学出来的参数,即偏置biases和权重Weights),这个函数中有一些未知的参数,例如偏置biases和权重Weights。如下图右中部分所示。

 第二步:定义损失函数L(θ),损失函数L(θ)是关于θ的函数。那么如何定义损失函数,请看下面:

        首先需要一些训练样本,假设我们以前述分类问题为例,将训练样本送入搭建好的神经网络中(目标函数fθ中)得到输出,再与正确答案计算误差Corss—entropy(交叉熵,一般应用在分类问题中),把每一个训练样本的Cross—entropy加起来就是损失,由于该损失是关于θ的函数,因此损失函数L(θ)便为所有训练样本的累加损失。上述过程如下图右侧部分所示。

 第三步:找出一个θ,使得损失函数L(θ)越小越好。让L(θ)越小的θ我们用θ*表示。一般采用梯度下降的方法求取最优参数θ*。如下图所示。

         最优参数θ*使得神经网络(目标函数fθ)具体化到最优神经网络(最优目标函数fθ*),该最优神经网络(最优目标函数fθ*)便是我们要求的最终结果。

 Meta Learning(Learn to learn)

        元学习(Meta Learning)或者叫做学会学习(Learn to Learn),它是要 “ 学会如何学习 ” ,即利用以往的知识经验来指导新任务的学习,具有学会学习的能力。

        其实学习这件事情本身就是一个function,这个function我们用F(人定的)来表示,这个函数的输入不是一张图片,而是data set,该函数的输出是另外一个函数f*,f*表示最优分类器。

        那么我们能不能够让机器来直接学到这个函数F呢?我们能不能够效仿Machine Learning的步骤来学到这个函数F呢?我们能不能够做到学到如何学习这件事情呢?答案是:肯定可以的!

        我们可以借助Machine Learning的思想步骤,来学到这个函数F,学到函数F也即就是元学习的目标。

        我们知道,Machine Learning通过三个步骤想寻到函数fθ*,而Meta Learning也是通过三个步骤来找到Learning algorithm(F*)。

Meta Learning有三步:

第一步:F中要有一些要被学到的东西。我们在Machine Learning中找寻的函数fθ*的最优参数Weights*和biases*是要被学出来的,换句话说是在神经网络中训练出来的。那么在Meta Learning中也不例外,对于函数F来说,我们也要找出一些要被学到的东西。

        在Machine Learning中,Net Architecture、Initial Parameters、Learning Rate……等都是人为设定的;但在Meta Learning中,我们希望这些东西可以被机器学出来。在Meta Learning中,我们用Φ表示要学到的东西,即可学习的成分。

第二步:定义损失函数loss function ,损失函数可决定某一组参数的优劣。我们知道,在Machine Learning中,损失函数L(θ)来自于训练样本。那么在Meta Learning中,损失函数L又该如何定义呢?且看下面。

        在介绍Meta Learning中的损失函数之前,我们先来看看在Meta Learning中训练的内容以及测试的内容是什么。

        在Machine Learning中,我们只考虑一个任务,训练的内容被称为训练集,测试的内容被称为测试集;在Meta Learning中,训练的内容为训练任务,而训练任务中又分为训练资料和测试资料,测试的内容为测试任务,测试任务中又可分为训练资料和测试资料。

        以二分类问题为例,在上图中,训练任务(Training Tasks)中有两个任务,分别为Task1和Task2,其中Task1的目标是将苹果和橘子分开,而Task2的目标是将汽车和自行车分开。在每个训练任务中,都分有训练资料(Train)和测试资料(Test)。

        接下来我们来定义损失函数L(Φ)。

        有了上述训练任务之后,我们如何知晓FΦ的好坏?(注意:FΦ表示的是还没有训练的F,FΦ*则表示训练好之后得到的最优参数Φ*所对应的F)我们可以把某一个训练任务的训练资料送入FΦ进行学习,从而得到一个分类器fθ1*,该分类器的工作是分类苹果和橘子。如果该分类器的性能较好,那么我们就可以知道FΦ的性能较好。如下图所示。θ1*表示分类器fθ1*的参数,该参数经过FΦ用训练任务中的训练资料学到的。

如果该分类器的性能较差,那么我们就可以知道FΦ的性能较差。如下图所示。 

         那么我们如何才能得知分类器的性能优劣呢?方法是:我们可以用训练任务中的测试资料来测试分类器的性能。

        我们将训练任务中的测试资料送入到分类器中,得到预测结果,并与真实标签作比较,得到误差l^1,该过程如下图所示。误差l^1表示分类器fθ1*在测试资料上的表现如何。若误差l^1越小,则表示分类器在测试资料上的性能越好,从而可说明FΦ越好;反之亦然。

        到目前为止,我们只考虑了一个任务Task1,在Meta Learning中,一般会考虑多个训练任务,因此,对于任务Task2,以同样的方式学出一个分类器fθ2*,并将测试资料送入分类器得到预测结果,并与真实标签比较从而得到误差l^2。

        将Task1和Task2的误差加在一起,得到总损失Total loss。

        我们在举例时只考虑了两个训练任务,在Meta Learning中,一般会有很多很多的训练任务,因此总损失可写成如下形式(N表示训练任务的数量)。        

         在Meta Learning中,对于每个训练任务,计算loss的时候,我们是用训练任务中的测试资料来进行计算;而在一般的Machine Learning中,我们在计算loss的时候是用训练样本(训练资料)来计算的。如下图所示。

 以上就是在Meta Learning中的损失函数的确定。

 第三步:找到一个Φ使得L(Φ)最小,即最优参数Φ*需要被确定。如下图所示。

         最优参数Φ*确定之后,FΦ就会被确定下来,即得到FΦ*至此,我们有了FΦ*。

Meta Learning的框架

        给定训练任务(训练任务中有训练资料和测试资料),通过训练任务学到FΦ*,将测试任务中的训练资料送入到FΦ*得到分类器fθ*,随后将测试任务中的测试资料送入到学到fθ*中,就可以得到测试数据的预测标签。整个流程如下图所示。

Machine Learning与Meta Learning的区别

目标 

        Machine Learning与Meta Learning都以找一个函数为目标。以分类问题为例,在Machine Learning中,我们力求找到一个函数f;而在Meta Learning中我们要找的函数F它是以找到f为目标的。如下图所示。

 训练资料与测试资料

        在Machine Learning中,我们只考虑一个任务,我们使用该任务中的训练资料用于训练,该任务中的测试资料用于测试;而在Meta Learning中,我们要考虑的不仅仅是一个任务,此时会有很多很多任务,这些任务分为训练任务与测试任务,其中训练任务又可分为训练资料和测试资料,而测试任务中也有训练资料和测试资料。一般地,某个训练任务中的训练资料可被称为Support set,而测试资料可被称为Query set。

         在Machine Learning中,F是人为设定的,F包括有学习率、网络结构……等等,这些内容都是由我们去设定,向F中输入训练资料,经过训练得到训练结果fθ*,即为最优分类器;而在Meta Learning中,F是通过很多的训练任务学习而得到的。如下图所示。

 损失函数loss function

        在Machine Learning中,损失loss可由训练集中的每个训练样本的损失累加计算而得;而在Meta Learning中,损失loss可由所有的训练任务中的测试样本(测试资料)的损失累加计算而得。 

总结 

        在Machine Learning中,我们只考虑一个任务,训练的内容被称为训练集(训练资料),测试的内容被称为测试集(测试资料);在Meta Learning中,训练的内容为训练任务,而训练任务中又分为训练资料和测试资料,测试的内容为测试任务,测试任务中又可分为训练资料和测试资料。 

        在Machine Learning中,首先我们需要人为给定超参数(例如:学习率等),随后将训练集送入人为设定好的模型中进行训练,得到最优参数θ*(最优权重Weights*和最优偏置biases*),从而得到最优分类器fθ*,然后将测试集送入分类器中得到预测结果。

        在Meta Learning中,我们不需要人为给定超参数,机器会自动学出来的。我们使用多个训练任务通过训练学习来找到最优F,即FΦ*。测试任务中的训练资料送入到FΦ*中得到适合于新的特定任务(这里指测试任务)的最优分类器fθ*,随后将测试任务中的测试资料送入到该最优分类器fθ*得到预测结果。

        元学习希望使得模型获取一种学会学习调参的能力,使其可以在获取已有知识的基础上快速学习新的任务。机器学习是先人为调参,之后直接训练特定任务下深度模型。元学习则是先通过其它的任务训练出一个较好的超参数,然后再对特定任务进行训练。

        在机器学习中,训练单位是样本数据,通过数据来对模型进行优化;数据可以分为训练集、测试集和验证集。

        在元学习中,训练单位是任务,一般有两个任务,分别是训练任务(Train Tasks)亦称跨任务(Across Tasks)和测试任务(Test Task)亦称单任务(Within Task)。训练任务要准备许多子任务来进行学习,目的是学习出一个较好的超参数,测试任务是利用训练任务学习出的超参数对特定任务进行训练。训练任务中的每个任务的数据分为 Support set 和 Query set;Test Task 中数据分为训练集和测试集。

        当训练一个神经网络的时候,具体一般步骤有,预处理数据集D,选择网络结构N,设置超参数γ ,初始化参数θ0,选择优化器O,定义损失函数L,梯度下降更新参数θ。具体步骤如下图左边所示。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值