元学习:学会快速学习 - Meta-Learning:Learning to Learn Fast博客搬运/翻译/笔记

原文地址:
https://lilianweng.github.io/lil-log/2018/11/30/meta-learning.html#memory-augmented-neural-networks
bilibili有一个不错综述视频(英语英文字幕):
元学习:从小样本学习到快速强化学习(ICML 2019 Tutorial)
https://www.bilibili.com/video/av58419357

元学习:学会快速学习

前言

元学习,也被称为“学习学习”,旨在通过一些训练实例来设计能够快速学习新技能或适应新环境的模型。常用的方法有三种:1)学习有效距离度量(基于度量);2)使用具有外部或内部内存(基于模型)的(循环)网络;3)显式优化模型参数,来快速学习(基于优化)。
一个好的机器学习模型通常需要训练大量的样本。相比之下,人类学习新概念和新技能的速度更快、效率更高。只看过几次猫和鸟的孩子很快就能把它们区分开来。知道如何骑自行车的人很有可能在几乎没有或甚至没有演示的情况下就发现了快速骑摩托车的方法。有没有可能设计一个具有类似性质的机器学习模型,通过几个训练实例快速学习新的概念和技能?这就是元学习的本质目的。
我们期望一个好的元学习模型能够很好地适应或概括在培训期间从未遇到的新任务和新环境。适应过程,本质上是一个小型的学习过程,发生在测试期间,但对新任务配置的接触有限。最终,经过调整的模型可以完成新的任务。这就是为什么元学习也被称为学习去如何学习。
任务可以是任何定义良好的机器学习问题家族:监督学习、强化学习等。例如,这里有几个具体的元学习任务:

  • 一个训练在非猫图像上的分类器可以在看到一些猫的图片后辨别出给定的图像是否包含一只猫。
  • 一个游戏机器人可以快速掌握一个新游戏。
  • 在测试过程中,一个微型机器人即使只在一个平坦的表面环境中训练,也能在一个上坡的表面完成所需的任务。

定义元学习问题

在这篇文章中,我们关注的是当每个预期的任务都是一个监督学习问题时的情况,比如图像分类。有很多关于元学习与强化学习问题(又称元强化学习)的有趣文献,但我们不会在这里讨论它们。

一个简单的视角

一个好的元学习模型应该在各种学习任务上进行训练,并对任务的分布(包括潜在的不可见任务)进行优化,以获得最佳性能。每个任务都与数据集 D \mathcal{D} D相关联,数据集 D \mathcal{D} D包含特征向量和真标签。最优模型参数为
θ ∗ = arg ⁡ min ⁡ θ E D ∼ p ( D ) [ L θ ( D ) ] \theta^{*}=\arg \min_{\theta} \mathbb{E}_{\mathcal{D} \sim p(\mathcal{D})}[\mathcal{L}_{\theta}(\mathcal{D})] θ=argθminEDp(D)[Lθ(D)]
它看起来很像一个常规的学习任务,但是一个数据被认为是一个数据样本。
小样本分类是元学习在监督学习领域的一个实例。数据集 D \mathcal{D} D通常分为两部分,一个用来学习的支持集 S S S和一个用来训练或测试的预测集 B B B D = < S , B > \mathcal{D}=<S,B> D=<S,B>。通常我们认为一个 K-shot N-class分类任务是这样的:支持集对有N个类,对于每个类,有K个样本。
元学习:学会快速学习 - Meta-Learning:Learning to Learn Fast博客搬运/翻译/笔记_第1张图片
图1: 一个 4-shot 2-class图片分类的例子。

训练和测试的方式相同

数据集 D \mathcal{D} D包含了特征向量,标签对, D = ( x i , y i ) \mathcal{D}={(x_i,y_i)} D=(xi,yi),每个标签都属于一个一个已知的标签集 L \mathcal{L} L。当给定一个特征向量x,拥有参数 θ \theta θ的分类器 f θ f_{\theta} fθ输出一个数据点属于y类的概率 P θ ( y ∣ x ) P_{\theta}(y|x) Pθ(yx)
最优化参数应该最大化正确标签的概率当多个批次 B ⊂ D B \subset \mathcal{D} BD训练时。
θ ∗ = arg ⁡ max ⁡ θ E ( x , y ) ∈ D [ P θ ( y ∣ x ) ] \theta^{*}=\arg \max _{\theta} \mathbb{E}_{(\mathbf{x}, y) \in \mathcal{D}}\left[P_{\theta}(y | \mathbf{x})\right] θ=argθmaxE(x,y)D[Pθ(yx)]
θ ∗ = arg ⁡ max ⁡ θ E B ⊂ D [ ∑ ( x , y ) ∈ B P θ ( y ∣ x ) ] ; t r a n e d w i t h m i n i − b a t c h e s . \theta^{*}=\arg \max _{\theta} \mathbb{E}_{B \subset \mathcal{D}}\left[\sum_{(\mathbf{x}, y) \in B} P_{\theta}(y | \mathbf{x})\right] \qquad;traned \quad with \quad mini-batches. θ=argθmaxEBD(x,y)BPθ(yx);tranedwithminibatches.
在小样本分类中,目标是在为快速学习(考虑微调如何工作)提供一个小支持集的情况下,减少未知标签数据样本的预测误差。为了使训练过程模拟推理过程中发生的情况,我们希望使用标签子集来伪造数据集,以避免将所有标签暴露给模型,并相应地修改优化过程,以鼓励快速学习:
1.从标签中采样一个子集, L ⊂ L L\subset \mathcal{L} LL
2.采样一个支持集 S L ⊂ D S^L \subset D SLD和一个训练batch B L ⊂ D B^L \subset \mathcal{D} BLD。他们包含的数据样本的标签都属于 L L L y ∈ L , ∀ ( x , y ) ∈ S L , B L y \in L, \forall(x, y) \in S^{L}, B^{L} yL,(x,y)SL,BL
3.支持集是模型输入的一部分。
4.最后的优化使用小批量 B L B^L BL计算损失,并通过反向传播更新模型参数,与我们在监督学习中使用的方法相同。
您可以将每对抽样数据集 ( S L , B L ) (S^L,B^L) (SL,BL)视为一个数据点。该模型经过训练,可以推广到其他数据集。在监督学习目标的基础上,添加红色符号进行元学习:
在这里插入图片描述
这个想法在某种程度上类似于在只有有限的一组特定于任务的数据样本可用时,在图像分类(ImageNet)或语言建模(big text corpora)中使用预先训练的模型。元学习将这一思想向前推进了一步,它不是根据一个低成本任务进行微调,而是对模型进行优化,使其能够胜任许多任务,如果不是全部的话。

学习器和元学习器

另一种流行的元学习观点将模型更新分解为两个阶段

  • 分类器 f θ f_{\theta} fθ是一个学习者模型,训练他来操作一个给定任务。
  • 同时,优化器 g ϕ g_{\phi} gϕ学习如何通过支持集 S S S来更新学习者模型参数。 θ ′ = g ϕ ( θ , S ) \theta^{'}=g_{\phi}(\theta,S) θ=gϕ(θ,S)
    在最后的优化步骤中,我需要去同时更新 θ \theta θ ϕ \phi ϕ来最大化:
    E L ⊂ C [ E S L ⊂ D , B L ⊂ D [ ∑ ( x , y ) ∈ B L P g ϕ ( θ , S L ) ( y ∣ x ) ] ] \mathbb{E}_{L \subset \mathcal{C}}\left[\mathbb{E}_{S^{L} \subset \mathcal{D}, B^{L} \subset \mathcal{D}}\left[\sum_{(\mathbf{x}, y) \in B^{L}} P_{g_{\phi}\left(\theta, S^{L}\right)}(y | \mathbf{x})\right]\right] ELC[ESLD,BLD[(x,y)BLPgϕ(θ,SL)(yx)]]

常见方法

元学习有三种常见的方法:基于度量的、基于模型的和基于优化的。Oriol Vinyals在NIPS 2018元学习研讨会上做了一个很好的总结:
元学习:学会快速学习 - Meta-Learning:Learning to Learn Fast博客搬运/翻译/笔记_第2张图片
接下来我们将回顾每种方法中的经典模型。

基于度量的

基于度量的元学习类似于近邻算法(例如KNN,K-means)和

你可能感兴趣的:(论文阅读)