套娃的艺术:Meta Learning
写在前面
早在读研期间就对Meta Learning有所耳闻,听说有个学习框架可以“学习如何调参”,当时还戏言,以后是不是还会有“学习如何学习如何调参”的框架,并可以继续无穷套娃下去。最近因为一些原因,或多或少接触到了Meta Learning,我并不想深入研究其数学原理,只觉它思路清奇,所以去学习了李宏毅老师的《Meta Learning》课程,并阅读了Meta Learning的代表方法之一MAML的paper,觉得挺有趣的。本文仅为笔者入门Meta Learning时产生的理解笔录,希望为后来的同学们学习套娃技术带来一点帮助,本文的脉络与李宏毅老师的课程一致,感兴趣的同学可以去补原课程。
文章目录
1. Introduction
1.1 Meta Learning是什么
一般我们谈 Machine Learning(机器学习),总是基于特定的任务场景,去定义模型结构和目标函数,然后用某种优化方法,学习最佳的参数,使得损失最小。一旦场景和任务发生变化,一般都要重新训练。比如针对“狗”训练的分类器,不能拿来区分不同的“猫”。为了解决这个问题,常见的做法是finetune或迁移学习。
Meta Learning(元学习) 提供了一种新思路:“学习去学习”(Learn to Learn)。它认为模型在经历了足够多的任务学习后,能基于现有的知识,学到“学习”这件事的本质,从而在新任务到来时,能快速达到最优,包括且不限于:
- 学习能力的快速迁移:让“狗狗”分类器快速学习分类以前没见过的动物;
- 处理Few-Shot问题:对小样本任务有效;
- 处理Cold-Start问题:对推荐系统中的长尾效应有效。
这里列出Machine Learning 和 Meta Learning 的区别,便于理解。
输入 | 输出 | 训练目的 | 基本步骤 | |
---|---|---|---|---|
Machine Learning | 一个task: 数据与标签的pair ( X , Y ) (X, Y) (X,Y) | f : f ( X ) = Y f: f(X)=Y f:f(X)=Y | 找到一个最能拟合 ( X , Y ) (X, Y) (X,Y)的模型 f f f | 1. 准备好数据集 ( X , Y ) (X, Y) (X,Y) 2. 计算loss 3. 迭代优化 f f f |
Meta Learning | 很多task: 数据与标签的pair { ( X , Y ) 1 , ( X , Y ) 2 , ⋯ } \{(X, Y)_1, (X, Y)_2, \cdots\} { (X,Y)1,(X,Y)2,⋯} | F : F ( { X s , Y s } ) = f F:F(\{X_s, Y_s \} )=f F:F({ Xs,Ys})= |