Meta-learning-intro

Meta-Learning: Learning to Learn Fast

这是一篇博客(Meta-Learning: Learning to Learn Fast)的笔记,另外参考了对应的中文博客,简单了解什么是meta-learning。

元学习尝试解决深度学习经常需要大量实例数据才能收敛的问题。我们期望好的元学习模型拥有好的泛化能力和适应能力,能够根据少量的样本就学习到比较合适的信息。

元学习可以解决一类定义好的预测任务,这篇文章主要讨论的是监督学习下的元学习问题。例如让一个图片分类器在训练集中没有猫的情况下,在测试集中能够实现只看到几张猫的图片就能够学会识别猫。

Overview

假设有很多的任务可以学习,我们期望元学习模型能够在整个的任务空间下都达到比较好的效果,即使是遇到了一个新的任务也能够表现不错。比如下面的任务:

上面的任务是少次学习的一个示例图,它是元学习在监督学习问题的一个实例,一般说明K-shot N-class,是指一个数据集中class包括K个labeled examples。

为了模拟测试集中的推理过程,在训练的时候,会尝试采样一个support set和一个prediction set,support set用来计算一次loss,然后假梯度下降,使用这个假更新后的参数计算模型在prediction set上的loss,计算梯度,使用这时候的梯度才真正的更新原来的梯度。

通过上面的操作,让梯度下降的方向不是当前loss的梯度,而是“往前看了一步”,让梯度朝着更能拟合新的prediction task的方向优化。

接下来介绍三类经典的meta-learning模型。

Metric-Based

基于度量的方法,核心思想是计算新的样本和当前support set中的样本的相似程度,让后让已有的样本提供信息。

Siamese Neural Networks

Koch, Zemel & Salakhutdinov提出。对于one-shot任务,设计一个CNN网络导出图片特征,然后分辨两个图片对于的embedding的相似程度(使用L1-distance),如果属于同一类就输出1,否则输出0。在测试的时候,让测试样本和support set中所有的图片计算相似度,最相似的那一个图片对应的类就是测试样本的类别。

image-20220330213424764

Matching Networks

Vinyals et al., 2016提出。对于K-shot任务,使用下面的方法:

image-20220330213849574

核心公式:

image-20220330213923274

image-20220330213937734

Relation Network

Sung et al., 2018提出。样本的相似度计算是使用一个CNN方法\(g_{\phi}\)来实现的。

image-20220330214037937

Prototypical Networks

Snell, Swersky & Zemel, 2017提出。

image-20220330214215177

Model-Based

让模型本身拥有快速学习的能力。

MANN for Meta-Learning

Santoro et al., 2016提出。以NTM模型为基础让拥有外部存储单元的MANN(Memory-Augmented Neural Networks)模型(注意,仅仅是GRU和LSTM这些不属于MANN)适用于元学习。

image-20220330215049680

MetaNet

Munkhdalai & Yu, 2017提出。这里的fast weights和slow weights需要进一步了解。

image-20220330215357448

Optimization-Based

不再依赖于具体的模型,而是直接从梯度下降的原理出发进行设计。

LSTM Meta-Learner

适用LSTM来显式建模梯度下降的过程。Ravi & Larochelle (2017)提出。

image-20220330215638810

把梯度下降,看做是一步LSTM中的状态更新:

image-20220330215906741

image-20220330215923820

然后使用LSTM来显式的建模梯度下降步骤:

image-20220330220104006

MAML

Model-Agnostic Meta-Learning 简称 MAML (Finn, et al. 2017),是一种通用的优化算法,

MAML Algorithm

使用不同task,分别计算梯度,然后再使用prediction set进行实际的参数更新。