元学习入门文章目录
第一章 元学习入门之元学习是什么
前言
因为某些导师的原因,不得不学习元学习,所以本系列文章会简单的介绍一些元学习的学习心得
元学习
元学习是什么
在说元学习之前,我们先复习一下机器学习(ML)是什么?用最经典的🌰:猫狗分类器来说,我们需要寻找一个函数,它的输入是一张图片,输出是猫或者狗。大体上分为三个步骤:
-
先定义一个函数(net),初始化它的参数,我们记作
f ( θ ) f(\theta) f(θ) -
再定义一个损失函数,用这个函数来衡量函数的好坏,我们记作
L ( θ ) = ∑ N = 1 N e n L(\theta)= \sum^{N}_{N=1}{e_n} L(θ)=N=1∑Nen
-
开始优化,寻找一个theta,使得损失函数最小,输入猫或者狗的图片,通过梯度下降等方法,寻找最合适的theta
θ ∗ = a r g m i n L ( θ ) \theta^* = argminL(\theta) θ∗=argminL(θ)
好了,回顾完ML,现在再来看看元学习做了什么,ML中,我们学习了一个二元分类器,这个分类器可以分辨猫狗,那么现在元学习的目标是什么呢?显然,它依旧是要学习一个函数F,只不过这个函数的输出是一个函数f,我们的目标就是希望这个F输出的f可以去自己分辨(其他)的二元分类例如汽车和自行车 等等。
元学习学习什么
1. 学习的内容
在ML中,我们优化的目标可能是权重或者其他一些,而在元学习中,我们优化的目标可能是网络结构、lr、初始化参数等等,我们统一记作phi
ϕ \phi ϕ
2. 输入&损失
对于ML,输入大家都很熟悉,那么元学习呢?在元学习中,一般把训练集叫做训练任务(Training Tasks),依旧以训练二元分类器举🌰 ,那我们的task1可能就是苹果&橘子,task2就是自行车&汽车。而每个task中包含了训练集和测试集(在一些paper中,训练集被称为Support set, 测试集被称为Query set)
那么,有了task之后如何继续呢,那肯定是针对每个task进行计算了,最后计算总的loss,如下图
不过这里出现了一个问题不知道大家注意到没?传统ML或者DL中,在训练的过程中,测试集是不可以参与的!其实呢,在Meta Learning中,训练的单位是task,而task是包含了训练集和测试集,是可以参加训练的,可以这么想,一个task中的训练集和测试集就是ML中的训练集划分出来训练集+验证集,就没那么别扭了。
3. 如何优化
已经有了Loss,那么如何优化呢?,首先写出损失函数的表达式
L ( ϕ ) = ∑ n = 1 N l n L(\phi) = \sum_{n=1}^{N}{l^n} L(ϕ)=n=1∑Nln
优化的手段是和ML差不多的,那么如果碰到了不可微的情况怎么办呢,一般采用强化学习或遗传算法
OK,总体上的介绍就是这么多,下面看一下总体框架
所以Testing Task才是我们关心的任务,并且我们只需要少量的标签!(很像few shot learning)
总结
其实元学习就相当于是一个套娃,学习了如何学习,当然这是可以一直套下去的,所以。。。套你
🐒。。。
具体来说呢,就是把ML过程嵌套了一层,如下图
传统ML中,我们可以认为是One-Task training, 而元学习是跨任务的学习!
以上,就是元学习最简单的介绍咯