基本概念
首先是机器学习:
然后,什么是元学习(what is meta learning?)
之前,Component都是让人自己设置的。在Meta Learning中,我们期望它能够自己学出来。
不同的meta learning方法就是想办法去学learning algorithm中不同的component。
在一般的ML里,L是用训练资料进行计算的。而在meta-learning里面,l是用测试资料进行计算的。
测试任务是我们真正要解的,真正希望有好结果的任务,而训练任务是跟测试任务无关的那些任务,这些训练任务的目标是要来找出学习的算法(例如根据测试任务的训练集得到一个分类器的算法),并期望在测试任务的测试集上有好的结果。
这种学习的演算法的厉害之处在于,很多few-shot learning的algorithm往往不是人想出来的,而是通过meta-learning得到的。但是两者本身还是存在区别的。
few-shot是目标,meta-learning是达成这个目标的一种手段。
ML v.s. Meta 的差异
上图例子中,最下面的F是已经经过meta-learning训练好的L。
一次within-task training和within-task learning,即一次完整的episode可以得到一个小l。
在learning to initialize这一系列的文章当中,会用到outer loop和inner loop来替代 across-task training和within-task training。
ML vs Meta Learning的相似之处
1、过拟合问题
方法:ML最极端的方法收集更多的训练资料;meat里收集更多的任务。
2、调参(调 learn learning algorithm时候的参数)
通过暴力调参数,找到一个好的learning algorithm之后,遇到新的任务就再也不用调参数了。
3、development通常也是必要的,用于帮助我们选择用于测试的架构,但是大多数meta-learning的文章没有用。只有train datasets和test datasets.
当你用一把learning rate得到了一堆learning algorithm得时候,如何去选择呢,就用development task去挑最好的learning algorithm,再把这个learning algorithm用到testing task上。这样就不是拿testing task直接去调hype parameters。
问题:什么时候 L ( Φ ) L(\Phi) L(Φ)没有办法微分呢?
要看你的参数是什么,如果是离散的东西,例如模型架构的层数,这些东西没有办法做微分,因为它不是连续值,无法进行小变化,例如从3->3.1。 通常可微分的部分是包含在网络神经元连接内的参数。