元学习入门:MAML

Meta Learning 的算法有很多,有些高大上的算法可以针对不同的训练任务,输出不同的神经网络结构和超参数,例如 Neural Architecture Search (NAS) 和 AutoML。这些算法大多都相当复杂,我们普通人难以实现。另外一种比较容易实现的 Meta Learning 算法,就是本文要介绍的 MAML 和 Reptile,它们不改变深度神经网络的结构,只改变网络的初始化参数。

训练神经网络的第一步是初始化参数。当前大多数深度学习框架都收录了不同的参数初始化方法,例如均匀分布、正太分布,或者用 xavier_uniformkaiming_uniformxavier_normalkaiming_normal等算法。除了用随机数,也可以用预训练的网络参数来初始化神经网络,也就是所谓 transfer learning,或者更准确地说是 fine-tuning 的技术。

预训练的网络比随机初始化的网络有更强的学习能力,因此 fine-tuning 也算是一种 Meta Learning 的算法。它和我们今天要介绍的 MAML 以及 Reptile 都是通过初始化网络参数,使神经网络获得更强的学习能力,从而在少量数据上训练后就能有很好的性能。

MAML 专注于提升模型整体的学习能力,而不是解决某个具体问题的能力,因此,它的训练数据是以 task 为基本单位的,每个 task 都有自己独立的损失函数。训练时,不停地在不同的 task 上切换,从而达到初始化网络参数的目的,最终得到的模型,面对新的 task 时可以学习得更快。

Task 1 是猫狗分类任务,而 Task 2 是苹果橘子分类任务。Learning Algorithm F 即 Meta Learning 的算法,它在 Task 1 上经过训练,吐出一个分类器f1用于分类猫和狗,在测试集上算出的损失为l1,在 Task 2 上又吐出一个分类器f2 ,损失函数是l2 。

元学习入门:MAML_第1张图片

我们始终要牢记,Meta Learning 最终的目的是要让模型获得一个良好的初始化参数这个初始化参数在训练 task 上表现或许并不出色,但以这个参数为起点,去学习新的 task 时,学得会又快又好。而普通的 Learning,则是着眼于解决当前的 task,不会考虑如何面对新的 task。

元学习入门:MAML_第2张图片

元学习入门:MAML_第3张图片

元学习入门:MAML_第4张图片

MAML

左侧为 MAML 算法,右侧为传统的预训练算法。

元学习入门:MAML_第5张图片

元学习入门:MAML_第6张图片

 

https://zhuanlan.zhihu.com/p/72920138

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(元学习)