NTU ML2023Spring Part2.16 元学习
什么是 meta learning
meta learning: learn to learn.
工业界:大力出奇迹!开 1e3 张 GPU 分别跑不同的参数试试.
学术界:没有大量 GPU,只能凭运气调参.
那么能否用 ML 解决 ML 调参的问题呢?这就是 meta learning.
在之前的部分,我们有一个函数 \(F\),输入一个数据集,输出一个训练好的神经网络(另一个函数 \(f\)).这个 \(F\) 是人手动写出来的,比如网络架构、优化算法等.那么能不能用 ML 的方法得到这个 \(F\) 呢?
其实基本步骤是类似的.
- 
先看我们想让机器帮我们决定什么:网络架构、初始参数、learning rate 等.就像之前把神经元的 weight 和 bias 记作参数 \(\theta\) 一样,现在可以把这些(让机器决定的)超参数记作 \(\phi\),原来的函数 \(F\) 记作 \(F_\phi\). 
- 
定义 loss 的计算方式.记 \(L(\phi)\) 为 loss.比如要训练一个二元分类的 classifier,就准备一大堆二元分类的任务,然后让 \(F_\phi\) 在某个任务上得到的结果 \(f_\theta\) 在该任务的测试集上跑出 loss.就这样在很多个任务上都算出它们的 loss,然后取平均就可以了. 为什么这里可以用测试资料算 loss?因为 meta learning 的单位是 task,因此这些任务已经可以算是训练资料,用训练资料里的测试资料(有点绕?应该说是训练任务的测试资料)当然也是可以的. 
- 
优化 loss. - 
如果能计算出 \(\dfrac{\partial L(\phi)}{\partial \phi}\),那自然很好,直接 gradient descent 就完了. 
- 
如果不行,可以考虑用 reinforcement learning 或 evolutionary algorithm 做. 
 
- 
然后就可以拿 \(F_\phi\) 在测试任务的训练资料上得到一个 classifier,用测试任务的测试资料验证.
在测试任务上往往只要少量的训练资料就能达到好效果,但 few shot learning 和 meta learning 不是同一个东西.few shot 是目的,meta 是手段.
在文献里为了避免搞混,常把训练任务里的训练资料叫 support set,训练任务的测试资料叫 query set.
很多 ML 上的东西都可以类比到 meta learning 上来,比如它也会有 overfitting,也可以做 task augmentation,也有 hyperparameters.
meta learning 能学些什么
回忆用 gradient descent 训练一般网络的过程:有一个初始化参数,用 optimizer 通过训练数据不断更新,最后输出.
于是我们可以学习:
- 
初始化参数 Model-Agnostic Meta-Learning (MAML) 在 self-supervised learning 里面,我们也是通过 pretrain 得到一个好的 initialization,那么 MAML 和它有什么不同呢? 详见链接.简单来说,meta learning 也可以看作是一种 transfer learning 的方法. MAML 为什么好?一种解释是它学习到的初始化参数和最优的参数比较接近,所以 gradient descent 一下就到了. 拓展阅读: 
- 
optimizer learning rate 调不出来?试试 meta learning. 
- 
神经网络架构 network architecture search (NAS). 它通常是不可微分的,可以 reinforcement learning 硬做.把网络架构当做 agent 的参数,把架构对应训练之后的 loss(取反之后)当成 RL 里的 reward. 也可以用 evolution algorithm 做.OI 里用模拟退火多于遗传,到实际工程上就反过来了,几乎没人用模拟退火,这应该还是参数量的问题. 还可以强行让架构变得可以做微分:differentiable architecture search (DARTS). 
- 
数据处理 还在手动做 data augmentation?试试 meta learning. 
- 
还有什么? 目前还在尝试阶段. 直接抛弃 gradient descent,训练一个 (meta) network,输入数据,输出目标 network 的参数. 
上面的方法都是先训练出一个 network,然后再测试.有一种方法可以输入训练资料和测试资料,直接得到输出资料的答案,它又叫 metric-based approach.
详见过去课程的视频:
- https://youtu.be/yyKaACh_j3M
- https://youtu.be/scK2EIT7klw
- https://youtu.be/semSxPP2Yzg
- https://youtu.be/ePimv_k-H24
meta learning 在 few-shot image classification 里有应用.假设分类任务有 n 个类别,每个类别有 k 张训练数据,那么就叫 n-way k-shot task.一个经典的数据集是 Omniglot.
meta learning 更多的应用可以看这张表格.

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号