Meta learning-MAML and Gradient descent as LSTM
摘要
本章要讲的是Meta learning,MAML及 Gradient descent as LSTM。Meta learning是让机器能够在学习中进步,使得自己的学习能力越来越强。MAML是找最好的初始化参数的方法。Gradient descent as LSTM是LSTM向着MAML的变形,也是用来找最好的初始化参数的。
1、Meta learning
1.1 Meta learning是什么
Meta learning是让机器学习如何去学习,让机器可以从以往的学习中找到学习的经验,使得机器学习能力越来越强。 以下图猫狗辨识为例,Meta learning是输入资料,输出F,F可以找到一个Function f,f可以完成猫狗辨别的任务。
1.2 Meta Learning架构
首先设计一个Network Structure架构,用一个合适的方法对模型参数初始化,根据训练资料和初始化参数计算Gradient,再更新参数,反复多次,直至找到最佳的参数值。 显然,Meta Learning中最重要的就是Network Structure的设计,也就是Learning Algorithm的设计。
1.3 如何评价Learning Algorithm
让其去完成多个任务,得到完成每个任务后的loss值,用loss值的和,用来评估该Learning Algorithm的好坏。 有一个叫Ominglot的数据集是专门用来评价Mate learning的t的好坏的。
2、Meta learning最近的技巧
2.1 MAML
MAML是用来找最好的初始化参数的,它是以初始化参数Φ作为训练目标来训练model的。 具体点说,我们找的初始化参数Φ是希望它经过训练后能找到最小的loss值点,MAML并不在意初始化参数Φ在训练前的表现,所以MAML认为最好的点是下图所示的点。 而Model Pre-training不同,它在意的是初始化参数Φ在训练前的表现,它需要找的是能让loss值在训练前最好的初始化参数Φ。所以Model Pre-training认为最好的点是下图所示的点。 MAML在实做时,为了缩短训练时间,通常用只更新一次得到的Loss值代替完全训练好的模型的loss值。
2.2 MAML-Real Implementation
在更新初始化参数时,取第二次的导数来更新初始化参数的值。 而Model Pre-training是直接将每次的导数都用在初始化参数的更新上。
2.3 Reptile
Reptile是更新很多次参数得到θm,然后将初始化参数直接向着θm的方向进行更新。 对三者进行比较可以发现,Pre-train的结果是比较烂的,MAML是最好的,Reptile随着训练次数的增加,慢慢逼近于MAML。
3、Gradient Descent as LSTM
上图是MAML,与下图的RNN做对比,可以发现两者其实是很像的。 现在用的一般都是RNN的变形LSTM。 于是写出LSTM的公式,与MAML做比较,可以观察到两个公式是有相似的地方的,再以此对LSTM进行变形,希望它和MAML公式一样。
- 将Ct和Ct-1当作θt和θt-1。
- 将ht-1和Xt换成Gradient -▽θL。
- 让Z就是Gradient-▽θL。
- 让Zf永远都是1。
- 让Zi是η。
经过以上变形,得到下图所示的LSTM,此时的LSTM和MAML就是一样的了。 因为Zf代表的是记忆功能,Zi代表的是学习速率,若它们的值是固定的,那么在处理问题时就无法随机应变,就显得不够智能,如果让机器自己学到根据不同实际情况取不同的Zf和Zi的值,这样就更有效更智能了。有一个常用的办法是将θt-1得到的loss值作为Other输入,于是最终的model(LSTM for Gradient Descent)就变成了下图所示: LSTM for Gradient Descent和一般的LSTM比较可以发现,它们的区别在于前者的θ会作为输入影响Gradient。 在实做上,为了减少运算量,我们只用一个LSTM进行训练,所有的参数都是共用同一个LSTM。
方法
- Meta learning的做法是设计一个Network Structure,这个Network Structure是复杂的神经网络,让其完成多个训练任务,当它遇到与曾经训练过的任务类似的任务时,它会凭借还保留在神经网络里的一部分参数,快速找到完整的参数,以此提高效率。
- MAML的model架构和Meta learning是相同的,它们的区别是MAML是以找到最好的初始化参数Φ作为训练目标,所以在训练过程中,每训练一次得到的loss,需要对Φ求导,再向梯度方向改变Φ,循环往复,直至求得最好的Φ。
- Gradient descent as LSTM它的目的和MAML是一样的,都是为了找到最好的初始化参数,不过前者是在对LSTM向着MAML的方向进行的变形。
结论与展望
Meta learning为什么能够做到让机器能够从学习中进步,提高学习效率?我认为是因为Meta learning每完成一个任务,都会记下该任务的一部分参数,当再次遇到类似的问题时,会调用这一部分参数作为初始化参数,这样就会缩短训练时间并一定程度的提高了准确率。但是该方法存在明显的问题,就是当Meta learning的Network Structure太简单或者训练任务太多时,最开始完成的任务留在神经网络的参数会被后面任务的参数覆盖,导致最开始完成的任务被machine遗忘,这个问题还尚待解决。 Meta learning在实做中,还需要和MAML一起用,在Meta learning完成任务的同时MAML找到最好的初始化参数,这样Model学习能力的提升才比较明显
|