Motivation
人类学习:
- 当我们学习新任务时,通常会应用从相关任务中学到的知识。
- 我们通常可以从少量示例中学习,并能够快速适应新任务。
- 我们可以随时刷新或更新自己的知识。
机器学习:
- 学习仅从少量示例中获得知识(少样本学习,few-shot learning),甚至在没有示例的情况下学习(零样本学习,zero-shot learning)。
- 快速适应新任务。
- 任务分布学习:通过学习多个任务的分布,使模型能够在更广泛的任务上进行泛化。
- 解释:
- 元学习试图模仿人类学习中的优势,比如通过少量数据快速学习和适应新任务。
Context元监督学习的背景:
元学习通常被理解为“学习如何学习”,它是通过多次学习来改进学习算法的过程。the process of improving a learning algorithm over multiple learning episodes.
现在的主要目标是让模型以最少的数据快速适应新任务,通常只需要少量的示例。
元学习不是自动化机器学习(AutoML),元学习专注于改进学习行为,而AutoML专注于为特定任务选择最佳模型。
Types of Meta-Learning:
•Supervised
•Unsupervised
•Reinforcement
元监督学习的学习阶段:
1.元训练阶段(Meta-train phase):
元学习者在任务分布上进行训练,每个任务代表不同的学习问题。
2.元测试阶段(Meta-test phase):
测试元学习者在从未见过的新任务上的泛化能力和适应能力。
元监督学习的几种视角:
任务分布视角(Task-Distribution View):
学习一个通用的学习算法,该算法可以在多个任务上泛化,并能够逐渐改善每个新任务的学习表现。
双层优化视角(Bi-Level Optimization View):
元学习问题可以看作一个层次优化问题hierarchical optimization problem,外层优化元学习者,内层优化当前任务的学习者。
前馈模型视角(Feed-Forward Model View):
将元学习看作训练一个模型直接输出特定任务模型或预测结果的过程。
Task-Distribution View
从任务分布的角度解释学习如何学习的定义:
元学习的目标是找到能够在任务分布P(T)上表现最好的元知识(meta-knowledge)𝜔。
𝑚𝑖𝑛𝜔𝔼𝒯~𝑝 𝒯 ℒ(𝐷, 𝜔)
损失函数ℒ 即task-specific loss考虑的是在训练集D train上使用 how-to learn的元学习 后的参数
解决这个问题的步骤:
从多个“源任务”(source tasks)和“目标任务”(target tasks)中进行采样。
通过元训练和元测试来完成对任务的学习。
找到元知识ω*,最小化多个元任务损失,并在元测试过程中,使用目标任务测试模型,优化特定任务参数θ
Bi-Level Optimization and Feed-Forward Views
双层优化:
将元训练形式化为一个双层优化问题:
外层目标:优化元学习器。
内层目标:优化当前任务的学习器。
前馈:
通过优化任务分布来训练模型,使其能够处理新的任务。
元学习中的不同方法:
Meta-Optimizer(元优化器)
哪个优化器适合外层(元学习)?
元优化器是用于在元层级(outer/meta level)进行优化的工具。在元学习中,选择合适的优化器对元知识的学习至关重要。常见的元优化器有:
Gradient(梯度):基于梯度下降法进行参数更新,这是最常见的优化方法之一。
Reinforcement Learning(强化学习):通过奖励机制来优化学习过程,尤其适用于动态任务和探索问题。
Evolution(进化):基于进化算法,通过选择、交叉和突变的方式优化参数,适用于大规模搜索空间。
Meta-Representation(元表示)
需要学习什么样的元知识?
元表示指的是元学习需要学习和优化的具体内容。在元学习中,可以学习的元知识包括多个层次,常见的元表示有:
Parameter Initialization(参数初始化):优化初始参数,使得模型在新任务上能够更快地收敛。
Instance Weights(样本权重):优化每个样本的权重,以确保模型更好地处理不平衡或噪声数据。
Optimizer(优化器):元学习可以学习优化器本身的参数或设计自适应优化器。
Black-Box Model/Embeddings(黑箱模型/嵌入):直接优化模型嵌入表示或使用黑箱方法进行元学习。
Architecture(模型架构):优化或搜索神经网络架构。
Hyperparameters(超参数):通过元学习调整超参数,如学习率、正则化系数等。
Modules/Attention(模块/注意力):学习不同任务中使用的模块化结构或注意力机制。
Exploration Policy(探索策略):用于强化学习中,学习如何在探索和利用之间做出最佳权衡。
Meta-Objective(元目标)
元学习的目标是什么?
元目标定义了元学习的总体目标,即希望通过元学习实现什么样的性能和效果。元学习中的常见目标有:
Many/Few-Shot(多样本/少样本学习):提高模型在不同样本数量下的表现,尤其是少样本学习。
Multi/Single-Task(多任务/单任务学习):优化模型在多个任务上同时学习的能力或在单任务上的表现。
Online/Offline(在线/离线学习):根据数据的获取方式,优化在线学习或离线学习的性能。
Net/Asymptotic Performance(网络/渐近性能):关注模型的总体表现或其在无限数据条件下的渐近性能。
Example Methods – Prototypical Networks
原型网络(Prototypical Networks):
对少样本分类问题,通过嵌入函数将每个类的样本映射到一个原型向量。
通过计算查询点与原型的距离,进行分类。
而简单来说。Prototype就是某个类别中的所有样本的平均表示,在原型网络中,原型是通过将该类别的所有样本映射到一个嵌入空间,然后取它们的均值来得到的
原型网络的核心思想
类别分布的计算
损失函数
实验结果:
5-way、20-way 表示分类任务中类别的数量。
Cosine、Euclidean 表示采用的距离度量方法,分别为余弦距离和欧氏距离。
5-shot 表示每个类别提供5个样本。
MAML(Model-Agnostic Meta-Learning)
MAML 的算法可以分为以下几个步骤:
- 初始化:随机初始化模型参数 θ。
- 任务采样:从任务分布 p(T) 中采样一批任务Ti。
- 内层优化:对于每个任务 Ti,计算梯度 ∇并使用梯度更新参数,得到适应后的参数 θi′
- 外层优化:在所有任务上,通过新参数 θi′\theta_i'θi′ 计算任务的损失,并更新初始参数 θ
- 循环:重复上述过程,直到达到最优初始参数。
内层循环(虚线):在特定任务上使用少量示例进行标准梯度下降。通过少量训练样本更新参数,模型在此过程中适应当前任务
外层循环(实线):优化模型的初始参数Θ,使其能够在内层循环后快速适应新任务。
类比于通过学习各种计算机科学技术(如编程语言、数据结构、算法等)来提升你的编程技能。你希望通过这种学习,能够迅速适应并处理不同的实际问题,例如开发不同类型的游戏、应用程序等
Applications to Continual Learning
在持续学习中,模型会不断接收到新的任务或数据,而不希望在学习新任务的过程中遗忘旧任务。通过将元学习的思想应用到持续学习中,模型可以在新任务中通过少量的权重更新快速适应,并以此避免灾难性遗忘。
- 支持集:当前数据批次的支持集 𝐷supp(𝑛)被输入到分类器模型中,生成得分和重要性。
- 任务表示:任务编码器生成当前任务的向量表示,这些表示被用于元优化器来预测如何更新权重。
框架的关键在于:使用分类器模型生成的重要性得分作为元优化器的输入,元优化器基于这些得分和任务特定的向量表示来预测模型的权重更新。
(A) Pre-trained Task Encoder(预训练任务编码器):预训练的任务编码器 gA 学习表示当前任务的向量表示。这意味着每一个新任务都可以被转换为一个向量,帮助模型更好地理解当前的任务特征。
(B) Feature Extractor(特征提取器):特征提取器 gB 接受输入的任务表示和权重,提取出任务的特征,并将这些特征映射到特征空间中。
(C) Transformer(转化器):转化器 gC 预测模型的权重更新 Δw,根据从任务特征提取器获得的特征,生成新的权重参数。
假设你是一个厨师,每次你学到一个新的菜谱(比如说学习如何做炒菜),这个菜谱会给你一些关于这道菜的重要提示(比如火候要怎么控制、材料怎么搭配)。这些提示就是模型从支持集得到的“分数”。
接着,你会想:“我之前已经学会了做汤,现在我需要稍微调整一下自己的技巧来做别的汤。” 于是你的大脑(这里相当于元优化器)会根据之前做汤的经验,给自己一些建议(比如,调料的比例,控制好火候),让你能够在最短的时间内学会做别的汤。
这里的元优化器就像你的大脑一样,告诉模型如何在不忘记旧任务的情况下,快速适应新任务。
What about Human Learning?
人类展示了系统的组合性,可以通过已知组件来理解和生成新的组合。
问题:神经网络能否通过元学习实现类似人类的系统性组合能力?
1.核心思想
系统化组合能力(Systematic Compositionality) 是指人类能够通过已知的组件(如语言单词、动作等),理解并产生新的组合。比如我们学会了“跳”和“前进”后,能够理解“跳前进”这个组合。这个能力在人类学习中非常常见,并且在语言学习、动作学习等方面起到了关键作用。
研究的关键问题是:神经网络能否通过元学习实现类似人类的系统化组合能力? 换句话说,当神经网络被优化以实现这种组合能力时,它是否能像人类一样对新组合做出正确的反应?
2. 实验过程与设计
图中展示了一个实验示例,研究通过模拟人类任务,测试神经网络的组合能力:
训练示例:网络会学习一些指令,如“跳两次”、“向后跳”等,输入是指令,输出是相应的动作表现。训练通过多个组合任务进行,使神经网络逐渐学习如何通过组合现有的组件(如跳跃和方向)来处理新任务。
测试任务:在测试阶段,网络会接收到一个全新的组合任务,如“绕着圆锥跳向前”。虽然网络没有见过这个具体的任务,但它需要通过将已知的组件组合在一起,完成这个新的任务。
3. 人类学习与神经网络的对比
人类表现:人类能够很轻松地理解这些组合,并根据已知的指令做出新的组合行为。这种能力是通过少量的任务和组合推理实现的。
神经网络表现:通过元学习,神经网络逐渐学习如何组合已有组件,并对新指令做出相应的预测。研究表明,通过优化神经网络的组合能力,可以让网络在面对全新组合时表现出类似人类的学习能力。
4. 图示解释
图1展示了神经网络如何通过训练集的任务,逐渐学习如何组合已知动作并处理新的任务。在每个训练回合中,网络通过输入指令得到行为输出,并在测试时通过组合产生新的行为。
扩展数据图展示了系统化组合任务中的一些指令和组合规则,说明了如何通过已知组件生成新任务的指令,以及神经网络是如何通过这些指令完成任务的。
图2展示了少样本指令学习任务,要求神经网络通过少量示例,生成抽象的输出序列。
该专栏内容图片源于COMPSCI764