深度学习⑧Meta-Learning Introduction

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个样本。

MAMLModel-Agnostic Meta-Learning

MAML 的算法可以分为以下几个步骤:

  1. 初始化:随机初始化模型参数 θ。
  2. 任务采样:从任务分布 p(T) 中采样一批任务Ti​。
  3. 内层优化:对于每个任务 Ti,计算梯度 ∇并使用梯度更新参数,得到适应后的参数 θi′
  4. 外层优化:在所有任务上,通过新参数 θi′\theta_i'θi′​ 计算任务的损失,并更新初始参数 θ
  5. 循环:重复上述过程,直到达到最优初始参数。

内层循环(虚线):在特定任务上使用少量示例进行标准梯度下降。通过少量训练样本更新参数,模型在此过程中适应当前任务

外层循环(实线):优化模型的初始参数Θ,使其能够在内层循环后快速适应新任务。

类比于通过学习各种计算机科学技术(如编程语言、数据结构、算法等)来提升你的编程技能。你希望通过这种学习,能够迅速适应并处理不同的实际问题,例如开发不同类型的游戏、应用程序等

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/417324.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8. GIS数据分析师岗位职责、技术要求和常见面试题

本系列文章目录: 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…

软件测试学习笔记丨Pytest+Allure测试计算器

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/31954 项目要求 3.1 项目简介 计算器是近代人发明的可以进行数字运算的机器。 计算器通过对加法、减法、乘法、除法等功能的运算,将正确的结果展示在屏幕上。 可帮助人们更方便的…

【GD32】---- 使用GD32调试串口并实现printf打印输出

1 复制工程模板 直接复制工程模板里的系统文件和固件库文件到新的工程文件01_USART_Printf 2 新建keil工程 参考上一篇博文:【GD32】---- 移植工程模板及点灯测试 3 编写代码 3.1 创建USART文件 创建一个USART.c文件,放于05_UserDriver文件夹中 …

Rust 赋能前端:PDF 分页/关键词标注/转图片/抽取文本/抽取图片/翻转...

❝ 我从不幻想成功。我只会为了成功努力实践 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder ❝ 此篇文章所涉及到的技术有 WebAssembly Mupdf Pdf操作( 分页展示/文本抽离/文本标注/获取超链接/Pdf转图片/翻转/截取) 因为,行文…

新型PyPI攻击技术可能导致超2.2万软件包被劫持

一种针对 Python 软件包索引(PyPI)注册表的新型供应链攻击技术已在野外被利用,并且目前正试图渗透到下游组织中。 软件供应链安全公司 JFrog 将其代号定为Revival Hijack,并称这种攻击方法可用于劫持 2.2万个现有 PyPI 软件包&am…

6、LVGL控件-线条、图片、按钮矩阵

本篇文章目录导航 ♠♠ LVGL控件-线条、图片、按钮矩阵 ♣♣♣♣ 一、LVGL 线条部件 ♦♦♦♦♦♦♦♦ 1.1 线条部件组成部分 ♦♦♦♦♦♦♦♦ 1.2 线条部件基本API ♦♦♦♦♦♦♦♦ 1.3 实验小演示 ♣♣♣♣ 二、LVGL 图片部件 ♦♦♦♦♦♦♦♦ 2.1 图片部件组成部分 ♦♦…

前端框架有哪些?

前言 用户体验是每个开发网站的企业中的重中之重。无论后台有多方面的操作和功能,用户的视图和体验都必须是无缝的最友好的。这需要使用前端框架来简化交互式、以用户为中心的网站的开发。 前端框架是一种用于简化Web开发的工具,它提供了一套预定义的代…

基于蜣螂优化最小二乘支持向量机的数据分类预测Matlab程序DBO-LSSVM 多特征输入多类别输出 含基础程序

基于蜣螂优化最小二乘支持向量机的数据分类预测Matlab程序DBO-LSSVM 多特征输入多类别输出 含基础程序 文章目录 一、基本原理DBO(Dung Beetle Optimization)算法原理LSSVM(Least Squares Support Vector Machine)模型原理DBO-LSS…

C语言 | Leetcode C语言题解之第388题文件的最长绝对路径

题目: 题解: #define MAX(a, b) ((a) > (b) ? (a) : (b))int lengthLongestPath(char * input){int n strlen(input);int pos 0;int ans 0;int * level (int *)malloc(sizeof(int) * (n 1));memset(level, 0, sizeof(int) * (n 1));while (po…

iOS——Block与内存管理

需要内存管理的情况 1、对象类型的auto变量。 2、引用了 __block 修饰符的变量。 三种block类型 全局类型 (NSGlobalBlock) 如果一个block里面没有访问普通局部变量(也就是说block里面没有访问任何外部变量或者访问的是静态局部变量或者访问的是全局…

SpringBoot+Vue实现大文件上传(断点续传-后端控制(一))

SpringBootVue实现大文件上传(断点续传) 1 环境 SpringBoot 3.2.1,Vue 2,ElementUI,spark-md5 2 问题 在前一篇文章,我们写了通过在前端控制的断点续传,但是有两个问题,第一个问题&…

AUTOSAR Adaptive与智能汽车E/E架构发展趋势

AUTOSAR Adaptive是一个面向现代汽车应用需求的标准,特别适用于那些需要高计算能力和灵活性的应用。以下是AUTOSAR Adaptive的典型特性: 高计算能力:AUTOSAR Adaptive支持使用MPU(微处理器),这些处理器的性…

嵌入式开发学习路线(25届校招学习) 嵌入式学习路线七年规划:从大一小白到校招大佬 (学习路线汇总)

嵌入式开发学习路线(25届校招可以参考) 嵌入式系统作为当前最热门且最有发展前途的IT应用领域之一,吸引了大量有志于从事该行业的学习者。为了系统地掌握嵌入式开发技能,以下是一条详细的学习路线,旨在帮助初学者逐步…

CodeSys中动态切换3D模型

文章目录 需求研究结果 需求 在前面的【CodeSys开发3d机械臂显示控件】中,我们已经实现了一个可以显示3d模型的控件。但是这个控件是和使用的3d模型绑定死的,在安装这个控件时就已经将模型文件于控件一起安装到codesys中。 假如我想在不同的工程中&…

智能家居系统(基于STM32F103C8T6标准库+FreeRTOS+Qt串口开发实现)

视频演示:基于STM32F103C8T6标准库FreeRTOSQt串口开发实现的智能家居项目_哔哩哔哩_bilibili 基于STM32F103C8T6标准库FreeRTOSQt串口开发实现的智能家居项目: https://pan.baidu.com/s/1f41gAfOOnlcQoKoMx3o84A?pwd6j2g 提取码: 6j2g 注:本项目为学习完…

Meta关闭Spark AR平台:未来规划与影响分析

Meta宣布将关闭其移动AR创作平台Spark AR,这一消息在业界引起了广泛关注。尽管Snap和TikTok在AR滤镜领域取得了巨大成功,但Meta却选择了另一条发展道路。本文将探讨这一决策背后的可能原因及其对未来的影响。 关闭Spark AR平台的背后 硬件为主&#xff…

计算机网络(三) —— 简单Udp网络程序

目录 一,初始化服务器 1.0 辅助文件 1.1 socket函数 1.2 填充sockaddr结构体 1.3 bind绑定函数 1.4 字符串IP和整数IP的转换 二,运行服务器 2.1 接收 2.2 处理 2.3 返回 三,客户端实现 3.1 UdpClient.cc 实现 3.2 Main.cc 实现 …

【Mysql】系统服务启动访问报错问题处理:this is incompatible with sql_mode=only_full_group_by

一、背景: 本来已经正常运行的平台,突然有一天由于对服务器进行部分操作迁移,发现jar可以正常启动,但是访问功能一直报错,监控后台日志后,发现了问题: 报错的具体信息如下: Caused…

Linux编译器--gcc/g++使用

目录 一、预编译指令 1.1预处理功能 1.2指令 1.3问题扩展 二、编译(生成汇编) 三、汇编(生成二进制机器语言) 四、链接(生成可执行文件或库文件) 4.1库文件 4.2目标文件和库的链接 4.3动态库和静态…

【Django-Minio-Storage 使用教程】

Django-Minio-Storage 使用教程 安装 Django-Minio-Storage配置 Django 项目官方文档 安装 Django-Minio-Storage 使用 pip 安装 Django-Minio-Storage pip install django-minio-storage配置 Django 项目 在 Django 项目的 settings.py 文件中进行以下配置 INSTALLED_APPS…