Meta Learning-MAML
所谓Meta Learning,就是让机器学习如何学习,即:机器可以根据之前所学,更好更快地完成一项任务。 不同于Machine Learning只能完成单一的任务,Meta Learning可以完成多种不同的任务机器之所以能够学习地更快并不是依赖于在旧任务中已获取的“知识”,而是机器学到了如何去更好获取知识的方法,并将这一方法应用于新任务当中,从而较快地提升学习效率。
基本流程
回顾Machine Learning的过程。Meta Learning其实也是一样的,就是把函数
f
f
f替换成了学习程序
F
F
F。
Step1:Define a set of learning algorithm
具体而言,我们训练的是参数;给算法中的 Training Data 可能是不同任务的。 我们希望机器可以替代人类,进行红色框框中的工作,包括结构设计、参数初始化、迭代公式等等。
Step2:Defining the goodness of a function F
然后,我们要定义Loss Function。 给
F
F
F多个任务,对每个任务生成一个函数
f
f
f后,用测试集测试即可。 对于元学习,我们要准备的不是“数据”,而需要准备“任务”。 经常与 few-shot learning 一起使用。因为任务很多,数据量很大的话,训练的时间成本太高了。 为了区分 Training Task 与 Testing Task,我们定义训练数据与测试数据:Support Set与Query Set。
Few-shot的例子
Omniglot是一个梵文数据集。 20-ways 1-shot 即我们目前的分类任务有 20 个类别,每个类别有 1 个训练资料。 对于Meta Learing,我们取一些“字母”,作为训练数据,机器学着为这些字母分类。在测试时,我们给机器一些全新的“字母”集合,机器也能完成对其的分类。
MAML
我们来学一个最好的参数初始化方法。最后学出的参数,显然是与初始化参数有关的,因此我们有函数关系
L
(
?
)
=
∑
n
=
1
N
l
n
(
θ
^
n
)
L
L(\phi)=\sum_{n=1}^N l^n(\hat{\theta}^n)L
L(?)=∑n=1N?ln(θ^n)L。 使用梯度下降训练
?
\phi
? 。 此外,这个方法与 model 预训练的方法区别在于,在 MAML 中,我们在意的是训练后得到的参数。
one-step learning
为了精简计算,将后两项视为0。
Real Implementation
Reptlie
|