Meta learning
元学习=learn to learn
成为一个better learner
可以做语音和图像的辨识,来实现text classification
要做的任务和训练的任务不是一个领域
有更好的学习技巧
machine learning是根据train data找一个最佳function,根据test data得到一个output
meta learning是根据train data得到一个function F,F可以找到machine learning的最佳function,具体如下图所示
machine learning中的其实就是weight组成的vector,通过梯度下降的方法,人为的调整learning rate,不断的迭代,从而训练出最好的weight
Mata learning是由许多许多的task来组成的,其训练资料也是由许许多多的task组成的。下图的learning algorithm F就是我们要找的结果,其中meta learning的loss function,就是全部task的loss function的和,保证总的loss function最小
meta learning的data是由train task和test task组成的,每一个的task都有train data和test data。test task来测试这个model的学习效果咋样,能不能得到一个好的functio,与test data的结果差别不大
validation task从train task弄一部分
meta learning适用什么样的场景呢?
1:只有一两张的test data
2:train task和test task无关
meta learning和few-short learning本质差不多
在few-short中,train data叫support set,test data叫query set
让loss function最小,得到,然后在test task中,用来训练出一个,然后再用test data看看的效果咋样omnilot
N-way代表有20个class K-shot代表每一class有多少种examples(比如数字“2”的不同形态)
Omniglot是一种数据集,1600多个符号,每一种符号有20种examples
few shot learning是利用少量的训练数据得到最优的效能
介绍两种常见的meta learning的model:
MAML
Model Agnostic Meta-Learning---模型无关的元学习
我们要找一个最优的 init ,定义,取一个,然后在不同的train task训练,得到一个输出:,计算出对应的损失函数,通过梯度下降让达到最小,求出最优的
注意:,梯度下降的自变量是
maml和model pre-training区别:
,maml的loss function是训练后的,把对应的weight vector代入f中,得到损失函数,这个损失函数相当于机器学习那个最简单的损失函数
,model pre-training的损失函数的自变量是
其实会决定
在maml中,是基于训练(只训练一次)后的结果,所以loss function不看,看
这个只是初始值
model pre-training,不考虑训练,直接用初始的,计算loss function,简单粗暴,而且在所有的task都是唯一的
二者的区别:
maml:,训练之后找最好
model pre-training:,直接找最好
在得到最优的初始,只做一次的梯度下降
为什么只有一次呢?
1:训练时间太长
2:梯度下降一次得到的结果已经足够好
3:few shot的data少,避免overfit
4:在train task只训练一次,但是在test task可以训练很多次啊
imageNet是做图像识别的大型数据库
maml的经过求梯度得到,一次训练就可以,就是最优解了,带入loss function中,
数学推导:
将第二个公式代入第一个公式,变为求,得到结果:,取其中的一项来进行计算,得到,其中这一项好求,这就是loss function啊,主要来求,只取第j维,如果,那第一项为0,得到:,如果,则,但是还得求二次偏导数,这样太麻烦了,为了简化把看为0,
在实际中,不用对求偏导数,而是对求偏导数
reptile更简单,训练不只一步,的方向是和的连线,而maml的方向是梯度下降后的方向
三者的区别
仅限于两次训练
pre-train效果太差
激活函数用RELU函数