2021李宏毅机器学习课程-YouTube第十三部分、元學習Meta Learning
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
第十三部分、元學習Meta Learning
元学习(Meta Learning)
就是学习如何学习。例如我们能否通过学习的方式学习超参数(hyperparameters)
。
1.复习机器学习(ML)
机器学习的本质就是找函数
一般为如下图所示的三个步骤。
- 第一步是找一个带有未知参数的函数。
- 第二步是定义损失函数是关于未知参数θ。
- 第三步是定义优化器找一个θ使得损失越小越好这个参数称为θ*。
2.元学习(Meta Learning)
元学习就是在之前机器学习的基础上目标是得到Learning algorithm
即学习学习的学习。
比如下图所示我们可以让机器去学习网络架构、初始参数、学习率等等这些之前都是人为去完成的。
1第一步定义F(φ)
我们需要学的未知的部分就是φ
学习φ的函数就是F(φ)
。
2第二步求Loss()损失
然后就是用φ求损失Loss如果L(φ)是小的那么就说明我们的学习是好的。
评价我们学习之后的Learning algorithm
是好的那么放到测试集之后最终求交叉熵得到的损失l1是小的反之学习的效果不好l1就是大的。
我们在做Meta learning元学习的时候往往是跑很多个模型最终把所有损失加起来得出learning algorithm是不是好的。
我们可以把这些不同的任务称作是不同的Task也可以称为不同的Domain
。
3第三步找一个φ让L(φ)最小
这个使得L(φ)最小的φ叫做φ*。
如下面右图所示我们得到最好的φ的过程一般是用测试集中用来做训练的部分去找到最好的φ而在测试集的测试部分去测试Learning algorithm的结果。这部分是和ML的区别ML里训练的时候不会动测试集的数据。
3.ML v.s. Meta
1目标不同(Goal)
ML
的目标就是得到一个分类的结果。
Meta
的结果是输入一个F通过学习得到一个f这个f可以用来做分类任务。
2训练数据不同(Training Data)
ML
的训练集就是单纯的训练集。
Meta
的训练集还有测试集中训练的部分为了避免叫混有的人称其为Support set测试部分称为Query set。
3学习任务不同(Task)
ML
的任务是一个单一的任务。
Meta
的任务不止一个又叫做跨任务训练(Across-task Training)
4损失函数不同(Loss)
ML
的Loss是一次任务的所有e的和。
Meta
的Loss是所有任务的loss的和。
5相似点
比如两者都有overfitting
的问题一种解决方案是增加多的训练资料或者是对训练资料进行数据增强处理。
另外Meta
也有一堆超参数需要调整但是调整完毕后可以一劳永逸ML
模型的参数通过learning algorithm就可以直接得到。
Development task
理解为验证模型介于训练任务和测试任务之间当我们得到了一堆learning algorithm后我们可以通过Development task确定哪个模型最好。
4.我们能学哪些内容
1学习初始化参数(Initialize)
对于一个梯度下降过程我们不同的初始化参数会带来不同的训练结果而这个初始化参数(Init)
是我们可以通过大量的任务学出来的。
学习初始化参数的一个经典解法就是Model-Agnostic Meta-Learning (MAML)
另一个变形是Reptile
。
2MAML v.s. Pre-training
如左图所示对于初始化参数的讨论我们之前在学习Self-supervised learning
的时候也有提到过当时是用无标记的数据使用BERT
做填空题得到初始化的参数。而MAML
是有标记的研究初始化参数的问题。
如右图所示我们还有一种更为常用的Pre-training的方法叫做multi-task learning
意思是我们把多个任务的带有标记的数据倒在一起研究初始化参数的问题这个方法现在常常被用在Meta中用作MAML的基线(baseline)。
3学习网络架构Network Architecture Search (NAS)
如果我们想要去学习网络架构的话那么φ
就表示的是我们的网络架构。
5.应用
最常见的一个应用就是做数据资料比较少的分类问题(Few-shot Image Classification)
比如一个类别的训练资料只有极少数的几张图片。
另一个是N-ways K-shot classification
也就是我们有n个类别每个类别里有k个资料。例如下面这个三类每类两张图片的分类问题就是3-ways 2-shot。
一般做一个Few-shot Image Classification的问题我们会选择Omniglot
(一共1623类每个类20个资料)的一个数据集从中挑出我们需要的ways和shot做训练。例如最右边的图就是一个从Omniglot中选了20各类别每个类别选一个资料构成的20-ways 1-shot的数据集。